summaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/test
diff options
context:
space:
mode:
authorIttay Stern <ittay.stern@att.com>2020-02-11 13:56:54 +0200
committerIttay Stern <ittay.stern@att.com>2020-02-11 14:34:33 +0200
commit7bc81973c823789debc000858f7777d120709ac4 (patch)
treec97627390ff5f28ef56e347e266a7f1a41f43ff0 /vid-app-common/src/test
parent45b0eb72cde7a950579e74c62bee198e0a36acf7 (diff)
Filter owning-entities from /category_parameter by permissions
Implemented in CategoryParameterServiceWithRoles and injected to MaintenanceController, but still reachable because shouldTreatPermissions() is "false". Issue-ID: VID-758 Change-Id: I716202ca944af9b0de9c151d75d50b5df41a8171 Signed-off-by: Ittay Stern <ittay.stern@att.com>
Diffstat (limited to 'vid-app-common/src/test')
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/controller/PropertyControllerTest.java3
-rw-r--r--vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceWithRolesTest.kt114
2 files changed, 116 insertions, 1 deletions
diff --git a/vid-app-common/src/test/java/org/onap/vid/controller/PropertyControllerTest.java b/vid-app-common/src/test/java/org/onap/vid/controller/PropertyControllerTest.java
index fd8fdcf54..7fcf0fe38 100644
--- a/vid-app-common/src/test/java/org/onap/vid/controller/PropertyControllerTest.java
+++ b/vid-app-common/src/test/java/org/onap/vid/controller/PropertyControllerTest.java
@@ -39,6 +39,7 @@ import org.onap.vid.category.CategoryParameterOptionRep;
import org.onap.vid.category.CategoryParametersResponse;
import org.onap.vid.model.CategoryParameter.Family;
import org.onap.vid.services.CategoryParameterService;
+import org.onap.vid.services.CategoryParameterServiceWithRoles;
import org.onap.vid.utils.SystemPropertiesWrapper;
import org.springframework.http.MediaType;
import org.springframework.test.web.servlet.MockMvc;
@@ -58,7 +59,7 @@ public class PropertyControllerTest {
private ObjectMapper objectMapper;
@Mock
- private CategoryParameterService service;
+ private CategoryParameterServiceWithRoles service;
@Mock
private SystemPropertiesWrapper systemPropertiesWrapper;
diff --git a/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceWithRolesTest.kt b/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceWithRolesTest.kt
new file mode 100644
index 000000000..2582012d9
--- /dev/null
+++ b/vid-app-common/src/test/java/org/onap/vid/services/CategoryParameterServiceWithRolesTest.kt
@@ -0,0 +1,114 @@
+package org.onap.vid.services
+
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+import com.fasterxml.jackson.module.kotlin.readValue
+import net.javacrumbs.jsonunit.JsonMatchers.jsonEquals
+import net.javacrumbs.jsonunit.JsonMatchers.jsonPartEquals
+import org.hamcrest.CoreMatchers.allOf
+import org.hamcrest.MatcherAssert.assertThat
+import org.intellij.lang.annotations.Language
+import org.mockito.ArgumentMatchers.any
+import org.mockito.InjectMocks
+import org.mockito.Mock
+import org.mockito.Mockito
+import org.mockito.Mockito.mock
+import org.mockito.invocation.InvocationOnMock
+import org.onap.vid.category.CategoryParameterOptionRep
+import org.onap.vid.category.CategoryParametersResponse
+import org.onap.vid.roles.RoleProvider
+import org.onap.vid.roles.RoleValidator
+import org.onap.vid.services.CategoryParameterServiceWithRoles.OwningEntityOptionRep
+import org.onap.vid.testUtils.TestUtils
+import org.testng.annotations.BeforeMethod
+import org.testng.annotations.Test
+import org.togglz.core.manager.FeatureManager
+import javax.servlet.http.HttpServletRequest
+import org.mockito.Mockito.`when` as _when
+
+class CategoryParameterServiceWithRolesTest {
+
+ @Mock lateinit var categoryParameterService: CategoryParameterService
+ @Mock lateinit var featureManager: FeatureManager
+ @Mock lateinit var roleProvider: RoleProvider
+ @Mock lateinit var request: HttpServletRequest
+
+ private lateinit var alwaysTrueRoles: RoleValidator
+ private lateinit var alwaysFalseRoles: RoleValidator
+
+ @InjectMocks
+ lateinit var categoryParameterServiceWithRoles: CategoryParameterServiceWithRoles;
+
+ @BeforeMethod
+ fun initMocks() {
+ TestUtils.initMockitoMocks(this)
+
+ alwaysTrueRoles = mock(RoleValidator::class.java, Mockito.withSettings().defaultAnswer { o: InvocationOnMock? -> true })
+ alwaysFalseRoles = mock(RoleValidator::class.java)
+ }
+
+ @Test
+ fun `treatPermissions -- given no permissions -- owningEntity lists is empty, the rest left intact`() {
+ _when(roleProvider.getUserRolesValidator(any())).thenReturn(alwaysFalseRoles)
+
+ assertThat(
+ categoryParameterServiceWithRoles.treatPermissions(categoryParametersResponse),
+ allOf(
+ jsonPartEquals("categoryParameters.owningEntity", emptyList<Any>()),
+ jsonEquals<CategoryParametersResponse>(categoryParametersResponse)
+ .whenIgnoringPaths("categoryParameters.owningEntity")
+ )
+ )
+ }
+
+ @Test
+ fun `treatPermissions -- given all permissions -- response left intact`() {
+ _when(roleProvider.getUserRolesValidator(any())).thenReturn(alwaysTrueRoles)
+
+ assertThat(
+ categoryParameterServiceWithRoles.treatPermissions(categoryParametersResponse),
+ jsonEquals(categoryParametersResponse)
+ )
+ }
+
+ @Test
+ fun `treatPermissions -- given permission to WayneHolland -- only one owningEntity WayneHolland is left`() {
+ val wayneHolland = CategoryParameterOptionRep("d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland")
+
+ val roleValidatorForWayneHolland = mock(RoleValidator::class.java)
+ _when(roleValidatorForWayneHolland.isServicePermitted(OwningEntityOptionRep(wayneHolland))).thenReturn(true)
+
+ _when(roleProvider.getUserRolesValidator(any())).thenReturn(roleValidatorForWayneHolland)
+
+ assertThat(
+ categoryParameterServiceWithRoles.treatPermissions(categoryParametersResponse),
+ jsonPartEquals("categoryParameters.owningEntity", listOf(wayneHolland))
+ )
+ }
+
+
+
+ @Language("JSON") val categoryParametersResponse: CategoryParametersResponse =
+ jacksonObjectMapper().readValue("""
+ {
+ "categoryParameters": {
+ "lineOfBusiness": [
+ { "id": "ONAP", "name": "ONAP" },
+ { "id": "zzz1", "name": "zzz1" }
+ ],
+ "owningEntity": [
+ { "id": "b1a9a80e-71b8-4176-9ac6-d265bf30e9d9", "name": "Melissa" },
+ { "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "name": "WayneHolland" }
+ ],
+ "project": [
+ { "id": "WATKINS", "name": "WATKINS" },
+ { "id": "yyy1", "name": "yyy1" }
+ ],
+ "platform": [
+ { "id": "platform", "name": "platform" },
+ { "id": "xxx1", "name": "xxx1" }
+ ]
+ }
+ }""")
+
+
+} \ No newline at end of file