Skip to content

Commit a22a823

Browse files
feat(apidom-reference): test server object resolve (#5059)
1 parent 63f7261 commit a22a823

File tree

8 files changed

+143
-1
lines changed

8 files changed

+143
-1
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"clean": "lerna run clean",
3030
"test": "lerna run test",
3131
"link": "npm link --workspaces",
32-
"unlink": "npm unlink --global @swagger-api/apidom-ast @swagger-api/apidom-converter @swagger-api/apidom-core @swagger-api/apidom-error @swagger-api/apidom-json-path @swagger-api/apidom-json-pointer @swagger-api/apidom-json-pointer-relative @swagger-api/apidom-parser-adapter-json @swagger-api/apidom-ns-api-design-systems @swagger-api/apidom-ns-asyncapi-2 @swagger-api/apidom-ns-json-schema-draft-4 @swagger-api/apidom-ns-json-schema-draft-6 @swagger-api/apidom-ns-json-schema-draft-7 @swagger-api/apidom-ns-openapi-2 @swagger-api/apidom-ns-openapi-3-0 @swagger-api/apidom-ns-openapi-3-1 @swagger-api/apidom-parser-adapter-yaml-1-2 @swagger-api/apidom-parser-adapter-asyncapi-yaml-2 @swagger-api/apidom-parser-adapter-openapi-yaml-2 @swagger-api/apidom-parser-adapter-openapi-yaml-3-0 @swagger-api/apidom-parser-adapter-openapi-yaml-3-1 @swagger-api/apidom-parser @swagger-api/apidom-parser-adapter-api-design-systems-json @swagger-api/apidom-parser-adapter-api-design-systems-yaml @swagger-api/apidom-parser-adapter-asyncapi-json-2 @swagger-api/apidom-ls @swagger-api/apidom-reference @swagger-api/apidom-parser-adapter-openapi-json-2 @swagger-api/apidom-parser-adapter-openapi-json-3-0 @swagger-api/apidom-parser-adapter-openapi-json-3-1 @swagger-api/apidom-parser-adapter-arazzo-json-1 @swagger-api/apidom-parser-adapter-arazzo-yaml-1 @swagger-api/apidom-playground"
32+
"unlink": "npm unlink --global @swagger-api/apidom-ast @swagger-api/apidom-converter @swagger-api/apidom-core @swagger-api/apidom-error @swagger-api/apidom-json-path @swagger-api/apidom-json-pointer @swagger-api/apidom-json-pointer-relative @swagger-api/apidom-parser-adapter-json @swagger-api/apidom-ns-api-design-systems @swagger-api/apidom-ns-asyncapi-2 @swagger-api/apidom-ns-asyncapi-3 @swagger-api/apidom-ns-json-schema-draft-4 @swagger-api/apidom-ns-json-schema-draft-6 @swagger-api/apidom-ns-json-schema-draft-7 @swagger-api/apidom-ns-openapi-2 @swagger-api/apidom-ns-openapi-3-0 @swagger-api/apidom-ns-openapi-3-1 @swagger-api/apidom-parser-adapter-yaml-1-2 @swagger-api/apidom-parser-adapter-asyncapi-yaml-2 @swagger-api/apidom-parser-adapter-asyncapi-yaml-3 @swagger-api/apidom-parser-adapter-openapi-yaml-2 @swagger-api/apidom-parser-adapter-openapi-yaml-3-0 @swagger-api/apidom-parser-adapter-openapi-yaml-3-1 @swagger-api/apidom-parser @swagger-api/apidom-parser-adapter-api-design-systems-json @swagger-api/apidom-parser-adapter-api-design-systems-yaml @swagger-api/apidom-parser-adapter-asyncapi-json-2 @swagger-api/apidom-parser-adapter-asyncapi-json-3 @swagger-api/apidom-ls @swagger-api/apidom-reference @swagger-api/apidom-parser-adapter-openapi-json-2 @swagger-api/apidom-parser-adapter-openapi-json-3-0 @swagger-api/apidom-parser-adapter-openapi-json-3-1 @swagger-api/apidom-parser-adapter-arazzo-json-1 @swagger-api/apidom-parser-adapter-arazzo-yaml-1 @swagger-api/apidom-playground"
3333
},
3434
"repository": {
3535
"type": "git",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[
2+
{
3+
"asyncapi": "3.0.0",
4+
"channels": {
5+
"channel1": {
6+
"servers": [{ "$ref": "#/servers/server1" }]
7+
}
8+
},
9+
"servers": {
10+
"server1": {
11+
"host": "http://example.com"
12+
}
13+
}
14+
}
15+
]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"asyncapi": "3.0.0",
3+
"channels": {
4+
"channel1": {
5+
"servers": [{ "$ref": "#/servers/server1" }]
6+
}
7+
},
8+
"servers": {
9+
"server1": {
10+
"host": "http://example.com"
11+
}
12+
}
13+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[
2+
{
3+
"asyncapi": "3.0.0",
4+
"components": {
5+
"servers": {
6+
"server1": {
7+
"host": "host",
8+
"protocol": "protocol"
9+
},
10+
"server2": {
11+
"host": "host",
12+
"protocol": "protocol"
13+
}
14+
}
15+
}
16+
}
17+
]
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"asyncapi": "3.0.0",
3+
"components": {
4+
"servers": {
5+
"server1": {
6+
"host": "host",
7+
"protocol": "protocol"
8+
},
9+
"server2": {
10+
"$ref": "#/components/servers/server1"
11+
}
12+
}
13+
}
14+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[
2+
{
3+
"asyncapi": "3.0.0",
4+
"servers": {
5+
"server1": {
6+
"host": "http://example.com"
7+
},
8+
"server2": {
9+
"host": "http://example.com"
10+
}
11+
}
12+
}
13+
]
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"asyncapi": "3.0.0",
3+
"servers": {
4+
"server1": {
5+
"host": "http://example.com"
6+
},
7+
"server2": {
8+
"$ref": "#/servers/server1"
9+
}
10+
}
11+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import path from 'node:path';
2+
import { assert } from 'chai';
3+
import { toValue } from '@swagger-api/apidom-core';
4+
import { mediaTypes } from '@swagger-api/apidom-ns-asyncapi-3';
5+
import { fileURLToPath } from 'node:url';
6+
7+
import { loadJsonFile } from '../../../../helpers.ts';
8+
import { dereference } from '../../../../../src/index.ts';
9+
10+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
11+
const rootFixturePath = path.join(__dirname, 'fixtures');
12+
13+
describe('dereference', function () {
14+
context('strategies', function () {
15+
context('asyncapi-3', function () {
16+
context('Server Object', function () {
17+
context('given in components/servers field', function () {
18+
const fixturePath = path.join(rootFixturePath, 'components-servers');
19+
20+
specify('should dereference', async function () {
21+
const rootFilePath = path.join(fixturePath, 'root.json');
22+
const actual = await dereference(rootFilePath, {
23+
parse: { mediaType: mediaTypes.latest('json') },
24+
});
25+
const expected = loadJsonFile(path.join(fixturePath, 'dereferenced.json'));
26+
27+
assert.deepEqual(toValue(actual), expected);
28+
});
29+
});
30+
context('given in root/servers field', function () {
31+
const fixturePath = path.join(rootFixturePath, 'root-servers');
32+
33+
specify('should dereference', async function () {
34+
const rootFilePath = path.join(fixturePath, 'root.json');
35+
const actual = await dereference(rootFilePath, {
36+
parse: { mediaType: mediaTypes.latest('json') },
37+
});
38+
const expected = loadJsonFile(path.join(fixturePath, 'dereferenced.json'));
39+
40+
assert.deepEqual(toValue(actual), expected);
41+
});
42+
});
43+
context('given in channels/servers field', function () {
44+
const fixturePath = path.join(rootFixturePath, 'channels-servers');
45+
46+
specify('should not dereference', async function () {
47+
const rootFilePath = path.join(fixturePath, 'root.json');
48+
const actual = await dereference(rootFilePath, {
49+
parse: { mediaType: mediaTypes.latest('json') },
50+
});
51+
const expected = loadJsonFile(path.join(fixturePath, 'dereferenced.json'));
52+
53+
assert.deepEqual(toValue(actual), expected);
54+
});
55+
});
56+
});
57+
});
58+
});
59+
});

0 commit comments

Comments
 (0)