@distilled.cloud/core 1.0.0-rc.12 → 1.0.0-rc.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api.d.ts +4 -4
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +1 -1
- package/lib/api.js.map +1 -1
- package/lib/category.js +1 -1
- package/lib/category.js.map +1 -1
- package/lib/codegen/boolean-string-enums.d.ts +8 -8
- package/lib/codegen/boolean-string-enums.d.ts.map +1 -1
- package/lib/codegen/boolean-string-enums.js +84 -27
- package/lib/codegen/boolean-string-enums.js.map +1 -1
- package/lib/codegen/boolean-string-enums.test.js +130 -0
- package/lib/codegen/boolean-string-enums.test.js.map +1 -1
- package/lib/codegen/cli.js +2 -2
- package/lib/codegen/cli.js.map +1 -1
- package/lib/codegen/generator.d.ts +20 -3
- package/lib/codegen/generator.d.ts.map +1 -1
- package/lib/codegen/generator.js +36 -9
- package/lib/codegen/generator.js.map +1 -1
- package/lib/codegen/generator.test.d.ts +2 -0
- package/lib/codegen/generator.test.d.ts.map +1 -0
- package/lib/codegen/generator.test.js +126 -0
- package/lib/codegen/generator.test.js.map +1 -0
- package/lib/codegen/graphql-client.d.ts +7 -1
- package/lib/codegen/graphql-client.d.ts.map +1 -1
- package/lib/codegen/graphql-client.js +262 -125
- package/lib/codegen/graphql-client.js.map +1 -1
- package/lib/codegen/graphql-client.test.js +104 -236
- package/lib/codegen/graphql-client.test.js.map +1 -1
- package/lib/codegen/openapi-binary.test.d.ts +2 -0
- package/lib/codegen/openapi-binary.test.d.ts.map +1 -0
- package/lib/codegen/openapi-binary.test.js +67 -0
- package/lib/codegen/openapi-binary.test.js.map +1 -0
- package/lib/codegen/openapi.d.ts +7 -1
- package/lib/codegen/openapi.d.ts.map +1 -1
- package/lib/codegen/openapi.js +15 -4
- package/lib/codegen/openapi.js.map +1 -1
- package/lib/codegen/patches.d.ts +16 -1
- package/lib/codegen/patches.d.ts.map +1 -1
- package/lib/codegen/patches.js +70 -4
- package/lib/codegen/patches.js.map +1 -1
- package/lib/codegen/patches.test.js +48 -2
- package/lib/codegen/patches.test.js.map +1 -1
- package/lib/codegen/untagged-unions.test.d.ts +2 -0
- package/lib/codegen/untagged-unions.test.d.ts.map +1 -0
- package/lib/codegen/untagged-unions.test.js +80 -0
- package/lib/codegen/untagged-unions.test.js.map +1 -0
- package/lib/errors.d.ts +2 -1
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +5 -2
- package/lib/errors.js.map +1 -1
- package/lib/fixtures/xml/upstream-validator.json +397 -0
- package/lib/graphql.d.ts +296 -205
- package/lib/graphql.d.ts.map +1 -1
- package/lib/graphql.js +968 -631
- package/lib/graphql.js.map +1 -1
- package/lib/graphql.test.js +134 -763
- package/lib/graphql.test.js.map +1 -1
- package/lib/graphql.types.d.ts +10 -0
- package/lib/graphql.types.d.ts.map +1 -1
- package/lib/graphql.types.js +4 -44
- package/lib/graphql.types.js.map +1 -1
- package/lib/index.d.ts +27 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +27 -0
- package/lib/index.js.map +1 -0
- package/lib/pagination.d.ts +2 -1
- package/lib/pagination.d.ts.map +1 -1
- package/lib/pagination.js +24 -16
- package/lib/pagination.js.map +1 -1
- package/lib/pagination.test.d.ts +2 -0
- package/lib/pagination.test.d.ts.map +1 -0
- package/lib/pagination.test.js +134 -0
- package/lib/pagination.test.js.map +1 -0
- package/lib/protocol-http.d.ts +12 -17
- package/lib/protocol-http.d.ts.map +1 -1
- package/lib/protocol-http.js +100 -45
- package/lib/protocol-http.js.map +1 -1
- package/lib/protocol-http.test.js +130 -0
- package/lib/protocol-http.test.js.map +1 -1
- package/lib/protocol-rest.d.ts +18 -1
- package/lib/protocol-rest.d.ts.map +1 -1
- package/lib/protocol-rest.js +24 -4
- package/lib/protocol-rest.js.map +1 -1
- package/lib/query.d.ts +29 -0
- package/lib/query.d.ts.map +1 -0
- package/lib/query.js +27 -0
- package/lib/query.js.map +1 -0
- package/lib/response-validation.d.ts +67 -0
- package/lib/response-validation.d.ts.map +1 -0
- package/lib/response-validation.js +76 -0
- package/lib/response-validation.js.map +1 -0
- package/lib/response-validation.test.d.ts +2 -0
- package/lib/response-validation.test.d.ts.map +1 -0
- package/lib/response-validation.test.js +67 -0
- package/lib/response-validation.test.js.map +1 -0
- package/lib/testing.d.ts +39 -0
- package/lib/testing.d.ts.map +1 -0
- package/lib/testing.js +41 -0
- package/lib/testing.js.map +1 -0
- package/lib/trait.d.ts +29 -9
- package/lib/trait.d.ts.map +1 -1
- package/lib/trait.js +8 -0
- package/lib/trait.js.map +1 -1
- package/lib/xml.d.ts +44 -0
- package/lib/xml.d.ts.map +1 -0
- package/lib/xml.js +315 -0
- package/lib/xml.js.map +1 -0
- package/lib/xml.test.d.ts +2 -0
- package/lib/xml.test.d.ts.map +1 -0
- package/lib/xml.test.js +211 -0
- package/lib/xml.test.js.map +1 -0
- package/package.json +4 -4
- package/src/api.ts +4 -4
- package/src/category.ts +1 -1
- package/src/codegen/boolean-string-enums.test.ts +147 -0
- package/src/codegen/boolean-string-enums.ts +84 -27
- package/src/codegen/cli.ts +2 -2
- package/src/codegen/generator.test.ts +151 -0
- package/src/codegen/generator.ts +70 -12
- package/src/codegen/graphql-client.test.ts +116 -283
- package/src/codegen/graphql-client.ts +326 -169
- package/src/codegen/openapi-binary.test.ts +98 -0
- package/src/codegen/openapi.ts +26 -4
- package/src/codegen/patches.test.ts +66 -1
- package/src/codegen/patches.ts +84 -4
- package/src/codegen/untagged-unions.test.ts +89 -0
- package/src/errors.ts +5 -2
- package/src/fixtures/xml/upstream-validator.json +397 -0
- package/src/graphql.test.ts +174 -948
- package/src/graphql.ts +1592 -1167
- package/src/graphql.types.ts +92 -163
- package/src/index.ts +26 -0
- package/src/pagination.test.ts +191 -0
- package/src/pagination.ts +35 -25
- package/src/protocol-http.test.ts +163 -0
- package/src/protocol-http.ts +122 -46
- package/src/protocol-rest.ts +62 -13
- package/src/query.ts +39 -0
- package/src/response-validation.test.ts +95 -0
- package/src/response-validation.ts +116 -0
- package/src/testing.ts +78 -0
- package/src/trait.ts +39 -8
- package/src/xml.test.ts +269 -0
- package/src/xml.ts +339 -0
- package/lib/graphql.fixture.d.ts +0 -249
- package/lib/graphql.fixture.d.ts.map +0 -1
- package/lib/graphql.fixture.js +0 -240
- package/lib/graphql.fixture.js.map +0 -1
- package/src/graphql.fixture.ts +0 -371
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { generateService } from "./generator.js";
|
|
3
|
+
const model = {
|
|
4
|
+
smithy: "2.0",
|
|
5
|
+
shapes: {
|
|
6
|
+
"com.example#Service": {
|
|
7
|
+
type: "service",
|
|
8
|
+
version: "1",
|
|
9
|
+
operations: [{ target: "com.example#GetValue" }],
|
|
10
|
+
},
|
|
11
|
+
"com.example#GetValue": {
|
|
12
|
+
type: "operation",
|
|
13
|
+
input: { target: "com.example#Input" },
|
|
14
|
+
output: { target: "com.example#Output" },
|
|
15
|
+
traits: {
|
|
16
|
+
"smithy.api#http": { method: "GET", uri: "/value", code: 200 },
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
"com.example#Input": { type: "structure", members: {} },
|
|
20
|
+
"com.example#Output": {
|
|
21
|
+
type: "structure",
|
|
22
|
+
members: { value: { target: "com.example#Choice" } },
|
|
23
|
+
},
|
|
24
|
+
"com.example#Choice": {
|
|
25
|
+
type: "union",
|
|
26
|
+
members: {
|
|
27
|
+
boolean: { target: "smithy.api#Boolean" },
|
|
28
|
+
paths: { target: "com.example#Paths" },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
"com.example#Paths": {
|
|
32
|
+
type: "list",
|
|
33
|
+
member: { target: "smithy.api#String" },
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
const operationDecl = {
|
|
38
|
+
contextType: "ExampleOpContext",
|
|
39
|
+
commonErrorType: "ExampleOpError",
|
|
40
|
+
commonErrorClasses: [],
|
|
41
|
+
protocol: "ExampleProtocol",
|
|
42
|
+
};
|
|
43
|
+
test("untagged unions validate primitive and collection alternatives", () => {
|
|
44
|
+
const { code } = generateService(model, {
|
|
45
|
+
unionStyle: "untagged",
|
|
46
|
+
operationDecl,
|
|
47
|
+
});
|
|
48
|
+
expect(code).toContain("export type Choice = boolean | Paths;");
|
|
49
|
+
expect(code).toContain("S.Union([S.Boolean, Paths])");
|
|
50
|
+
expect(code).not.toContain("S.Unknown as any as S.Schema<Choice>");
|
|
51
|
+
});
|
|
52
|
+
test("untagged unions honor the configured schema type", () => {
|
|
53
|
+
for (const schemaType of ["Schema", "Codec"]) {
|
|
54
|
+
const { code } = generateService(model, {
|
|
55
|
+
unionStyle: "untagged",
|
|
56
|
+
schemaType,
|
|
57
|
+
operationDecl,
|
|
58
|
+
});
|
|
59
|
+
expect(code).toContain(`S.Union([S.Boolean, Paths]) as any as S.${schemaType}<Choice>`);
|
|
60
|
+
expect(code).toContain(`S.Array(S.String) as any as S.${schemaType}<Paths>`);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
test("omitting a retry policy emits neither a retry import nor an operation setting", () => {
|
|
64
|
+
const { code } = generateService(model, {
|
|
65
|
+
unionStyle: "untagged",
|
|
66
|
+
operationDecl,
|
|
67
|
+
});
|
|
68
|
+
expect(code).not.toContain("../retry.ts");
|
|
69
|
+
expect(code).not.toContain("retry:");
|
|
70
|
+
expect(code).not.toContain('import { } from "../errors.ts"');
|
|
71
|
+
});
|
|
72
|
+
test("an explicit retry policy retains the existing import and operation setting", () => {
|
|
73
|
+
const { code } = generateService(model, {
|
|
74
|
+
unionStyle: "untagged",
|
|
75
|
+
operationDecl: { ...operationDecl, retry: "Retry.Retry" },
|
|
76
|
+
});
|
|
77
|
+
expect(code).toContain('import * as Retry from "../retry.ts"');
|
|
78
|
+
expect(code).toContain("retry: Retry.Retry");
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=untagged-unions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"untagged-unions.test.js","sourceRoot":"","sources":["../../src/codegen/untagged-unions.test.ts"],"names":[],"mappings":"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"}
|
package/lib/errors.d.ts
CHANGED
|
@@ -182,7 +182,7 @@ declare const GatewayTimeout_base: Schema.Class<GatewayTimeout, Schema.TaggedStr
|
|
|
182
182
|
"@distilled.cloud/error/retryable": Category.RetryableInfo;
|
|
183
183
|
});
|
|
184
184
|
/**
|
|
185
|
-
* GatewayTimeout -
|
|
185
|
+
* GatewayTimeout - HTTP request or gateway timeout (408, 504).
|
|
186
186
|
*/
|
|
187
187
|
export declare class GatewayTimeout extends GatewayTimeout_base {
|
|
188
188
|
}
|
|
@@ -206,6 +206,7 @@ export declare const HTTP_STATUS_MAP: {
|
|
|
206
206
|
readonly 401: typeof Unauthorized;
|
|
207
207
|
readonly 403: typeof Forbidden;
|
|
208
208
|
readonly 404: typeof NotFound;
|
|
209
|
+
readonly 408: typeof GatewayTimeout;
|
|
209
210
|
readonly 409: typeof Conflict;
|
|
210
211
|
readonly 422: typeof UnprocessableEntity;
|
|
211
212
|
readonly 423: typeof Locked;
|
package/lib/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAM1C;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,sDAE1B,CAAC;;;;;;;;AAMF;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAGJ;CAAG;;;;;;;;AAEjC;;GAEG;AACH,qBAAa,SAAU,SAAQ,cAEA;CAAG;;;;;;;;AAElC;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAEK;CAAG;;;;;;;;AAEtC;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAEK;CAAG;;;;;;;;AAExC;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAEK;CAAG;;;;;;;;AAEtC;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAGL;CAAG;;;;;;;;;;;AAEvC;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBASpC;CAAG;;;;;;;;;;;AAEJ;;GAEG;AACH,qBAAa,MAAO,SAAQ,WAG+B;CAAG;;;;;;;;;;;;AAE9D;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,wBAOiB;CAAG;;;;;;;;;;;AAE7D;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAG2B;CAAG;;;;;;;;;;;AAE9D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,uBAMkB;CAAG;;;;;;;;;;;AAE7D;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAMsB;CAAG;;;;;;;;AAE7D;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAGM;CAAG;AAM1C;;GAEG;AACH,eAAO,MAAM,eAAe;aAC1B,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;CACK,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sBAAsB,aAA0C,CAAC;AAE9E;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAM1C;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,sDAE1B,CAAC;;;;;;;;AAMF;;GAEG;AACH,qBAAa,YAAa,SAAQ,iBAGJ;CAAG;;;;;;;;AAEjC;;GAEG;AACH,qBAAa,SAAU,SAAQ,cAEA;CAAG;;;;;;;;AAElC;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAEK;CAAG;;;;;;;;AAEtC;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAEK;CAAG;;;;;;;;AAExC;;GAEG;AACH,qBAAa,QAAS,SAAQ,aAEK;CAAG;;;;;;;;AAEtC;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAGL;CAAG;;;;;;;;;;;AAEvC;;GAEG;AACH,qBAAa,eAAgB,SAAQ,oBASpC;CAAG;;;;;;;;;;;AAEJ;;GAEG;AACH,qBAAa,MAAO,SAAQ,WAG+B;CAAG;;;;;;;;;;;;AAE9D;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,wBAOiB;CAAG;;;;;;;;;;;AAE7D;;GAEG;AACH,qBAAa,UAAW,SAAQ,eAG2B;CAAG;;;;;;;;;;;AAE9D;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,uBAMkB;CAAG;;;;;;;;;;;AAE7D;;GAEG;AACH,qBAAa,cAAe,SAAQ,mBAMsB;CAAG;;;;;;;;AAE7D;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAGM;CAAG;AAM1C;;GAEG;AACH,eAAO,MAAM,eAAe;aAC1B,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;aACH,GAAG;CACK,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sBAAsB,aAA0C,CAAC;AAE9E;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,aAElC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,UAAU,2QAab,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,cAAc,yJAOjB,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAE1E,eAAO,MAAM,SAAS,EAAG,6BAAsC,CAAC"}
|
package/lib/errors.js
CHANGED
|
@@ -109,7 +109,7 @@ export class ServiceUnavailable extends Schema.TaggedError()("ServiceUnavailable
|
|
|
109
109
|
}).pipe(Category.withServerError, Category.withRetryable()) {
|
|
110
110
|
}
|
|
111
111
|
/**
|
|
112
|
-
* GatewayTimeout -
|
|
112
|
+
* GatewayTimeout - HTTP request or gateway timeout (408, 504).
|
|
113
113
|
*/
|
|
114
114
|
export class GatewayTimeout extends Schema.TaggedError()("GatewayTimeout", {
|
|
115
115
|
message: Schema.String,
|
|
@@ -132,6 +132,7 @@ export const HTTP_STATUS_MAP = {
|
|
|
132
132
|
401: Unauthorized,
|
|
133
133
|
403: Forbidden,
|
|
134
134
|
404: NotFound,
|
|
135
|
+
408: GatewayTimeout,
|
|
135
136
|
409: Conflict,
|
|
136
137
|
422: UnprocessableEntity,
|
|
137
138
|
423: Locked,
|
|
@@ -156,7 +157,9 @@ export const DEFAULT_ERROR_STATUSES = new Set([401, 429, 500, 502, 503, 504]);
|
|
|
156
157
|
* classes (BadRequest/Unauthorized/etc.) would silently retain it as a
|
|
157
158
|
* stale field on the instance and pollute serialized output.
|
|
158
159
|
*/
|
|
159
|
-
export const RETRYABLE_HTTP_STATUSES = new Set([
|
|
160
|
+
export const RETRYABLE_HTTP_STATUSES = new Set([
|
|
161
|
+
408, 423, 429, 500, 502, 503, 504,
|
|
162
|
+
]);
|
|
160
163
|
/**
|
|
161
164
|
* All common API error classes.
|
|
162
165
|
*/
|
package/lib/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "should validate simple xml string",
|
|
4
|
+
"xml": "<rootNode></rootNode>",
|
|
5
|
+
"valid": true
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"name": "should validate simple xml string",
|
|
9
|
+
"xml": "<rootNode></rootNode >",
|
|
10
|
+
"valid": true
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"name": "should not validate invalid starting tag",
|
|
14
|
+
"xml": "< rootNode></rootNode>",
|
|
15
|
+
"valid": false
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "should not validate incomplete xml string",
|
|
19
|
+
"xml": "<rootNode>",
|
|
20
|
+
"valid": false
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "should not validate invalid starting tag for following characters",
|
|
24
|
+
"xml": "<rootNode#@aa></rootNode#@aa>",
|
|
25
|
+
"valid": false
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"name": "should return false for non xml text",
|
|
29
|
+
"xml": "rootNode",
|
|
30
|
+
"valid": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "should validate self closing tags",
|
|
34
|
+
"xml": "<rootNode><validtag1 /><validtag2/><validtag3 with='attrib'/><validtag4 />text<validtag5/>text</rootNode>",
|
|
35
|
+
"valid": true
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "should not consider these as self closing tags",
|
|
39
|
+
"xml": "<rootNode><validtag1/><invalid tag/><validtag3 with='attrib'/></rootNode>",
|
|
40
|
+
"valid": false
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "should not consider these as self closing tags",
|
|
44
|
+
"xml": "<rootNode><notSelfClosing/ ></rootNode>",
|
|
45
|
+
"valid": false
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"name": "should not validate xml string when closing tag is different",
|
|
49
|
+
"xml": "<rootNode></rootnode>",
|
|
50
|
+
"valid": false
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "should not validate xml string when closing tag is invalid",
|
|
54
|
+
"xml": "<rootNode>< /rootnode>",
|
|
55
|
+
"valid": false
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "should not validate xml string when closing tag is invalid",
|
|
59
|
+
"xml": "<rootNode></ rootnode>",
|
|
60
|
+
"valid": false
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"name": "should not validate xml string when closing tag is invalid",
|
|
64
|
+
"xml": "<rootNode></rootnode 123>",
|
|
65
|
+
"valid": false
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"name": "should validate simple xml string with namespace",
|
|
69
|
+
"xml": "<root:Node></root:Node>",
|
|
70
|
+
"valid": true
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"name": "should not validate xml string with namespace when closing tag is diffrent",
|
|
74
|
+
"xml": "<root:Node></root:node>",
|
|
75
|
+
"valid": false
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"name": "should validate simple xml string with value",
|
|
79
|
+
"xml": "<root:Node>some value</root:Node>",
|
|
80
|
+
"valid": true
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "should not validate simple xml string with value but not matching closing tag",
|
|
84
|
+
"xml": "<root:Node>some value</root>",
|
|
85
|
+
"valid": false
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "should not validate simple xml string with value but no closing tag",
|
|
89
|
+
"xml": "<root:Node>some value",
|
|
90
|
+
"valid": false
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "should validate xml with nested tags",
|
|
94
|
+
"xml": "<rootNode><tag></tag><tag>1</tag><tag>val</tag></rootNode>",
|
|
95
|
+
"valid": true
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"name": "should not validate xml with wrongly nested tags",
|
|
99
|
+
"xml": "<rootNode><tag><tag1></tag>1</tag1><tag>val</tag></rootNode>",
|
|
100
|
+
"valid": false
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "should not validate xml with unexpected closing tag",
|
|
104
|
+
"xml": "</rootNode>",
|
|
105
|
+
"valid": false
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"name": "should validate xml with comment",
|
|
109
|
+
"xml": "<rootNode><!-- <tag> - - --><tag>1</tag><tag>val</tag></rootNode>",
|
|
110
|
+
"valid": true
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "should validate xml with comment",
|
|
114
|
+
"xml": "<rootNode><!-- <tag> - - \n--><tag>1</tag><tag>val</tag></rootNode>",
|
|
115
|
+
"valid": true
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "should not validate xml with comment in a open tag",
|
|
119
|
+
"xml": "<rootNode<!-- <tag> -- -->><tag>1</tag><tag>val</tag></rootNode>",
|
|
120
|
+
"valid": false
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "should not validate xml with comment in a open tag",
|
|
124
|
+
"xml": "<rootNode <!-- <tag> -- --> ><tag>1</tag><tag>val</tag></rootNode>",
|
|
125
|
+
"valid": false
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "should correctly identify self closing tags",
|
|
129
|
+
"xml": "<rootNode><in/valid></in/valid></rootNode>",
|
|
130
|
+
"valid": false
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"name": "should correctly identify self closing tags",
|
|
134
|
+
"xml": "<rootNode><in#valid/></rootNode>",
|
|
135
|
+
"valid": false
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"name": "should not validate xml with non closing comment",
|
|
139
|
+
"xml": "<rootNode ><!-- <tag> -- <tag>1</tag><tag>val</tag></rootNode>",
|
|
140
|
+
"valid": false
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"name": "should not validate xml with unclosed tag",
|
|
144
|
+
"xml": "<rootNode abc='123' bc='567'",
|
|
145
|
+
"valid": false
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "should validate xml with CDATA",
|
|
149
|
+
"xml": "<name><![CDATA[Jack]]></name>",
|
|
150
|
+
"valid": true
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"name": "should validate xml with repeated CDATA",
|
|
154
|
+
"xml": "<name><![CDATA[Jack]]><![CDATA[Jack]]></name>",
|
|
155
|
+
"valid": true
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "should validate xml when CDATA consist regx or blank data",
|
|
159
|
+
"xml": "<name><![CDATA[]]><![CDATA[^[ ].*$]]></name>",
|
|
160
|
+
"valid": true
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"name": "should return true for valid tag",
|
|
164
|
+
"xml": "<ns:start_tag-2.0></ns:start_tag-2.0>",
|
|
165
|
+
"valid": true
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"name": "should return false for invalid tag",
|
|
169
|
+
"xml": "<2start_tag abc='123' bc='567'></2start_tag>",
|
|
170
|
+
"valid": false
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"name": "should return false for invalid tag",
|
|
174
|
+
"xml": "<2start_tag />",
|
|
175
|
+
"valid": false
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "should validate xml data",
|
|
179
|
+
"xml": "<?xml version=\"1.0\"?>\n<any_name attr=\"https://example.com/somepath\">\n <person id=\"101\">\n <phone>+122233344550</phone>\n <name>Jack</name>\n <phone>+122233344551</phone>\n <age>33</age>\n <emptyNode></emptyNode>\n <booleanNode>false</booleanNode>\n <booleanNode>true</booleanNode>\n <selfclosing />\n <selfclosing with=\"value\" />\n <married firstTime=\"No\" attr=\"val 2\">Yes</married>\n <birthday>Wed, 28 Mar 1979 12:13:14 +0300</birthday>\n <address>\n <city>New York</city>\n <street>Park Ave</street>\n <buildingNo>1</buildingNo>\n <flatNo>1</flatNo>\n </address>\n <address>\n <city>Boston</city>\n <street>Centre St</street>\n <buildingNo>33</buildingNo>\n <flatNo>24</flatNo>\n </address>\n </person>\n <person id=\"102\">\n <phone>+122233344553</phone>\n <name>Boris</name>\n <phone>+122233344554</phone>\n <age>34</age>\n <married firstTime=\"Yes\">Yes</married>\n <birthday>Mon, 31 Aug 1970 02:03:04 +0300</birthday>\n <address>\n <city>Moscow</city>\n <street>Kahovka</street>\n <buildingNo>1</buildingNo>\n <flatNo>2</flatNo>\n </address>\n <address>\n <city>Tula</city>\n <street>Lenina</street>\n <buildingNo>3</buildingNo>\n <flatNo>78</flatNo>\n </address>\n </person>\n</any_name>",
|
|
180
|
+
"valid": true
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"name": "should validate complex xml data",
|
|
184
|
+
"xml": "<?xml version=\"1.0\"?>\n<any_name attr=\"https://example.com/somepath\">\n <person id=\"101\">\n <phone>+122233344550</phone>\n <name>Jack</name>\n <phone>+122233344551</phone>\n <age>33</age>\n <emptyNode></emptyNode>\n <booleanNode>false</booleanNode>\n <booleanNode>true</booleanNode>\n <selfclosing />\n <selfclosing with=\"value\" />\n <married firstTime=\"No\" attr=\"val 2\">Yes</married>\n <birthday>Wed, 28 Mar 1979 12:13:14 +0300</birthday>\n <address>\n <city>New York</city>\n <street>Park Ave</street>\n <buildingNo>1</buildingNo>\n <flatNo>1</flatNo>\n </address>\n <address>\n <city>Boston</city>\n <street>Centre St</street>\n <buildingNo>33</buildingNo>\n <flatNo>24</flatNo>\n </address>\n </person>\n <person id=\"102\">\n <phone>+122233344553</phone>\n <name>Boris</name>\n <phone>+122233344554</phone>\n <age>34</age>\n <married ns:firstTime=\"Yes\"><![CDATA[<some>Jack</some>]]><![CDATA[Jack]]></married>\n <birthday>Mon, 31 Aug 1970 02:03:04 +0300</birthday>\n <ns:address>\n <city><![CDATA[<some>Jack</some>]]></city>\n <street>Kahovka</street>\n <buildingNo>1</buildingNo>\n <flatNo>2</flatNo>\n </ns:address>\n <address>\n <city>Tula</city>\n <street>Lenina</street>\n <buildingNo>3</buildingNo>\n <flatNo>78</flatNo>\n </address>\n </person>\n</any_name>",
|
|
185
|
+
"valid": true
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"name": "should validate xml data with CRLF",
|
|
189
|
+
"xml": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n <!DOCTYPE daily_western_horo_fr>\n <daily_western_horo_fr>\n <date valeur=\"2017-09-25\"><signe valeur=\"balance\">\n <nombre_chance>25\n </nombre_chance>\n </signe></date>\n </daily_western_horo_fr>\n",
|
|
190
|
+
"valid": true,
|
|
191
|
+
"parserValid": false,
|
|
192
|
+
"difference": "DTDs are outside the supported XML subset."
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"name": "should return false for invalid xml",
|
|
196
|
+
"xml": "<?xml version=\"1.0\"?>\n<any_name attr=\"https://example.com/somepath\">\n <person id=\"101\">\n <phone>+122233344550</phone>\n <name>Jack</name>\n <phone>+122233344551</phone>\n <age>33</age>\n <emptyNode></emptyNode>\n <booleanNode>false</booleanNode>\n <booleanNode>true</booleanNode>\n <selfclosing >\n <selfclosing with=\"value\" />\n <married firstTime=\"No\" attr=\"val 2\">Yes</married>\n <birthday>Wed, 28 Mar 1979 12:13:14 +0300</birthday>\n <address>\n <city>New York</city>\n <street>Park Ave</street>\n <buildingNo>1</buildingNo>\n <flatNo>1</flatNo>\n </address>\n <address>\n <city>Boston</city>\n <street>Centre St</street>\n <buildingNo>33</buildingNo>\n <flatNo>24</flatNo>\n </address>\n </person>\n <person id=\"102\">\n <phone>+122233344553</phone>\n <name>Boris</name>\n <phone>+122233344554</phone>\n <age>34</age>\n <married ns:firstTime=\"Yes\"><![CDATA[<some>Jack</some>]]><![CDATA[Jack]]></married>\n <birthday>Mon, 31 Aug 1970 02:03:04 +0300</birthday>\n <ns:address>\n <city><![CDATA[<some>Jack</some>]]></city>\n <street>Kahovka</street>\n <buildingNo>1</buildingNo>\n <flatNo>2</flatNo>\n </ns:address>\n <address>\n <city>Tula</city>\n <street>Lenina</street>\n <buildingNo>3</buildingNo>\n <flatNo>78</flatNo>\n </address>\n </person>\n</any_name>",
|
|
197
|
+
"valid": false
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"name": "should return true for valid svg",
|
|
201
|
+
"xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Generator: Adobe Illustrator 13.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 14948) -->\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\" \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n<svg version=\"1.0\" id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\" width=\"64px\" height=\"64px\" viewBox=\"5.5 -3.5 64 64\" enable-background=\"new 5.5 -3.5 64 64\" xml:space=\"preserve\">\n<g>\n\t<circle fill=\"#FFFFFF\" cx=\"37.637\" cy=\"28.806\" r=\"28.276\"/>\n\t<g>\n\t\t<path d=\"M37.443-3.5c8.988,0,16.57,3.085,22.742,9.257C66.393,11.967,69.5,19.548,69.5,28.5c0,8.991-3.049,16.476-9.145,22.456 C53.879,57.319,46.242,60.5,37.443,60.5c-8.649,0-16.153-3.144-22.514-9.43C8.644,44.784,5.5,37.262,5.5,28.5 c0-8.761,3.144-16.342,9.429-22.742C21.101-0.415,28.604-3.5,37.443-3.5z M37.557,2.272c-7.276,0-13.428,2.553-18.457,7.657 c-5.22,5.334-7.829,11.525-7.829,18.572c0,7.086,2.59,13.22,7.77,18.398c5.181,5.182,11.352,7.771,18.514,7.771 c7.123,0,13.334-2.607,18.629-7.828c5.029-4.838,7.543-10.952,7.543-18.343c0-7.276-2.553-13.465-7.656-18.571 C50.967,4.824,44.795,2.272,37.557,2.272z M46.129,20.557v13.085h-3.656v15.542h-9.944V33.643h-3.656V20.557 c0-0.572,0.2-1.057,0.599-1.457c0.401-0.399,0.887-0.6,1.457-0.6h13.144c0.533,0,1.01,0.2,1.428,0.6 C45.918,19.5,46.129,19.986,46.129,20.557z M33.042,12.329c0-3.008,1.485-4.514,4.458-4.514s4.457,1.504,4.457,4.514 c0,2.971-1.486,4.457-4.457,4.457S33.042,15.3,33.042,12.329z\"/>\n\t</g>\n</g>\n</svg>\n",
|
|
202
|
+
"valid": true,
|
|
203
|
+
"parserValid": false,
|
|
204
|
+
"difference": "DTDs are outside the supported XML subset."
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"name": "should validate XML with DOCTYPE",
|
|
208
|
+
"xml": "<?xml version=\"1.0\" standalone=\"yes\" ?><!--open the DOCTYPE declaration - the open square bracket indicates an internal DTD--><!DOCTYPE foo [<!--define the internal DTD--><!ELEMENT foo (#PCDATA)><!--close the DOCTYPE declaration-->]><foo>Hello World.</foo>",
|
|
209
|
+
"valid": true,
|
|
210
|
+
"parserValid": false,
|
|
211
|
+
"difference": "DTDs are outside the supported XML subset."
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "should fail for XML with ! which is not a comment, DOCTYPE or CDATA",
|
|
215
|
+
"xml": "<test><!bla></!bla></test>",
|
|
216
|
+
"valid": false
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"name": "should not validate XML when prolog doesn't start from 1st char",
|
|
220
|
+
"xml": " <?xml version=\"1.0\" standalone=\"yes\" ?><foo>Hello World.</foo>",
|
|
221
|
+
"valid": false
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"name": "should not validate XML with prolog only",
|
|
225
|
+
"xml": "<?xml version=\"1.0\" standalone=\"yes\" ?><!--some comment - end in this line-->",
|
|
226
|
+
"valid": false
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"name": "should not validate XML with prolog & DOCTYPE but not any other tag",
|
|
230
|
+
"xml": "<?xml version=\"1.0\" standalone=\"yes\" ?><!--open the DOCTYPE declaration - the open square bracket indicates an internal DTD--><!DOCTYPE foo [<!--define the internal DTD--><!ELEMENT foo (#PCDATA)><!--close the DOCTYPE declaration-->]>",
|
|
231
|
+
"valid": false
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "should validate XML PIs",
|
|
235
|
+
"xml": "<?xml version=\"1.0\"?><?mso-contentType?><h1></h1><?mso-contentType something=\"val\"?>",
|
|
236
|
+
"valid": true
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"name": "should validate XML PIs",
|
|
240
|
+
"xml": "<h1><?mso?> abc</h1>",
|
|
241
|
+
"valid": true
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "should validate XML PIs",
|
|
245
|
+
"xml": "<?xml version=\"1.0\"?>\n <content><?tibcochar ?> something</content>",
|
|
246
|
+
"valid": true
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"name": "should not validate XML PIs with invalid values",
|
|
250
|
+
"xml": "<?xml version=\"1.0\"?><?mso-contentType valid=\"value\" invalid=\"?>\" ?><h1></h1><?mso-contentType something=\"val\"?>",
|
|
251
|
+
"valid": false
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"name": "should validate xml with a \"length\" attribute",
|
|
255
|
+
"xml": "<name length=\"1\"></name>",
|
|
256
|
+
"valid": true
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"name": "should not validate xml with repeated attributes",
|
|
260
|
+
"xml": "<name length=\"bar\" length=\"baz\"></name>",
|
|
261
|
+
"valid": false
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"name": "should validate xml with a tag attribute splitted on more lines",
|
|
265
|
+
"xml": "\n<name\nattribute1=\"attribute1\"\nattribute2=\"attribute2\"\n/>\n ",
|
|
266
|
+
"valid": true
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"name": "should validate xml not properly closed",
|
|
270
|
+
"xml": "\n<name\nattribute1=\"attribute1\"\nattribute2=\"attribute2\"\n></name\n ",
|
|
271
|
+
"valid": false
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"name": "should detect error line when having multiple attributes",
|
|
275
|
+
"xml": "<urlset t\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns:image=\"http://www.google.com/schemas/sitemap-image/1.1\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.google.com/schemas/sitemap-image/1.1 http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd\"\n xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n </urlset>",
|
|
276
|
+
"valid": false
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"name": "should detect error line when having multiple attributes 2",
|
|
280
|
+
"xml": "<urlset\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns:image=\"http://www.google.com/schemas/sitemap-image/1.1\" xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.google.com/schemas/sitemap-image/1.1 http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd\"\n xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"\n t>\n </urlset>",
|
|
281
|
+
"valid": false
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"name": "should validate value with ampersand",
|
|
285
|
+
"xml": "<rootNode>jekyll & hyde</rootNode>",
|
|
286
|
+
"valid": true
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"name": "should validate value with ampersand",
|
|
290
|
+
"xml": "<rootNode>jekyll { hyde</rootNode>",
|
|
291
|
+
"valid": true
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
"name": "should validate value with ampersand",
|
|
295
|
+
"xml": "<rootNode>jekyll � hyde</rootNode>",
|
|
296
|
+
"valid": true,
|
|
297
|
+
"parserValid": false,
|
|
298
|
+
"difference": "Character references must be valid XML code points (at most U+10FFFF)."
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"name": "should validate value with ampersand",
|
|
302
|
+
"xml": "<rootNode>jekyll h; hyde</rootNode>",
|
|
303
|
+
"valid": false
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"name": "should validate value with ampersand",
|
|
307
|
+
"xml": "<rootNode>jekyll a; hyde</rootNode>",
|
|
308
|
+
"valid": false
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"name": "should validate value with ampersand",
|
|
312
|
+
"xml": "<rootNode>jekyll { hyde</rootNode>",
|
|
313
|
+
"valid": false
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
"name": "should validate value with ampersand",
|
|
317
|
+
"xml": "<rootNode>jekyll abcd hyde</rootNode>",
|
|
318
|
+
"valid": false
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"name": "should validate value with ampersand",
|
|
322
|
+
"xml": "<rootNode>jekyll & hyde</rootNode>",
|
|
323
|
+
"valid": false
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"name": "should validate value with ampersand",
|
|
327
|
+
"xml": "<rootNode>jekyll &aa</rootNode>",
|
|
328
|
+
"valid": false
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"name": "should validate value with ampersand",
|
|
332
|
+
"xml": "<rootNode>jekyll &abcdefghij1234567890;</rootNode>",
|
|
333
|
+
"valid": true,
|
|
334
|
+
"parserValid": false,
|
|
335
|
+
"difference": "Undeclared entities are rejected."
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"name": "should validate value with ampersand",
|
|
339
|
+
"xml": "<rootNode>jekyll &abcdefghij1234567890a;</rootNode>",
|
|
340
|
+
"valid": false
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"name": "when root nodes are repeated",
|
|
344
|
+
"xml": "<xml></xml><xml></xml>",
|
|
345
|
+
"valid": false
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
"name": "when root nodes are different",
|
|
349
|
+
"xml": "<xml></xml><xml2></xml2>",
|
|
350
|
+
"valid": false
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"name": "when root nodes have more nested tags",
|
|
354
|
+
"xml": "<test>\n <nested>\n </nested>\n </test>\n <xml2>\n </xml2>",
|
|
355
|
+
"valid": false
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
"name": "- child tag",
|
|
359
|
+
"xml": "<parent>\n <childA/>\n <childB> <!-- error: should be self-closing -->\n <childC/>\n </parent>",
|
|
360
|
+
"valid": false
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
"name": "- root tag",
|
|
364
|
+
"xml": " <!-- line 1 -->\n <!-- line 2 -->\n <parent> <!-- line 3 error: not closed -->\n <childA/>\n <childB/>",
|
|
365
|
+
"valid": false
|
|
366
|
+
},
|
|
367
|
+
{
|
|
368
|
+
"name": "- incorrect close tag",
|
|
369
|
+
"xml": "<parent>\n <child>\n <self/>\n </incorrect>\n <empty/>\n <parent>",
|
|
370
|
+
"valid": false
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"name": "- nested incorrect close tag",
|
|
374
|
+
"xml": "<parent>\n <child>\n <self/>\n <self>\n </incorrect>\n <empty/>\n </parent>",
|
|
375
|
+
"valid": false
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
"name": "- Extra text",
|
|
379
|
+
"xml": "<parent>\n </parent>extra",
|
|
380
|
+
"valid": false
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"name": "- Extra text",
|
|
384
|
+
"xml": "<parent><child attri= bute=\"true\" /></parent>",
|
|
385
|
+
"valid": false
|
|
386
|
+
},
|
|
387
|
+
{
|
|
388
|
+
"name": "- Unpaired tags",
|
|
389
|
+
"xml": "<parent><extra></parent>",
|
|
390
|
+
"valid": false
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"name": "- allowBooleanAttributes:false",
|
|
394
|
+
"xml": "<parent extra></parent>",
|
|
395
|
+
"valid": false
|
|
396
|
+
}
|
|
397
|
+
]
|