Skip to content

Commit

Permalink
Registry Client - ContentType Support;Maven Plugin ContentType discov…
Browse files Browse the repository at this point in the history
…ery by file extension (#1802)

* Client - YAML Support

* JSON content type as default to preserve previous behaviour

* Invalid Content in Tests, integration_tests script

* Make for integra. tests; Client ContentType support; Maven plugin YAML

Integration tests moved into Makefile, Rest client now supports content type; Maven plugin now supports content type discovery using file extensions;

* Maven plugin: Added wsdl and xsd file extensions.

* Revert of Makefile

* Removed unnecessary dependencies from client.

Co-authored-by: Eric Wittmann <[email protected]>
Co-authored-by: Carles Arnal <[email protected]>
  • Loading branch information
3 people authored Sep 22, 2021
1 parent 505754c commit 4a50efe
Show file tree
Hide file tree
Showing 15 changed files with 333 additions and 45 deletions.
150 changes: 150 additions & 0 deletions app/src/test/java/io/apicurio/registry/RegistryClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import io.apicurio.registry.rest.v2.beans.VersionSearchResults;
import io.apicurio.registry.types.ArtifactState;
import io.apicurio.registry.types.ArtifactType;
import io.apicurio.registry.types.ContentTypes;
import io.apicurio.registry.types.LogLevel;
import io.apicurio.registry.types.RoleType;
import io.apicurio.registry.types.RuleType;
Expand Down Expand Up @@ -81,6 +82,38 @@ public class RegistryClientTest extends AbstractResourceTestBase {

private static final Logger LOGGER = LoggerFactory.getLogger(RegistryClientTest.class);

private static final String ARTIFACT_OPENAPI_YAML_CONTENT = "openapi: \"3.0.2\"\n" +
"info:\n" +
" description: \"Description\"\n" +
" version: \"1.0.0\"\n" +
" title: \"OpenAPI\"\n" +
"paths:";
private static final String UPDATED_OPENAPI_YAML_CONTENT = "openapi: \"3.0.2\"\n" +
"info:\n" +
" description: \"Description v2\"\n" +
" version: \"2.0.0\"\n" +
" title: \"OpenAPI\"\n" +
"paths:";

private static final String ARTIFACT_OPENAPI_JSON_CONTENT = "{\n" +
" \"openapi\" : \"3.0.2\",\n" +
" \"info\" : {\n" +
" \"description\" : \"Description\",\n" +
" \"version\" : \"1.0.0\",\n" +
" \"title\" : \"OpenAPI\"\n" +
" },\n" +
" \"paths\" : null\n" +
"}";
private static final String UPDATED_OPENAPI_JSON_CONTENT = "{\n" +
" \"openapi\" : \"3.0.2\",\n" +
" \"info\" : {\n" +
" \"description\" : \"Description v2\",\n" +
" \"version\" : \"2.0.0\",\n" +
" \"title\" : \"OpenAPI\"\n" +
" },\n" +
" \"paths\" : null\n" +
"}";

private static final String ARTIFACT_CONTENT = "{\"name\":\"redhat\"}";
private static final String UPDATED_CONTENT = "{\"name\":\"ibm\"}";

Expand Down Expand Up @@ -109,6 +142,32 @@ public void testCreateArtifact() throws Exception {
assertEquals(ARTIFACT_CONTENT, IoUtil.toString(clientV2.getLatestArtifact(groupId, artifactId)));
}

@Test
public void testCreateYamlArtifact() throws Exception {
//Preparation
final String groupId = "testCreateYamlArtifact";
final String artifactId = generateArtifactId();

final String version = "1";
final String name = "testCreateYamlArtifactName";
final String description = "testCreateYamlArtifactDescription";

//Execution
final InputStream stream = IoUtil.toStream(ARTIFACT_OPENAPI_YAML_CONTENT.getBytes(StandardCharsets.UTF_8));
final ArtifactMetaData created = clientV2.createArtifact(groupId, artifactId, version, ArtifactType.OPENAPI, IfExists.FAIL, false, name, description, ContentTypes.APPLICATION_YAML, stream);
waitForArtifact(groupId, artifactId);

//Assertions
assertNotNull(created);
assertEquals(groupId, created.getGroupId());
assertEquals(artifactId, created.getId());
assertEquals(version, created.getVersion());
assertEquals(name, created.getName());
assertEquals(description, created.getDescription());
assertEquals(ARTIFACT_OPENAPI_JSON_CONTENT, IoUtil.toString(clientV2.getLatestArtifact(groupId, artifactId)));
}


@Test
public void testCreateArtifactVersion() throws Exception {
//Preparation
Expand Down Expand Up @@ -142,6 +201,39 @@ public void testCreateArtifactVersion() throws Exception {
assertEquals(UPDATED_CONTENT, IoUtil.toString(clientV2.getLatestArtifact(groupId, artifactId)));
}

@Test
public void testCreateYamlArtifactVersion() throws Exception {
//Preparation
final String groupId = "testCreateYamlArtifactVersion";
final String artifactId = generateArtifactId();

final String version = "2";
final String name = "testCreateYamlArtifactVersionName";
final String description = "testCreateYamlArtifactVersionDescription";

createOpenAPIArtifact(groupId, artifactId); // Create first version of the openapi artifact using JSON

//Execution
final InputStream stream = IoUtil.toStream(UPDATED_OPENAPI_YAML_CONTENT.getBytes(StandardCharsets.UTF_8));
VersionMetaData versionMetaData = clientV2.createArtifactVersion(groupId, artifactId, version, name, description, ContentTypes.APPLICATION_YAML, stream);
waitForVersion(groupId, artifactId, 2);

ArtifactMetaData amd = clientV2.getArtifactMetaData(groupId, artifactId);

//Assertions
assertNotNull(versionMetaData);
assertEquals(version, versionMetaData.getVersion());
assertEquals(name, versionMetaData.getName());
assertEquals(description, versionMetaData.getDescription());

assertNotNull(amd);
assertEquals(version, amd.getVersion());
assertEquals(name, amd.getName());
assertEquals(description, amd.getDescription());

assertEquals(UPDATED_OPENAPI_JSON_CONTENT, IoUtil.toString(clientV2.getLatestArtifact(groupId, artifactId)));
}

@Test
public void testAsyncCRUD() throws Exception {
//Preparation
Expand Down Expand Up @@ -800,6 +892,32 @@ public void testUpdateArtifact() throws Exception {
assertEquals(description, artifactMetaData.getDescription());
}

@Test
public void testUpdateYamlArtifact() throws Exception {

//Preparation
final String groupId = "testUpdateYamlArtifact";
final String artifactId = generateArtifactId();

createOpenAPIArtifact(groupId, artifactId); // Create first version of the openapi artifact using json
final String version = "3";
final String name = "testUpdateYamlArtifactName";
final String description = "testUpdateYamlArtifactDescription";

final InputStream stream = IoUtil.toStream(UPDATED_OPENAPI_YAML_CONTENT.getBytes(StandardCharsets.UTF_8));
//Execution
clientV2.updateArtifact(groupId, artifactId, version, name, description, ContentTypes.APPLICATION_YAML, stream);

//Assertions
assertEquals(UPDATED_OPENAPI_JSON_CONTENT, IoUtil.toString(clientV2.getLatestArtifact(groupId, artifactId)));

ArtifactMetaData artifactMetaData = clientV2.getArtifactMetaData(groupId, artifactId);
assertNotNull(artifactMetaData);
assertEquals(version, artifactMetaData.getVersion());
assertEquals(name, artifactMetaData.getName());
assertEquals(description, artifactMetaData.getDescription());
}

@Test
public void deleteArtifactsInGroup() throws Exception {
//Preparation
Expand Down Expand Up @@ -1008,6 +1126,38 @@ private ArtifactMetaData createArtifact(String groupId, String artifactId) throw
return created;
}

private ArtifactMetaData createOpenAPIArtifact(String groupId, String artifactId) throws Exception {
final InputStream stream = IoUtil.toStream(ARTIFACT_OPENAPI_JSON_CONTENT.getBytes(StandardCharsets.UTF_8));
final ArtifactMetaData created = clientV2.createArtifact(groupId, artifactId, null, ArtifactType.OPENAPI, IfExists.FAIL, false, stream);
waitForArtifact(groupId, artifactId);

assertNotNull(created);
if (groupId == null || groupId.equals("default")) {
assertNull(created.getGroupId());
} else {
assertEquals(groupId, created.getGroupId());
}
assertEquals(artifactId, created.getId());

return created;
}

private ArtifactMetaData createOpenAPIYamlArtifact(String groupId, String artifactId) throws Exception {
final InputStream stream = IoUtil.toStream(ARTIFACT_OPENAPI_YAML_CONTENT.getBytes(StandardCharsets.UTF_8));
final ArtifactMetaData created = clientV2.createArtifact(groupId, artifactId, null, ArtifactType.OPENAPI, IfExists.FAIL, false, stream);
waitForArtifact(groupId, artifactId);

assertNotNull(created);
if (groupId == null || groupId.equals("default")) {
assertNull(created.getGroupId());
} else {
assertEquals(groupId, created.getGroupId());
}
assertEquals(artifactId, created.getId());

return created;
}

private void createArtifactRule(String groupId, String artifactId, RuleType ruleType, String ruleConfig) {
final Rule rule = new Rule();
rule.setConfig(ruleConfig);
Expand Down
1 change: 1 addition & 0 deletions client/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>

</dependencies>

</project>
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,18 @@ public interface RegistryClient {

InputStream getLatestArtifact(String groupId, String artifactId);

ArtifactMetaData updateArtifact(String groupId, String artifactId, String version, String artifactName, String artifactDescription, InputStream data);
ArtifactMetaData updateArtifact(String groupId, String artifactId, String version, String artifactName, String artifactDescription, String contentType, InputStream data);

default ArtifactMetaData updateArtifact(String groupId, String artifactId, String version, String artifactName, String artifactDescription, InputStream data) {
return updateArtifact(groupId, artifactId, version, artifactName, artifactDescription, null, data);
}

default ArtifactMetaData updateArtifact(String groupId, String artifactId, String version, InputStream data) {
return updateArtifact(groupId, artifactId, version, null, null, data);
return updateArtifact(groupId, artifactId, version, null, null, null, data);
}

default ArtifactMetaData updateArtifact(String groupId, String artifactId, InputStream data) {
return updateArtifact(groupId, artifactId, null, null, null, data);
return updateArtifact(groupId, artifactId, null, null, null, null, data);
}

void deleteArtifact(String groupId, String artifactId);
Expand All @@ -64,10 +68,14 @@ default ArtifactMetaData updateArtifact(String groupId, String artifactId, Input

void updateArtifactMetaData(String groupId, String artifactId, EditableMetaData data);

VersionMetaData getArtifactVersionMetaDataByContent(String groupId, String artifactId, Boolean canonical, InputStream data);
VersionMetaData getArtifactVersionMetaDataByContent(String groupId, String artifactId, Boolean canonical, String contentType, InputStream data);

default VersionMetaData getArtifactVersionMetaDataByContent(String groupId, String artifactId, Boolean canonical, InputStream data) {
return getArtifactVersionMetaDataByContent(groupId, artifactId, canonical, null, data);
}

default VersionMetaData getArtifactVersionMetaDataByContent(String groupId, String artifactId, InputStream data) {
return getArtifactVersionMetaDataByContent(groupId, artifactId, null, data);
return getArtifactVersionMetaDataByContent(groupId, artifactId, null, null, data);
}

List<RuleType> listArtifactRules(String groupId, String artifactId);
Expand All @@ -84,7 +92,11 @@ default VersionMetaData getArtifactVersionMetaDataByContent(String groupId, Stri

void updateArtifactState(String groupId, String artifactId, UpdateState data);

void testUpdateArtifact(String groupId, String artifactId, InputStream data);
void testUpdateArtifact(String groupId, String artifactId, String contentType, InputStream data);

default void testUpdateArtifact(String groupId, String artifactId, InputStream data) {
testUpdateArtifact(groupId, artifactId, null, data);
}

InputStream getArtifactVersion(String groupId, String artifactId, String version);

Expand All @@ -100,10 +112,14 @@ void updateArtifactVersionMetaData(String groupId, String artifactId, String ver
VersionSearchResults listArtifactVersions(String groupId, String artifactId, Integer offset,
Integer limit);

VersionMetaData createArtifactVersion(String groupId, String artifactId, String version, String artifactName, String artifactDescription, InputStream data);
VersionMetaData createArtifactVersion(String groupId, String artifactId, String version, String artifactName, String artifactDescription, String contentType, InputStream data);

default VersionMetaData createArtifactVersion(String groupId, String artifactId, String version, String artifactName, String artifactDescription, InputStream data){
return createArtifactVersion(groupId, artifactId, version, artifactName, artifactDescription, null, data);
}

default VersionMetaData createArtifactVersion(String groupId, String artifactId, String version, InputStream data) {
return createArtifactVersion(groupId, artifactId, version, null, null, data);
return createArtifactVersion(groupId, artifactId, version, null, null, null, data);
}

ArtifactSearchResults listArtifactsInGroup(String groupId, SortBy orderBy, SortOrder order, Integer offset, Integer limit);
Expand All @@ -112,23 +128,27 @@ default ArtifactSearchResults listArtifactsInGroup(String groupId) {
return listArtifactsInGroup(groupId, null, null, null, null);
}

ArtifactMetaData createArtifact(String groupId, String artifactId, String version, ArtifactType artifactType, IfExists ifExists, Boolean canonical, String artifactName, String artifactDescription, InputStream data);;
ArtifactMetaData createArtifact(String groupId, String artifactId, String version, ArtifactType artifactType, IfExists ifExists, Boolean canonical, String artifactName, String artifactDescription, String contentType, InputStream data);

default ArtifactMetaData createArtifact(String groupId, String artifactId, String version, ArtifactType artifactType, IfExists ifExists, Boolean canonical, String artifactName, String artifactDescription, InputStream data) {
return createArtifact(groupId, artifactId, version, artifactType, ifExists, canonical, artifactName, artifactDescription, null, data);
};

default ArtifactMetaData createArtifact(String groupId, String artifactId, String version, ArtifactType artifactType, IfExists ifExists, Boolean canonical, InputStream data) {
return createArtifact(groupId, artifactId, version, artifactType, ifExists, canonical, null, null, data);
return createArtifact(groupId, artifactId, version, artifactType, ifExists, canonical, null, null, null, data);
}

default ArtifactMetaData createArtifact(String groupId, String artifactId, InputStream data) {
return createArtifact(groupId, artifactId, null, null, null, null, null, null, data);
return createArtifact(groupId, artifactId, null, null, null, null, null, null, null, data);
}
default ArtifactMetaData createArtifact(String groupId, String artifactId, String version, InputStream data) {
return createArtifact(groupId, artifactId, version, null, null, null, null, null, data);
return createArtifact(groupId, artifactId, version, null, null, null, null, null, null, data);
}
default ArtifactMetaData createArtifact(String groupId, String artifactId, ArtifactType artifactType, InputStream data) {
return createArtifact(groupId, artifactId, null, artifactType, null, null, null, null, data);
return createArtifact(groupId, artifactId, null, artifactType, null, null, null, null, null, data);
}
default ArtifactMetaData createArtifact(String groupId, String artifactId, ArtifactType artifactType, IfExists ifExists, InputStream data) {
return createArtifact(groupId, artifactId, null, artifactType, ifExists, null, null, null, data);
return createArtifact(groupId, artifactId, null, artifactType, ifExists, null, null, null, null, data);
}

void deleteArtifactsInGroup(String groupId);
Expand Down
Loading

0 comments on commit 4a50efe

Please sign in to comment.