1 package org.onap.vid.services
3 import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
4 import com.fasterxml.jackson.module.kotlin.readValue
5 import net.javacrumbs.jsonunit.JsonMatchers.jsonEquals
6 import net.javacrumbs.jsonunit.JsonMatchers.jsonPartEquals
7 import org.hamcrest.CoreMatchers.allOf
8 import org.hamcrest.MatcherAssert.assertThat
9 import org.intellij.lang.annotations.Language
10 import org.mockito.ArgumentMatchers.any
11 import org.mockito.InjectMocks
12 import org.mockito.Mock
13 import org.mockito.Mockito
14 import org.mockito.Mockito.mock
15 import org.mockito.invocation.InvocationOnMock
16 import org.onap.vid.category.CategoryParameterOptionRep
17 import org.onap.vid.category.CategoryParametersResponse
18 import org.onap.vid.roles.RoleProvider
19 import org.onap.vid.roles.RoleValidator
20 import org.onap.vid.services.CategoryParameterServiceWithRoles.OwningEntityOptionRep
21 import org.onap.vid.testUtils.TestUtils
22 import org.testng.annotations.BeforeMethod
23 import org.testng.annotations.Test
24 import org.togglz.core.manager.FeatureManager
25 import javax.servlet.http.HttpServletRequest
26 import org.mockito.Mockito.`when` as _when
28 class CategoryParameterServiceWithRolesTest {
30 @Mock lateinit var categoryParameterService: CategoryParameterService
31 @Mock lateinit var featureManager: FeatureManager
32 @Mock lateinit var roleProvider: RoleProvider
33 @Mock lateinit var request: HttpServletRequest
35 private lateinit var alwaysTrueRoles: RoleValidator
36 private lateinit var alwaysFalseRoles: RoleValidator
39 lateinit var categoryParameterServiceWithRoles: CategoryParameterServiceWithRoles;
43 TestUtils.initMockitoMocks(this)
45 alwaysTrueRoles = mock(RoleValidator::class.java, Mockito.withSettings().defaultAnswer { o: InvocationOnMock? -> true })
46 alwaysFalseRoles = mock(RoleValidator::class.java)
50 fun `treatPermissions -- given no permissions -- owningEntity lists is empty, the rest left intact`() {
51 _when(roleProvider.getUserRolesValidator(any())).thenReturn(alwaysFalseRoles)
54 categoryParameterServiceWithRoles.treatPermissions(categoryParametersResponse),
56 jsonPartEquals("categoryParameters.owningEntity", emptyList<Any>()),
57 jsonEquals<CategoryParametersResponse>(categoryParametersResponse)
58 .whenIgnoringPaths("categoryParameters.owningEntity")
64 fun `treatPermissions -- given all permissions -- response left intact`() {
65 _when(roleProvider.getUserRolesValidator(any())).thenReturn(alwaysTrueRoles)
68 categoryParameterServiceWithRoles.treatPermissions(categoryParametersResponse),
69 jsonEquals(categoryParametersResponse)
74 fun `treatPermissions -- given permission to WayneHolland -- only one owningEntity WayneHolland is left`() {
75 val wayneHolland = CategoryParameterOptionRep("d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "WayneHolland")
77 val roleValidatorForWayneHolland = mock(RoleValidator::class.java)
78 _when(roleValidatorForWayneHolland.isServicePermitted(OwningEntityOptionRep(wayneHolland))).thenReturn(true)
80 _when(roleProvider.getUserRolesValidator(any())).thenReturn(roleValidatorForWayneHolland)
83 categoryParameterServiceWithRoles.treatPermissions(categoryParametersResponse),
84 jsonPartEquals("categoryParameters.owningEntity", listOf(wayneHolland))
90 @Language("JSON") val categoryParametersResponse: CategoryParametersResponse =
91 jacksonObjectMapper().readValue("""
93 "categoryParameters": {
95 { "id": "ONAP", "name": "ONAP" },
96 { "id": "zzz1", "name": "zzz1" }
99 { "id": "b1a9a80e-71b8-4176-9ac6-d265bf30e9d9", "name": "Melissa" },
100 { "id": "d61e6f2d-12fa-4cc2-91df-7c244011d6fc", "name": "WayneHolland" }
103 { "id": "WATKINS", "name": "WATKINS" },
104 { "id": "yyy1", "name": "yyy1" }
107 { "id": "platform", "name": "platform" },
108 { "id": "xxx1", "name": "xxx1" }