-
-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(2.6.0): check correctness of realisation by reading AsyncAPI exam…
…ple - Application Headers Example #187
- Loading branch information
Showing
2 changed files
with
232 additions
and
0 deletions.
There are no files selected for viewing
149 changes: 149 additions & 0 deletions
149
asyncapi-core/src/test/kotlin/com/asyncapi/examples/v2/_0_0/ApplicationHeaders.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,149 @@ | ||
package com.asyncapi.examples.v2._0_0 | ||
|
||
import com.asyncapi.v2.Reference | ||
import com.asyncapi.v2._0_0.model.channel.ChannelItem | ||
import com.asyncapi.v2._0_0.model.channel.Parameter | ||
import com.asyncapi.v2._0_0.model.channel.message.CorrelationId | ||
import com.asyncapi.v2._0_0.model.channel.message.Message | ||
import com.asyncapi.v2._0_0.model.channel.operation.Operation | ||
import com.asyncapi.v2._0_0.model.component.Components | ||
import com.asyncapi.v2._0_0.model.info.Info | ||
import com.asyncapi.v2._0_0.model.info.License | ||
import com.asyncapi.v2._0_0.model.server.Server | ||
import com.asyncapi.v2._0_0.model.server.ServerVariable | ||
import com.asyncapi.v2.schema.Schema | ||
import java.math.BigDecimal | ||
|
||
class ApplicationHeaders: AbstractExampleValidationTest() { | ||
|
||
override fun specificationLocation(): String = "/examples/v2.0.0/application-headers.yml" | ||
|
||
override fun expectedDefaultContentType(): String = "application/json" | ||
|
||
override fun expectedInfo(): Info { | ||
return Info.builder() | ||
.title("Application Headers example") | ||
.version("1.0.0") | ||
.description("A cut of the Streetlights API to test application header changes supporting") | ||
.license(License( | ||
"Apache 2.0", | ||
"https://www.apache.org/licenses/LICENSE-2.0" | ||
)) | ||
.build() | ||
} | ||
|
||
override fun expectedServers(): Map<String, Any> { | ||
return mapOf( | ||
Pair("production", Server.builder() | ||
.url("test.mosquitto.org:{port}") | ||
.protocol("mqtt") | ||
.description("Test broker") | ||
.variables(mapOf( | ||
Pair("port", ServerVariable.builder() | ||
.description("Secure connection (TLS) is available through port 8883.") | ||
.defaultValue("1883") | ||
.enumValues(listOf("1883", "8883")) | ||
.build() | ||
) | ||
)) | ||
.build() | ||
) | ||
) | ||
} | ||
|
||
override fun expectedChannels(): Map<String, Any> { | ||
return mapOf( | ||
Pair("smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured", ChannelItem.builder() | ||
.parameters(mapOf( | ||
Pair("streetlightId", Reference("#/components/parameters/streetlightId")) | ||
)) | ||
.publish(Operation.builder() | ||
.summary("Inform about environmental lighting conditions of a particular streetlight.") | ||
.operationId("receiveLightMeasurement") | ||
.message(Reference("#/components/messages/lightMeasured")) | ||
.build() | ||
) | ||
.build() | ||
) | ||
) | ||
} | ||
|
||
override fun expectedComponents(): Components? { | ||
return Components.builder() | ||
.messages(mapOf( | ||
Pair("lightMeasured", Message.builder() | ||
.name("lightMeasured") | ||
.title("Light measured") | ||
.summary("Inform about environmental lighting conditions of a particular streetlight.") | ||
.correlationId(CorrelationId( | ||
null, | ||
"\$message.header#/MQMD/CorrelId" | ||
)) | ||
.contentType("application/json") | ||
.headers(Schema.builder() | ||
.type("object") | ||
.properties(mapOf( | ||
Pair("MQMD", Schema.builder() | ||
.type("object") | ||
.properties(mapOf( | ||
Pair("CorrelId", Schema.builder() | ||
.type("string") | ||
.minLength(24) | ||
.maxLength(24) | ||
.format("binary") | ||
.build() | ||
) | ||
)) | ||
.build() | ||
), | ||
Pair("applicationInstanceId", Schema.builder() | ||
.ref("#/components/schemas/applicationInstanceId") | ||
.build() | ||
) | ||
)) | ||
.build() | ||
) | ||
.payload(Schema.builder().ref("#/components/schemas/lightMeasuredPayload").build()) | ||
.build() | ||
) | ||
)) | ||
.schemas(mapOf( | ||
Pair("lightMeasuredPayload", Schema.builder() | ||
.type("object") | ||
.properties(mapOf( | ||
Pair("lumens", Schema.builder() | ||
.type("integer") | ||
.minimum(BigDecimal.ZERO) | ||
.description("Light intensity measured in lumens.") | ||
.build() | ||
), | ||
Pair("sentAt", Schema.builder() | ||
.ref("#/components/schemas/sentAt") | ||
.build() | ||
) | ||
)) | ||
.build() | ||
), | ||
Pair("sentAt", Schema.builder() | ||
.type("string") | ||
.format("date-time") | ||
.description("Date and time when the message was sent.") | ||
.build() | ||
), | ||
Pair("applicationInstanceId", Schema.builder() | ||
.type("string") | ||
.description("Unique identifier for a given instance of the publishing application") | ||
.build() | ||
) | ||
)) | ||
.parameters(mapOf( | ||
Pair("streetlightId", Parameter.builder() | ||
.description("The ID of the streetlight.") | ||
.schema(Schema.builder().type("string").build()) | ||
.build() | ||
) | ||
)) | ||
.build() | ||
} | ||
|
||
} |
83 changes: 83 additions & 0 deletions
83
asyncapi-core/src/test/resources/examples/v2.0.0/application-headers.yml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
asyncapi: 2.0.0 | ||
info: | ||
title: Application Headers example | ||
version: '1.0.0' | ||
description: A cut of the Streetlights API to test application header changes supporting #112 | ||
license: | ||
name: Apache 2.0 | ||
url: https://www.apache.org/licenses/LICENSE-2.0 | ||
|
||
servers: | ||
production: | ||
url: test.mosquitto.org:{port} | ||
protocol: mqtt | ||
description: Test broker | ||
variables: | ||
port: | ||
description: Secure connection (TLS) is available through port 8883. | ||
default: '1883' | ||
enum: | ||
- '1883' | ||
- '8883' | ||
|
||
defaultContentType: application/json | ||
|
||
channels: | ||
smartylighting/streetlights/1/0/event/{streetlightId}/lighting/measured: | ||
parameters: | ||
streetlightId: | ||
$ref: '#/components/parameters/streetlightId' | ||
publish: | ||
summary: Inform about environmental lighting conditions of a particular streetlight. | ||
operationId: receiveLightMeasurement | ||
message: | ||
$ref: '#/components/messages/lightMeasured' | ||
|
||
components: | ||
messages: | ||
lightMeasured: | ||
name: lightMeasured | ||
title: Light measured | ||
summary: Inform about environmental lighting conditions of a particular streetlight. | ||
correlationId: | ||
location: "$message.header#/MQMD/CorrelId" | ||
contentType: application/json | ||
headers: | ||
type: object | ||
properties: | ||
MQMD: | ||
type: object | ||
properties: | ||
CorrelId: | ||
type: string | ||
minLength: 24 | ||
maxLength: 24 | ||
format: binary | ||
applicationInstanceId: | ||
$ref: "#/components/schemas/applicationInstanceId" | ||
payload: | ||
$ref: "#/components/schemas/lightMeasuredPayload" | ||
|
||
schemas: | ||
lightMeasuredPayload: | ||
type: object | ||
properties: | ||
lumens: | ||
type: integer | ||
minimum: 0 | ||
description: Light intensity measured in lumens. | ||
sentAt: | ||
$ref: "#/components/schemas/sentAt" | ||
sentAt: | ||
type: string | ||
format: date-time | ||
description: Date and time when the message was sent. | ||
applicationInstanceId: | ||
description: Unique identifier for a given instance of the publishing application | ||
type: string | ||
|
||
parameters: | ||
streetlightId: | ||
description: The ID of the streetlight. | ||
schema: | ||
type: string |