Merge "b/163430475 Add missing traversal test classes"
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ContactTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ContactTraversalTest.java
new file mode 100644
index 0000000..f6319bd
--- /dev/null
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ContactTraversalTest.java
@@ -0,0 +1,53 @@
+package com.apigee.security.oas.extendedvalidator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.ImmutableList;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+import org.openapi4j.parser.model.v3.Contact;
+
+public class ContactTraversalTest {
+
+ @Rule public final MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+ @Mock private TraversalHelperFactory traversalHelperFactory;
+ @Mock private ExtensionFactory extensionFactory;
+ @Mock private Extension extension;
+ @Mock private Contact contact;
+
+ private ContactTraversal contactTraversal;
+
+ /** Sets up live and mocked instances for testing. */
+ @Before
+ public void setup() {
+ contactTraversal =
+ new ContactTraversal(traversalHelperFactory, extensionFactory, ImmutableList.of(), contact);
+ }
+
+ @Test
+ public void traverse_withExtensions_returnsGeneratedExtensions() {
+ when(contact.getExtensions()).thenReturn(Map.of("x-contact", ""));
+ when(extensionFactory.create(anyString(), any(JsonNode.class), any(ImmutableList.class)))
+ .thenReturn(extension);
+
+ assertThat(contactTraversal.traverse()).hasSize(1).containsOnlyOnce(extension);
+ }
+
+ @Test
+ public void traverse_withoutExtensions_returnsEmptyExtensionsImmutableList() {
+ when(contact.getExtensions()).thenReturn(Map.of());
+
+ assertThat(contactTraversal.traverse()).isEmpty();
+ }
+}
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ExternalDocsTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ExternalDocsTraversalTest.java
new file mode 100644
index 0000000..03cdba7
--- /dev/null
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ExternalDocsTraversalTest.java
@@ -0,0 +1,54 @@
+package com.apigee.security.oas.extendedvalidator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.ImmutableList;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+import org.openapi4j.parser.model.v3.ExternalDocs;
+
+public class ExternalDocsTraversalTest {
+
+ @Rule public final MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+ @Mock private TraversalHelperFactory traversalHelperFactory;
+ @Mock private ExtensionFactory extensionFactory;
+ @Mock private Extension extension;
+ @Mock private ExternalDocs externalDocs;
+
+ private ExternalDocsTraversal externalDocsTraversal;
+
+ /** Sets up live and mocked instances for testing. */
+ @Before
+ public void setup() {
+ externalDocsTraversal =
+ new ExternalDocsTraversal(
+ traversalHelperFactory, extensionFactory, externalDocs, ImmutableList.of());
+ }
+
+ @Test
+ public void traverse_withExtensions_returnsGeneratedExtensions() {
+ when(externalDocs.getExtensions()).thenReturn(Map.of("x-external-docs", ""));
+ when(extensionFactory.create(anyString(), any(JsonNode.class), any(ImmutableList.class)))
+ .thenReturn(extension);
+
+ assertThat(externalDocsTraversal.traverse()).hasSize(1).containsOnlyOnce(extension);
+ }
+
+ @Test
+ public void traverse_withoutExtensions_returnsEmptyExtensionsImmutableList() {
+ when(externalDocs.getExtensions()).thenReturn(Map.of());
+
+ assertThat(externalDocsTraversal.traverse()).isEmpty();
+ }
+}
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/LicenseTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/LicenseTraversalTest.java
new file mode 100644
index 0000000..62db0c2
--- /dev/null
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/LicenseTraversalTest.java
@@ -0,0 +1,53 @@
+package com.apigee.security.oas.extendedvalidator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.ImmutableList;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+import org.openapi4j.parser.model.v3.License;
+
+public class LicenseTraversalTest {
+
+ @Rule public final MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+ @Mock private TraversalHelperFactory traversalHelperFactory;
+ @Mock private ExtensionFactory extensionFactory;
+ @Mock private Extension extension;
+ @Mock private License license;
+
+ private LicenseTraversal licenseTraversal;
+
+ /** Sets up live and mocked instances for testing. */
+ @Before
+ public void setup() {
+ licenseTraversal =
+ new LicenseTraversal(traversalHelperFactory, extensionFactory, ImmutableList.of(), license);
+ }
+
+ @Test
+ public void traverse_withExtensions_returnsGeneratedExtensions() {
+ when(license.getExtensions()).thenReturn(Map.of("x-license", ""));
+ when(extensionFactory.create(anyString(), any(JsonNode.class), any(ImmutableList.class)))
+ .thenReturn(extension);
+
+ assertThat(licenseTraversal.traverse()).hasSize(1).containsOnlyOnce(extension);
+ }
+
+ @Test
+ public void traverse_withoutExtensions_returnsEmptyExtensionsImmutableList() {
+ when(license.getExtensions()).thenReturn(Map.of());
+
+ assertThat(licenseTraversal.traverse()).isEmpty();
+ }
+}
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ParameterTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ParameterTraversalTest.java
new file mode 100644
index 0000000..c9bed83
--- /dev/null
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ParameterTraversalTest.java
@@ -0,0 +1,54 @@
+package com.apigee.security.oas.extendedvalidator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.ImmutableList;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+import org.openapi4j.parser.model.v3.Parameter;
+
+public class ParameterTraversalTest {
+
+ @Rule public final MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+ @Mock private TraversalHelperFactory traversalHelperFactory;
+ @Mock private ExtensionFactory extensionFactory;
+ @Mock private Extension extension;
+ @Mock private Parameter parameter;
+
+ private ParameterTraversal parameterTraversal;
+
+ /** Sets up live and mocked instances for testing. */
+ @Before
+ public void setup() {
+ parameterTraversal =
+ new ParameterTraversal(
+ traversalHelperFactory, extensionFactory, ImmutableList.of(), parameter);
+ }
+
+ @Test
+ public void traverse_withExtensions_returnsGeneratedExtensions() {
+ when(parameter.getExtensions()).thenReturn(Map.of("x-parameter", ""));
+ when(extensionFactory.create(anyString(), any(JsonNode.class), any(ImmutableList.class)))
+ .thenReturn(extension);
+
+ assertThat(parameterTraversal.traverse()).hasSize(1).containsOnlyOnce(extension);
+ }
+
+ @Test
+ public void traverse_withoutExtensions_returnsEmptyExtensionsImmutableList() {
+ when(parameter.getExtensions()).thenReturn(Map.of());
+
+ assertThat(parameterTraversal.traverse()).isEmpty();
+ }
+}
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ResponseTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ResponseTraversalTest.java
new file mode 100644
index 0000000..1369c4d
--- /dev/null
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ResponseTraversalTest.java
@@ -0,0 +1,54 @@
+package com.apigee.security.oas.extendedvalidator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.ImmutableList;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+import org.openapi4j.parser.model.v3.Response;
+
+public class ResponseTraversalTest {
+
+ @Rule public final MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+ @Mock private TraversalHelperFactory traversalHelperFactory;
+ @Mock private ExtensionFactory extensionFactory;
+ @Mock private Extension extension;
+ @Mock private Response response;
+
+ private ResponseTraversal responseTraversal;
+
+ /** Sets up live and mocked instances for testing. */
+ @Before
+ public void setup() {
+ responseTraversal =
+ new ResponseTraversal(
+ traversalHelperFactory, extensionFactory, ImmutableList.of(), response, "");
+ }
+
+ @Test
+ public void traverse_withExtensions_returnsGeneratedExtensions() {
+ when(response.getExtensions()).thenReturn(Map.of("x-response", ""));
+ when(extensionFactory.create(anyString(), any(JsonNode.class), any(ImmutableList.class)))
+ .thenReturn(extension);
+
+ assertThat(responseTraversal.traverse()).hasSize(1).containsOnlyOnce(extension);
+ }
+
+ @Test
+ public void traverse_withoutExtensions_returnsEmptyExtensionsImmutableList() {
+ when(response.getExtensions()).thenReturn(Map.of());
+
+ assertThat(responseTraversal.traverse()).isEmpty();
+ }
+}
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/SecurityRequirementTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/SecurityRequirementTraversalTest.java
new file mode 100644
index 0000000..86fc6ef
--- /dev/null
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/SecurityRequirementTraversalTest.java
@@ -0,0 +1,22 @@
+package com.apigee.security.oas.extendedvalidator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.InjectMocks;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+
+public class SecurityRequirementTraversalTest {
+
+ @Rule public final MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+ @InjectMocks private SecurityRequirementTraversal securityRequirementTraversal;
+
+ @Test
+ public void traverse_returnsEmptyExtensionsImmutableList() {
+ assertThat(securityRequirementTraversal.traverse()).isEmpty();
+ }
+}
diff --git a/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ServerVariableTraversalTest.java b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ServerVariableTraversalTest.java
new file mode 100644
index 0000000..4bd05b6
--- /dev/null
+++ b/oas-core/src/test/java/com/apigee/security/oas/extendedvalidator/ServerVariableTraversalTest.java
@@ -0,0 +1,54 @@
+package com.apigee.security.oas.extendedvalidator;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.collect.ImmutableList;
+import java.util.Map;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnit;
+import org.mockito.junit.MockitoRule;
+import org.mockito.quality.Strictness;
+import org.openapi4j.parser.model.v3.ServerVariable;
+
+public class ServerVariableTraversalTest {
+
+ @Rule public final MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.STRICT_STUBS);
+
+ @Mock private TraversalHelperFactory traversalHelperFactory;
+ @Mock private ExtensionFactory extensionFactory;
+ @Mock private Extension extension;
+ @Mock private ServerVariable serverVariable;
+
+ private ServerVariableTraversal serverVariableTraversal;
+
+ /** Sets up live and mocked instances for testing. */
+ @Before
+ public void setup() {
+ serverVariableTraversal =
+ new ServerVariableTraversal(
+ traversalHelperFactory, extensionFactory, ImmutableList.of(), serverVariable, "");
+ }
+
+ @Test
+ public void traverse_withExtensions_returnsGeneratedExtensions() {
+ when(serverVariable.getExtensions()).thenReturn(Map.of("x-serverVariable", ""));
+ when(extensionFactory.create(anyString(), any(JsonNode.class), any(ImmutableList.class)))
+ .thenReturn(extension);
+
+ assertThat(serverVariableTraversal.traverse()).hasSize(1).containsOnlyOnce(extension);
+ }
+
+ @Test
+ public void traverse_withoutExtensions_returnsEmptyExtensionsImmutableList() {
+ when(serverVariable.getExtensions()).thenReturn(Map.of());
+
+ assertThat(serverVariableTraversal.traverse()).isEmpty();
+ }
+}