diff --git a/cli.js b/cli.js index d3daa4b1..2615f721 100755 --- a/cli.js +++ b/cli.js @@ -32,7 +32,7 @@ if (!asyncapiFile) { program.help(); // This exits the process } if (!version) { - version = '2.2.0'; + version = '2.3.0'; } try { diff --git a/lib/index.js b/lib/index.js index 316474bc..f9a55b94 100644 --- a/lib/index.js +++ b/lib/index.js @@ -22,6 +22,7 @@ const conversions = { '2.0.0': from__2_0_0_rc2__to__2_0_0, '2.1.0': from__2_0_0__to__2_1_0, '2.2.0': from__2_1_0__to__2_2_0, + '2.3.0': from__2_2_0__to__2_3_0, } const conversionVersions = Object.keys(conversions); @@ -192,14 +193,17 @@ function from__2_0_0_rc2__to__2_0_0(asyncapi2rc2, options) { return result; } -function from__2_0_0__to__2_1_0(asyncapi2) { - const result = asyncapi2; - result.asyncapi = '2.1.0'; - return result; +function from__2_0_0__to__2_1_0(asyncapi) { + asyncapi.asyncapi = '2.1.0'; + return asyncapi; } -function from__2_1_0__to__2_2_0(asyncapi2) { - const result = asyncapi2; - result.asyncapi = '2.2.0'; - return result; +function from__2_1_0__to__2_2_0(asyncapi) { + asyncapi.asyncapi = '2.2.0'; + return asyncapi; } + +function from__2_2_0__to__2_3_0(asyncapi) { + asyncapi.asyncapi = '2.3.0'; + return asyncapi; +} \ No newline at end of file diff --git a/test/index.js b/test/index.js index 3cdce796..62e9902c 100644 --- a/test/index.js +++ b/test/index.js @@ -179,6 +179,20 @@ describe('#convert', () => { const result = convert(input, '2.2.0'); assertResults(output, result); }); + + it('should convert from 2.1.0 to 2.3.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.1.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.3.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.3.0'); + assertResults(output, result); + }); + + it('should convert from 2.2.0 to 2.3.0', () => { + const input = fs.readFileSync(path.resolve(__dirname, 'input', '2.2.0', 'streetlights.yml'), 'utf8'); + const output = fs.readFileSync(path.resolve(__dirname, 'output', '2.3.0', 'streetlights.yml'), 'utf8'); + const result = convert(input, '2.3.0'); + assertResults(output, result); + }); }); /* diff --git a/test/input/2.2.0/streetlights.yml b/test/input/2.2.0/streetlights.yml new file mode 100644 index 00000000..f1e15c77 --- /dev/null +++ b/test/input/2.2.0/streetlights.yml @@ -0,0 +1,113 @@ +asyncapi: 2.2.0 +info: + title: Streetlights API + version: 1.0.0 + description: "The Smartylighting Streetlights API allows you to remotely manage the city lights.\n\n### Check out its awesome features:\n\n* Turn a specific streetlight on/off \U0001F303\n* Dim a specific streetlight \U0001F60E\n* Receive real-time information about environmental lighting conditions \U0001F4C8\n" + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' +servers: + default: + url: 'api.streetlights.smartylighting.com:{port}' + description: Test broker + variables: + port: + description: Secure connection (TLS) is available through port 8883. + default: '1883' + enum: + - '1883' + - '8883' + protocol: mqtt + security: + - apiKey: [] +components: + messages: + lightMeasured: + summary: >- + Inform about environmental lighting conditions for a particular + streetlight. + payload: + $ref: '#/components/schemas/lightMeasuredPayload' + turnOnOff: + summary: Command a particular streetlight to turn the lights on or off. + payload: + $ref: '#/components/schemas/turnOnOffPayload' + dimLight: + summary: Command a particular streetlight to dim the lights. + payload: + $ref: '#/components/schemas/dimLightPayload' + schemas: + lightMeasuredPayload: + type: object + properties: + lumens: + type: integer + minimum: 0 + description: Light intensity measured in lumens. + sentAt: + $ref: '#/components/schemas/sentAt' + turnOnOffPayload: + type: object + properties: + command: + type: string + enum: + - 'on' + - 'off' + description: Whether to turn on or off the light. + sentAt: + $ref: '#/components/schemas/sentAt' + dimLightPayload: + type: object + properties: + percentage: + type: integer + description: Percentage to which the light should be dimmed to. + minimum: 0 + maximum: 100 + sentAt: + $ref: '#/components/schemas/sentAt' + sentAt: + type: string + format: date-time + description: Date and time when the message was sent. + securitySchemes: + apiKey: + type: apiKey + in: user + description: Provide your API key as the user and leave the password empty. + parameters: + streetlightId: + name: streetlightId + description: The ID of the streetlight. + schema: + type: string +channels: + 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + publish: + message: + $ref: '#/components/messages/lightMeasured' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/on': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/off': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/dim': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/dimLight' diff --git a/test/output/2.3.0/streetlights.yml b/test/output/2.3.0/streetlights.yml new file mode 100644 index 00000000..ec88f7f5 --- /dev/null +++ b/test/output/2.3.0/streetlights.yml @@ -0,0 +1,113 @@ +asyncapi: 2.3.0 +info: + title: Streetlights API + version: 1.0.0 + description: "The Smartylighting Streetlights API allows you to remotely manage the city lights.\n\n### Check out its awesome features:\n\n* Turn a specific streetlight on/off \U0001F303\n* Dim a specific streetlight \U0001F60E\n* Receive real-time information about environmental lighting conditions \U0001F4C8\n" + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' +servers: + default: + url: 'api.streetlights.smartylighting.com:{port}' + description: Test broker + variables: + port: + description: Secure connection (TLS) is available through port 8883. + default: '1883' + enum: + - '1883' + - '8883' + protocol: mqtt + security: + - apiKey: [] +components: + messages: + lightMeasured: + summary: >- + Inform about environmental lighting conditions for a particular + streetlight. + payload: + $ref: '#/components/schemas/lightMeasuredPayload' + turnOnOff: + summary: Command a particular streetlight to turn the lights on or off. + payload: + $ref: '#/components/schemas/turnOnOffPayload' + dimLight: + summary: Command a particular streetlight to dim the lights. + payload: + $ref: '#/components/schemas/dimLightPayload' + schemas: + lightMeasuredPayload: + type: object + properties: + lumens: + type: integer + minimum: 0 + description: Light intensity measured in lumens. + sentAt: + $ref: '#/components/schemas/sentAt' + turnOnOffPayload: + type: object + properties: + command: + type: string + enum: + - 'on' + - 'off' + description: Whether to turn on or off the light. + sentAt: + $ref: '#/components/schemas/sentAt' + dimLightPayload: + type: object + properties: + percentage: + type: integer + description: Percentage to which the light should be dimmed to. + minimum: 0 + maximum: 100 + sentAt: + $ref: '#/components/schemas/sentAt' + sentAt: + type: string + format: date-time + description: Date and time when the message was sent. + securitySchemes: + apiKey: + type: apiKey + in: user + description: Provide your API key as the user and leave the password empty. + parameters: + streetlightId: + name: streetlightId + description: The ID of the streetlight. + schema: + type: string +channels: + 'smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + publish: + message: + $ref: '#/components/messages/lightMeasured' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/on': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/turn/off': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/turnOnOff' + 'smartylighting/streetlights/1/0/action/{streetlightId}/dim': + parameters: + streetlightId: + $ref: '#/components/parameters/streetlightId' + subscribe: + message: + $ref: '#/components/messages/dimLight'