diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/scanconfig/a/AResource.java b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/scanconfig/a/AResource.java index 0af68137..81996fcd 100644 --- a/tck/src/main/java/org/eclipse/microprofile/openapi/apps/scanconfig/a/AResource.java +++ b/tck/src/main/java/org/eclipse/microprofile/openapi/apps/scanconfig/a/AResource.java @@ -17,11 +17,16 @@ import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; +import org.eclipse.microprofile.openapi.annotations.ExternalDocumentation; @Path("a") +@ExternalDocumentation(description = "Find more information about this application", + url = "https://github.com/microprofile/microprofile-open-api/blob/main/tck/src/main/java/org/eclipse/microprofile/openapi/apps/scanconfig/ScanConfigApplication.java") public class AResource { @GET + @ExternalDocumentation(description = "Find more information about this application resource", + url = "https://github.com/microprofile/microprofile-open-api/blob/main/tck/src/main/java/org/eclipse/microprofile/openapi/apps/scanconfig/a/AResource.java") public String get() { return "a"; } diff --git a/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ExternalDocumentationAnnotationTest.java b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ExternalDocumentationAnnotationTest.java new file mode 100644 index 00000000..a48e359e --- /dev/null +++ b/tck/src/main/java/org/eclipse/microprofile/openapi/tck/ExternalDocumentationAnnotationTest.java @@ -0,0 +1,37 @@ +package org.eclipse.microprofile.openapi.tck; + +import io.restassured.response.ValidatableResponse; +import org.eclipse.microprofile.openapi.apps.scanconfig.ScanConfigApplication; +import org.eclipse.microprofile.openapi.apps.scanconfig.a.AResource; +import org.jboss.arquillian.container.test.api.Deployment; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.WebArchive; +import org.testng.annotations.Test; + +import static org.hamcrest.Matchers.equalTo; + +/** + * Verify usage of the {@code @ExternalDocumentation} annotation. + */ +public class ExternalDocumentationAnnotationTest extends AppTestBase { + + @Deployment(name = "externalDocs-test", testable = false) + public static WebArchive deployment() { + return ShrinkWrap.create(WebArchive.class, "externalDocs-test.war") + .addClasses(ScanConfigApplication.class, AResource.class); + } + + /** + * Check that the {@code externalDocs} element is present in the generated OpenAPI document when the + * {@code @ExternalDocumentation} annotation is used on a resource method definition. + * @param type Type of the OpenAPI output format + */ + @Test(dataProvider = "formatProvider") + public void testExternalDocumentationAnnotationOnMethod(String type) { + ValidatableResponse vr = callEndpoint(type); + + vr.body("paths.'/a'.externalDocs.description", equalTo("Find more information about this application resource")); + vr.body("paths.'/a'.externalDocs.url", equalTo( + "https://github.com/microprofile/microprofile-open-api/blob/main/tck/src/main/java/org/eclipse/microprofile/openapi/apps/scanconfig/a/AResource.java")); + } +}