|
2 | 2 |
|
3 | 3 | const validator = require("../src/validator"); |
4 | 4 |
|
| 5 | +function validate(xmlData, error, line = 1) { |
| 6 | + const result = validator.validate(xmlData); |
| 7 | + if (error) { |
| 8 | + const expected = { |
| 9 | + code: Object.keys(error)[0], |
| 10 | + msg: Object.values(error)[0], |
| 11 | + line |
| 12 | + }; |
| 13 | + expect(result.err).toEqual(expected); |
| 14 | + } else { |
| 15 | + expect(result).toBe(true); |
| 16 | + } |
| 17 | +} |
| 18 | + |
5 | 19 | describe("XMLParser", function () { |
6 | 20 | it("should validate simple xml string", function () { |
7 | 21 | let xmlData = "<rootNode></rootNode>"; |
@@ -511,6 +525,23 @@ attribute2="attribute2" |
511 | 525 | var result = validator.validate(xmlData).err; |
512 | 526 | expect(result).toEqual(expected); |
513 | 527 | }); |
| 528 | + |
| 529 | + it('should validate value with ampersand', function () { |
| 530 | + const error = { |
| 531 | + InvalidChar: "char '&' is not expected." |
| 532 | + }; |
| 533 | + validate('<rootNode>jekyll & hyde</rootNode>'); |
| 534 | + validate('<rootNode>jekyll { hyde</rootNode>'); |
| 535 | + validate('<rootNode>jekyll � hyde</rootNode>'); |
| 536 | + validate('<rootNode>jekyll h; hyde</rootNode>', error); |
| 537 | + validate('<rootNode>jekyll a; hyde</rootNode>', error); |
| 538 | + validate('<rootNode>jekyll { hyde</rootNode>', error); |
| 539 | + validate('<rootNode>jekyll abcd hyde</rootNode>', error); |
| 540 | + validate('<rootNode>jekyll & hyde</rootNode>', error); |
| 541 | + validate('<rootNode>jekyll &aa</rootNode>', error); |
| 542 | + validate('<rootNode>jekyll &abcdefghij1234567890;</rootNode>'); |
| 543 | + validate('<rootNode>jekyll &abcdefghij1234567890a;</rootNode>', error); // limit to 20 chars |
| 544 | + }); |
514 | 545 | }); |
515 | 546 |
|
516 | 547 | describe("should not validate XML documents with multiple root nodes", () => { |
|
0 commit comments