Skip to content

Commit

Permalink
fix: Change the payload type in message example to object in v3_0_0 t…
Browse files Browse the repository at this point in the history
…o fix the failure where the spec with an array payload was not getting parsed properly
  • Loading branch information
yogeshnikam671 committed Dec 27, 2024
1 parent 4ab6473 commit 3dfe458
Show file tree
Hide file tree
Showing 3 changed files with 140 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public class MessageExample extends ExtendableObject {
* The value of this field MUST validate against the Message {@link Message} payload field.
*/
@Nullable
public Map<String, Object> payload;
public Object payload;

/**
* A machine-friendly name.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package com.asyncapi.examples.v3._0_0

import com.asyncapi.schemas.asyncapi.Reference
import com.asyncapi.v3._0_0.model.channel.Channel
import com.asyncapi.v3._0_0.model.channel.message.Message
import com.asyncapi.v3._0_0.model.component.Components
import com.asyncapi.v3._0_0.model.info.Info
import com.asyncapi.v3._0_0.model.operation.Operation
import com.asyncapi.v3._0_0.model.operation.OperationAction
import com.asyncapi.schemas.asyncapi.AsyncAPISchema
import com.asyncapi.v3._0_0.model.channel.message.MessageExample

class ArrayAsMessageAsyncAPI: AbstractExampleValidationTest() {

override fun specificationLocation(): String = "/examples/v3.0.0/message-of-array-type-asyncapi.yml"

override fun expectedInfo(): Info {
return Info.builder()
.title("Message of array type example")
.version("1.0.0")
.build()
}

override fun expectedServers(): Map<String, Any> = emptyMap()

override fun expectedChannels(): Map<String, Any> {
return mapOf(
Pair("test",
Channel.builder()
.address("test")
.messages(mapOf(
Pair("testMessages",
Reference("#/components/messages/testMessages")
)
))
.build()
)
)
}

override fun expectedOperations(): Map<String, Any> {
return mapOf(
Pair("onTestMsg",
Operation.builder()
.action(OperationAction.RECEIVE)
.channel(Reference("#/channels/test"))
.messages(listOf(Reference("#/channels/test/messages/testMessages")))
.build()
)
)
}

override fun expectedComponents(): Components {
return Components.builder()
.messages(mapOf(
Pair("testMessages",
Message.builder()
.payload(
Reference("#/components/schemas/objectWithKeyArray")
)
.examples(
listOf(
MessageExample.builder().name("example1").payload(
listOf(
mapOf("key" to "value1"),
mapOf("key" to "value2")
)
).build(),
MessageExample.builder().name("example2").payload(
listOf(
mapOf("key" to "value3")
)
).build()
)
)
.build()
)
))
.schemas(mapOf(
Pair(
"objectWithKeyArray", AsyncAPISchema.builder()
.type("array")
.items(
AsyncAPISchema.builder()
.type("object")
.properties(
mapOf(
Pair("key", AsyncAPISchema.builder().type("string").build())
)
)
.build()
)
.build()
)
))
.build()
}

}

Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
asyncapi: 3.0.0
info:
title: Message of array type example
version: 1.0.0
channels:
test:
address: test
messages:
testMessages:
$ref: '#/components/messages/testMessages'
operations:
onTestMsg:
action: receive
channel:
$ref: '#/channels/test'
messages:
- $ref: '#/channels/test/messages/testMessages'
components:
messages:
testMessages:
payload:
$ref: '#/components/schemas/objectWithKeyArray'
examples:
- name: example1
payload:
- key: "value1"
- key: "value2"
- name: example2
payload:
- key: "value3"
schemas:
objectWithKeyArray:
type: array
items:
type: object
properties:
key:
type: string

0 comments on commit 3dfe458

Please sign in to comment.