diff --git a/src/main/java/com/michelin/ns4kafka/controller/SchemaController.java b/src/main/java/com/michelin/ns4kafka/controller/SchemaController.java index 5c3c895fe..e6ce34cfc 100644 --- a/src/main/java/com/michelin/ns4kafka/controller/SchemaController.java +++ b/src/main/java/com/michelin/ns4kafka/controller/SchemaController.java @@ -8,7 +8,6 @@ import com.michelin.ns4kafka.model.Namespace; import com.michelin.ns4kafka.model.schema.Schema; import com.michelin.ns4kafka.model.schema.SchemaCompatibilityState; -import com.michelin.ns4kafka.model.schema.SchemaList; import com.michelin.ns4kafka.service.SchemaService; import com.michelin.ns4kafka.util.enumation.ApplyStatus; import com.michelin.ns4kafka.util.exception.ResourceValidationException; @@ -52,8 +51,16 @@ public class SchemaController extends NamespacedResourceController { * @return A list of schemas */ @Get - public Flux list(String namespace, @QueryValue(defaultValue = "*") String name) { - return schemaService.findByWildcardName(getNamespace(namespace), name); + public Flux list(String namespace, @QueryValue(defaultValue = "*") String name) { + Namespace ns = getNamespace(namespace); + return schemaService.findByWildcardName(ns, name) + .collectList() + .flatMapMany(schemas -> schemas.size() == 1 + ? Flux.fromIterable(schemas + .stream() + .map(schema -> schemaService.getSubjectLatestVersion(ns, schema.getMetadata().getName())) + .toList()).flatMap(schema -> schema) + : Flux.fromIterable(schemas)); } /** diff --git a/src/main/java/com/michelin/ns4kafka/model/schema/Schema.java b/src/main/java/com/michelin/ns4kafka/model/schema/Schema.java index af390232c..2d48a6352 100644 --- a/src/main/java/com/michelin/ns4kafka/model/schema/Schema.java +++ b/src/main/java/com/michelin/ns4kafka/model/schema/Schema.java @@ -6,7 +6,6 @@ import com.michelin.ns4kafka.model.MetadataResource; import io.micronaut.core.annotation.Introspected; import jakarta.validation.Valid; -import jakarta.validation.constraints.NotNull; import java.util.List; import lombok.AllArgsConstructor; import lombok.Builder; @@ -24,7 +23,6 @@ @EqualsAndHashCode(callSuper = true) public class Schema extends MetadataResource { @Valid - @NotNull private SchemaSpec spec; /** diff --git a/src/main/java/com/michelin/ns4kafka/model/schema/SchemaList.java b/src/main/java/com/michelin/ns4kafka/model/schema/SchemaList.java deleted file mode 100644 index c7ebf1ef3..000000000 --- a/src/main/java/com/michelin/ns4kafka/model/schema/SchemaList.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.michelin.ns4kafka.model.schema; - -import static com.michelin.ns4kafka.util.enumation.Kind.SCHEMA_LIST; - -import com.michelin.ns4kafka.model.Metadata; -import com.michelin.ns4kafka.model.MetadataResource; -import io.micronaut.core.annotation.Introspected; -import lombok.Builder; -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * Schema list. - */ -@Data -@Introspected -@EqualsAndHashCode(callSuper = true) -public class SchemaList extends MetadataResource { - /** - * Constructor. - * - * @param metadata The metadata - */ - @Builder - public SchemaList(Metadata metadata) { - super("v1", SCHEMA_LIST, metadata); - } -} diff --git a/src/main/java/com/michelin/ns4kafka/service/SchemaService.java b/src/main/java/com/michelin/ns4kafka/service/SchemaService.java index fe2a62f28..47ff396f8 100644 --- a/src/main/java/com/michelin/ns4kafka/service/SchemaService.java +++ b/src/main/java/com/michelin/ns4kafka/service/SchemaService.java @@ -8,7 +8,6 @@ import com.michelin.ns4kafka.model.Metadata; import com.michelin.ns4kafka.model.Namespace; import com.michelin.ns4kafka.model.schema.Schema; -import com.michelin.ns4kafka.model.schema.SchemaList; import com.michelin.ns4kafka.service.client.schema.SchemaRegistryClient; import com.michelin.ns4kafka.service.client.schema.entities.SchemaCompatibilityRequest; import com.michelin.ns4kafka.service.client.schema.entities.SchemaCompatibilityResponse; @@ -48,7 +47,7 @@ public class SchemaService { * @param namespace The namespace * @return A list of schemas */ - public Flux findAllForNamespace(Namespace namespace) { + public Flux findAllForNamespace(Namespace namespace) { List acls = aclService .findResourceOwnerGrantedToNamespace(namespace, AccessControlEntry.ResourceType.TOPIC); return schemaRegistryClient @@ -57,7 +56,7 @@ public Flux findAllForNamespace(Namespace namespace) { String underlyingTopicName = subject.replaceAll("-(key|value)$", ""); return aclService.isResourceCoveredByAcls(acls, underlyingTopicName); }) - .map(subject -> SchemaList.builder() + .map(subject -> Schema.builder() .metadata(Metadata.builder() .cluster(namespace.getMetadata().getCluster()) .namespace(namespace.getMetadata().getName()) @@ -73,11 +72,11 @@ public Flux findAllForNamespace(Namespace namespace) { * @param name The name filter * @return A list of schemas */ - public Flux findByWildcardName(Namespace namespace, String name) { + public Flux findByWildcardName(Namespace namespace, String name) { List nameFilterPatterns = RegexUtils.convertWildcardStringsToRegex(List.of(name)); return findAllForNamespace(namespace) - .filter(schemaList -> RegexUtils - .isResourceCoveredByRegex(schemaList.getMetadata().getName(), nameFilterPatterns)); + .filter(schema -> RegexUtils + .isResourceCoveredByRegex(schema.getMetadata().getName(), nameFilterPatterns)); } /** @@ -107,41 +106,52 @@ public Flux getAllSubjectVersions(Namespace namespace, String subject) { ); } + /** + * Build the schema spec from the SchemaResponse. + * + * @param namespace The namespace + * @param subjectOptional The subject object from Http response + * @return A Subject + */ + public Mono buildSchemaSpec(Namespace namespace, SchemaResponse subjectOptional) { + return schemaRegistryClient + .getCurrentCompatibilityBySubject(namespace.getMetadata().getCluster(), subjectOptional.subject()) + .map(Optional::of) + .defaultIfEmpty(Optional.empty()) + .map(currentCompatibilityOptional -> { + Schema.Compatibility compatibility = currentCompatibilityOptional.isPresent() + ? currentCompatibilityOptional.get().compatibilityLevel() : Schema.Compatibility.GLOBAL; + + return Schema.builder() + .metadata(Metadata.builder() + .cluster(namespace.getMetadata().getCluster()) + .namespace(namespace.getMetadata().getName()) + .name(subjectOptional.subject()) + .build()) + .spec(Schema.SchemaSpec.builder() + .id(subjectOptional.id()) + .version(subjectOptional.version()) + .compatibility(compatibility) + .schema(subjectOptional.schema()) + .schemaType(subjectOptional.schemaType() == null ? Schema.SchemaType.AVRO : + Schema.SchemaType.valueOf(subjectOptional.schemaType())) + .build()) + .build(); + }); + } + /** * Get a subject by its name and version. * * @param namespace The namespace * @param subject The subject * @param version The version - * @return A Subject + * @return A subject */ public Mono getSubjectByVersion(Namespace namespace, String subject, String version) { return schemaRegistryClient .getSubject(namespace.getMetadata().getCluster(), subject, version) - .flatMap(latestSubjectOptional -> schemaRegistryClient - .getCurrentCompatibilityBySubject(namespace.getMetadata().getCluster(), subject) - .map(Optional::of) - .defaultIfEmpty(Optional.empty()) - .map(currentCompatibilityOptional -> { - Schema.Compatibility compatibility = currentCompatibilityOptional.isPresent() - ? currentCompatibilityOptional.get().compatibilityLevel() : Schema.Compatibility.GLOBAL; - - return Schema.builder() - .metadata(Metadata.builder() - .cluster(namespace.getMetadata().getCluster()) - .namespace(namespace.getMetadata().getName()) - .name(latestSubjectOptional.subject()) - .build()) - .spec(Schema.SchemaSpec.builder() - .id(latestSubjectOptional.id()) - .version(latestSubjectOptional.version()) - .compatibility(compatibility) - .schema(latestSubjectOptional.schema()) - .schemaType(latestSubjectOptional.schemaType() == null ? Schema.SchemaType.AVRO : - Schema.SchemaType.valueOf(latestSubjectOptional.schemaType())) - .build()) - .build(); - })); + .flatMap(subjectOptional -> buildSchemaSpec(namespace, subjectOptional)); } /** diff --git a/src/main/java/com/michelin/ns4kafka/util/enumation/Kind.java b/src/main/java/com/michelin/ns4kafka/util/enumation/Kind.java index 38977ff9d..b06a3211c 100644 --- a/src/main/java/com/michelin/ns4kafka/util/enumation/Kind.java +++ b/src/main/java/com/michelin/ns4kafka/util/enumation/Kind.java @@ -21,7 +21,6 @@ public enum Kind { ROLE_BINDING("RoleBinding"), SCHEMA("Schema"), SCHEMA_COMPATIBILITY_STATE("SchemaCompatibilityState"), - SCHEMA_LIST("SchemaList"), STATUS("Status"), TOPIC("Topic"), VAULT_RESPONSE("VaultResponse"); diff --git a/src/test/java/com/michelin/ns4kafka/controller/SchemaControllerTest.java b/src/test/java/com/michelin/ns4kafka/controller/SchemaControllerTest.java index 6801019af..607c9a1bc 100644 --- a/src/test/java/com/michelin/ns4kafka/controller/SchemaControllerTest.java +++ b/src/test/java/com/michelin/ns4kafka/controller/SchemaControllerTest.java @@ -12,7 +12,6 @@ import com.michelin.ns4kafka.model.Metadata; import com.michelin.ns4kafka.model.Namespace; import com.michelin.ns4kafka.model.schema.Schema; -import com.michelin.ns4kafka.model.schema.SchemaList; import com.michelin.ns4kafka.security.ResourceBasedSecurityRule; import com.michelin.ns4kafka.service.NamespaceService; import com.michelin.ns4kafka.service.SchemaService; @@ -189,7 +188,7 @@ void shouldNotApplySchemaWhenValidationErrors() { } @Test - void shouldCreateSchemaInDryRunMode() { + void shouldNotCreateSchemaInDryRunMode() { Namespace namespace = buildNamespace(); Schema schema = buildSchema(); @@ -278,30 +277,36 @@ void shouldNotCreateSchemaInDryRunModeWhenNotCompatible() { } @Test - void shouldListSchemasWithoutParameter() { + void shouldListMultipleSchemas() { Namespace namespace = buildNamespace(); - SchemaList schema = buildSchemaList(); + Schema schema = buildSchemaNameOnly(); + Schema schema2 = buildSchemaNameOnly2(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "*")) - .thenReturn(Flux.fromIterable(List.of(schema))); + .thenReturn(Flux.fromIterable(List.of(schema, schema2))); StepVerifier.create(schemaController.list("myNamespace", "*")) .consumeNextWith( schemaResponse -> assertEquals("prefix.subject-value", schemaResponse.getMetadata().getName())) + .consumeNextWith( + schemaResponse -> assertEquals("prefix.subject2-value", schemaResponse.getMetadata().getName())) .verifyComplete(); + verify(schemaService, never()).getSubjectLatestVersion(any(), any()); } @Test - void shouldListSchemaWithNameParameter() { + void shouldListOneSchemaWithNameParameter() { Namespace namespace = buildNamespace(); - SchemaList schema = buildSchemaList(); + Schema schema = buildSchemaNameOnly(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "prefix.subject-value")) .thenReturn(Flux.fromIterable(List.of(schema))); + when(schemaService.getSubjectLatestVersion(namespace, "prefix.subject-value")) + .thenReturn(Mono.just(schema)); StepVerifier.create(schemaController.list("myNamespace", "prefix.subject-value")) .consumeNextWith( @@ -309,6 +314,20 @@ void shouldListSchemaWithNameParameter() { .verifyComplete(); } + @Test + void shouldListSchemaWhenNoSchema() { + Namespace namespace = buildNamespace(); + + when(namespaceService.findByName("myNamespace")) + .thenReturn(Optional.of(namespace)); + when(schemaService.findByWildcardName(namespace, "prefix.subject-value")) + .thenReturn(Flux.fromIterable(List.of())); + + StepVerifier.create(schemaController.list("myNamespace", "prefix.subject-value")) + .verifyComplete(); + verify(schemaService, never()).getSubjectLatestVersion(any(), any()); + } + @Test @SuppressWarnings("deprecation") void shouldGetSchema() { @@ -619,15 +638,14 @@ void shouldNotDeleteSchemaVersionInDryRunMode() { @Test void shouldBulkDeleteAllSchemaVersions() { Namespace namespace = buildNamespace(); - Schema schema1 = buildSchema(); - SchemaList schemaList = buildSchemaList(); + Schema schema = buildSchemaNameOnly(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "prefix.subject-value")) - .thenReturn(Flux.fromIterable(List.of(schemaList))); + .thenReturn(Flux.fromIterable(List.of(schema))); when(schemaService.getSubjectLatestVersion(namespace, "prefix.subject-value")) - .thenReturn(Mono.just(schema1)); + .thenReturn(Mono.just(schema)); when(schemaService.deleteAllVersions(namespace, "prefix.subject-value")) .thenReturn(Mono.just(new Integer[1])); @@ -641,13 +659,12 @@ void shouldBulkDeleteAllSchemaVersions() { @Test void shouldBulkDeleteSchemaVersion() { Namespace namespace = buildNamespace(); - Schema schema = buildSchema(); - SchemaList schemaList = buildSchemaList(); + Schema schema = buildSchemaNameOnly(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "prefix.subject-value")) - .thenReturn(Flux.fromIterable(List.of(schemaList))); + .thenReturn(Flux.fromIterable(List.of(schema))); when(schemaService.getSubjectByVersion(namespace, "prefix.subject-value", "1")) .thenReturn(Mono.just(schema)); when(schemaService.deleteVersion(namespace, "prefix.subject-value", "1")) @@ -696,14 +713,13 @@ void shouldNotBulkDeleteSchemaVersionWhenEmpty() { @Test void shouldNotBulkDeleteAllSchemaVersionsWhenVersionNotFound() { Namespace namespace = buildNamespace(); - Schema schema = buildSchema(); - SchemaList schemaList = buildSchemaList(); - SchemaList schemaList2 = buildSchemaList2(); + Schema schema = buildSchemaNameOnly(); + Schema schema2 = buildSchemaNameOnly2(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "prefix.subject*")) - .thenReturn(Flux.fromIterable(List.of(schemaList, schemaList2))); + .thenReturn(Flux.fromIterable(List.of(schema, schema2))); when(schemaService.getSubjectLatestVersion(namespace, "prefix.subject-value")) .thenReturn(Mono.just(schema)); when(schemaService.getSubjectLatestVersion(namespace, "prefix.subject2-value")) @@ -720,14 +736,13 @@ void shouldNotBulkDeleteAllSchemaVersionsWhenVersionNotFound() { @Test void shouldNotBulkDeleteSchemaVersionWhenVersionNotFound() { Namespace namespace = buildNamespace(); - Schema schema = buildSchema(); - SchemaList schemaList = buildSchemaList(); - SchemaList schemaList2 = buildSchemaList2(); + Schema schema = buildSchemaNameOnly(); + Schema schema2 = buildSchemaNameOnly2(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "prefix.subject*")) - .thenReturn(Flux.fromIterable(List.of(schemaList, schemaList2))); + .thenReturn(Flux.fromIterable(List.of(schema, schema2))); when(schemaService.getSubjectByVersion(namespace, "prefix.subject-value", "1")) .thenReturn(Mono.just(schema)); when(schemaService.getSubjectByVersion(namespace, "prefix.subject2-value", "1")) @@ -744,13 +759,12 @@ void shouldNotBulkDeleteSchemaVersionWhenVersionNotFound() { @Test void shouldNotBulkDeleteAllSchemaVersionsInDryRunMode() { Namespace namespace = buildNamespace(); - Schema schema = buildSchema(); - SchemaList schemaList = buildSchemaList(); + Schema schema = buildSchemaNameOnly(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "prefix.subject-value")) - .thenReturn(Flux.fromIterable(List.of(schemaList))); + .thenReturn(Flux.fromIterable(List.of(schema))); when(schemaService.getSubjectLatestVersion(namespace, "prefix.subject-value")) .thenReturn(Mono.just(schema)); @@ -764,13 +778,12 @@ void shouldNotBulkDeleteAllSchemaVersionsInDryRunMode() { @Test void shouldNotBulkDeleteSchemaVersionInDryRunMode() { Namespace namespace = buildNamespace(); - Schema schema = buildSchema(); - SchemaList schemaList = buildSchemaList(); + Schema schema = buildSchemaNameOnly(); when(namespaceService.findByName("myNamespace")) .thenReturn(Optional.of(namespace)); when(schemaService.findByWildcardName(namespace, "prefix.subject-value")) - .thenReturn(Flux.fromIterable(List.of(schemaList))); + .thenReturn(Flux.fromIterable(List.of(schema))); when(schemaService.getSubjectByVersion(namespace, "prefix.subject-value", "1")) .thenReturn(Mono.just(schema)); @@ -835,16 +848,16 @@ private Schema buildSchemaV2() { .build(); } - private SchemaList buildSchemaList() { - return SchemaList.builder() + private Schema buildSchemaNameOnly() { + return Schema.builder() .metadata(Metadata.builder() .name("prefix.subject-value") .build()) .build(); } - private SchemaList buildSchemaList2() { - return SchemaList.builder() + private Schema buildSchemaNameOnly2() { + return Schema.builder() .metadata(Metadata.builder() .name("prefix.subject2-value") .build()) diff --git a/src/test/java/com/michelin/ns4kafka/integration/SchemaIntegrationTest.java b/src/test/java/com/michelin/ns4kafka/integration/SchemaIntegrationTest.java index 56506c019..c79f0fd8f 100644 --- a/src/test/java/com/michelin/ns4kafka/integration/SchemaIntegrationTest.java +++ b/src/test/java/com/michelin/ns4kafka/integration/SchemaIntegrationTest.java @@ -14,7 +14,6 @@ import com.michelin.ns4kafka.model.RoleBinding; import com.michelin.ns4kafka.model.schema.Schema; import com.michelin.ns4kafka.model.schema.SchemaCompatibilityState; -import com.michelin.ns4kafka.model.schema.SchemaList; import com.michelin.ns4kafka.service.client.schema.entities.SchemaCompatibilityResponse; import com.michelin.ns4kafka.service.client.schema.entities.SchemaResponse; import io.confluent.kafka.schemaregistry.client.rest.entities.requests.RegisterSchemaRequest; @@ -577,12 +576,12 @@ void shouldRegisterSchemaWithWrongPrefix() { .toBlocking() .exchange(HttpRequest .create(HttpMethod.GET, "/api/namespaces/ns1/schemas") - .bearerAuth(token), Argument.listOf(SchemaList.class)); + .bearerAuth(token), Argument.listOf(Schema.class)); assertTrue(getResponse.getBody().isPresent()); assertTrue(getResponse.getBody().get() .stream() - .noneMatch(schemaList -> schemaList.getMetadata().getName().equals("wrongprefix-subject"))); + .noneMatch(schemaResponse -> schemaResponse.getMetadata().getName().equals("wrongprefix-subject"))); HttpClientResponseException getException = assertThrows(HttpClientResponseException.class, () -> schemaRegistryClient @@ -625,12 +624,12 @@ void shouldRegisterSchema() { .toBlocking() .exchange(HttpRequest .create(HttpMethod.GET, "/api/namespaces/ns1/schemas") - .bearerAuth(token), Argument.listOf(SchemaList.class)); + .bearerAuth(token), Argument.listOf(Schema.class)); assertTrue(getResponse.getBody().isPresent()); assertTrue(getResponse.getBody().get() .stream() - .anyMatch(schemaList -> schemaList.getMetadata().getName().equals("ns1-subject2-value"))); + .anyMatch(schemaResponse -> schemaResponse.getMetadata().getName().equals("ns1-subject2-value"))); // Delete schema var deleteResponse = ns4KafkaClient @@ -646,12 +645,12 @@ void shouldRegisterSchema() { .toBlocking() .exchange(HttpRequest .create(HttpMethod.GET, "/api/namespaces/ns1/schemas") - .bearerAuth(token), Argument.listOf(SchemaList.class)); + .bearerAuth(token), Argument.listOf(Schema.class)); assertTrue(getResponseEmpty.getBody().isPresent()); assertTrue(getResponseEmpty.getBody().get() .stream() - .noneMatch(schemaList -> schemaList.getMetadata().getName().equals("ns1-subject2-value"))); + .noneMatch(schemaResponse -> schemaResponse.getMetadata().getName().equals("ns1-subject2-value"))); HttpClientResponseException getException = assertThrows(HttpClientResponseException.class, () -> schemaRegistryClient @@ -694,12 +693,12 @@ void shouldRegisterSameSchemaTwice() { .toBlocking() .exchange(HttpRequest .create(HttpMethod.GET, "/api/namespaces/ns1/schemas") - .bearerAuth(token), Argument.listOf(SchemaList.class)); + .bearerAuth(token), Argument.listOf(Schema.class)); assertTrue(getResponse.getBody().isPresent()); assertTrue(getResponse.getBody().get() .stream() - .anyMatch(schemaList -> schemaList.getMetadata().getName().equals("ns1-subject3-value"))); + .anyMatch(schemaResponse -> schemaResponse.getMetadata().getName().equals("ns1-subject3-value"))); // Apply the same schema with swapped fields Schema sameSchemaWithSwappedFields = Schema.builder() diff --git a/src/test/java/com/michelin/ns4kafka/model/SchemaTest.java b/src/test/java/com/michelin/ns4kafka/model/SchemaTest.java index 2856aa030..7e7e47bfb 100644 --- a/src/test/java/com/michelin/ns4kafka/model/SchemaTest.java +++ b/src/test/java/com/michelin/ns4kafka/model/SchemaTest.java @@ -4,7 +4,6 @@ import static org.junit.jupiter.api.Assertions.assertNotEquals; import com.michelin.ns4kafka.model.schema.Schema; -import com.michelin.ns4kafka.model.schema.SchemaList; import org.junit.jupiter.api.Test; class SchemaTest { @@ -104,20 +103,20 @@ void shouldBeEqual() { } @Test - void shouldSchemaListBeEqual() { - SchemaList original = SchemaList.builder() + void shouldSchemaBeEqual() { + Schema original = Schema.builder() .metadata(Metadata.builder() .name("prefix.schema-one") .build()) .build(); - SchemaList same = SchemaList.builder() + Schema same = Schema.builder() .metadata(Metadata.builder() .name("prefix.schema-one") .build()) .build(); - SchemaList different = SchemaList.builder() + Schema different = Schema.builder() .metadata(Metadata.builder() .name("prefix.schema-two") .build()) diff --git a/src/test/java/com/michelin/ns4kafka/service/SchemaServiceTest.java b/src/test/java/com/michelin/ns4kafka/service/SchemaServiceTest.java index 2bd7c4fc9..49ff85546 100644 --- a/src/test/java/com/michelin/ns4kafka/service/SchemaServiceTest.java +++ b/src/test/java/com/michelin/ns4kafka/service/SchemaServiceTest.java @@ -159,7 +159,7 @@ void shouldListSchemaWithWildcardNameParameter() { .grantedTo("myNamespace") .resourcePatternType(AccessControlEntry.ResourcePatternType.LITERAL) .resourceType(AccessControlEntry.ResourceType.TOPIC) - .resource("prefix2.schema2-value") + .resource("prefix2.schema2") .build()) .build(), AccessControlEntry.builder() @@ -210,7 +210,7 @@ void shouldListSchemaWithWildcardNameParameter() { } @Test - void shouldGetBySubjectAndVersion() { + void shouldGetSubjectLatestVersion() { Namespace namespace = buildNamespace(); SchemaCompatibilityResponse compatibilityResponse = buildCompatibilityResponse(); @@ -247,7 +247,7 @@ void shouldGetAllSubjectVersions() { } @Test - void shouldGetBySubjectAndVersionWhenEmpty() { + void shouldNotGetSubjectLatestVersionWhenEmpty() { Namespace namespace = buildNamespace(); when(schemaRegistryClient.getSubject(namespace.getMetadata().getCluster(), "prefix.schema-one", "latest")) @@ -598,6 +598,7 @@ private SchemaResponse buildSchemaResponse(String subject) { + "\"doc\":\"Last name of the person\"},{\"name\":\"dateOfBirth\",\"type\":[\"null\"," + "{\"type\":\"long\",\"logicalType\":\"timestamp-millis\"}],\"default\":null," + "\"doc\":\"Date of birth of the person\"}]}") + .schemaType("AVRO") .references(List.of(Schema.SchemaSpec.Reference.builder() .name("HeaderAvro") .subject("header-value")