Added more unit tests and fix import
[clamp.git] / src / test / java / org / onap / clamp / clds / it / AuthorizationControllerItCase.java
index 58d9468..ab4421f 100644 (file)
@@ -5,6 +5,8 @@
  * Copyright (C) 2019 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -25,26 +27,26 @@ package org.onap.clamp.clds.it;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-
-import java.io.IOException;
-import java.util.LinkedList;
 import java.util.List;
 
+import org.apache.camel.Exchange;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
 import org.mockito.Mockito;
+import org.mockito.Spy;
 import org.onap.clamp.authorization.AuthorizationController;
+import org.onap.clamp.clds.config.ClampProperties;
+import org.onap.clamp.clds.exception.NotAuthorizedException;
 import org.onap.clamp.clds.service.SecureServicePermission;
 import org.onap.clamp.util.PrincipalUtils;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.mock.env.MockEnvironment;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.context.SecurityContext;
 import org.springframework.security.core.userdetails.User;
 import org.springframework.test.context.junit4.SpringRunner;
@@ -57,39 +59,59 @@ import org.springframework.test.context.junit4.SpringRunner;
 @SpringBootTest
 public class AuthorizationControllerItCase {
 
-    protected static final EELFLogger logger = EELFManager.getInstance().getLogger(AuthorizationControllerItCase.class);
-    private Authentication authentication;
-    private List<GrantedAuthority> authList = new LinkedList<GrantedAuthority>();
+    private PermissionTestDefaultHelper permissionTestHelper = new PermissionTestDefaultHelper();
+
+    @Spy
+    MockEnvironment env;
+
+    @Spy
+    @InjectMocks
+    private ClampProperties clampProp = new ClampProperties();
+
+    @InjectMocks
+    private AuthorizationController auth;
 
     /**
      * Setup the variable before the tests execution.
-     *
-     * @throws IOException
-     *         In case of issues when opening the files
      */
     @Before
-    public void setupBefore() throws IOException {
-        authList.add(new SimpleGrantedAuthority("permission-type-cl-manage|dev|*"));
-        authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|read"));
-        authList.add(new SimpleGrantedAuthority("permission-type-cl|dev|update"));
-        authList.add(new SimpleGrantedAuthority("permission-type-template|dev|read"));
-        authList.add(new SimpleGrantedAuthority("permission-type-template|dev|update"));
-        authList.add(new SimpleGrantedAuthority("permission-type-filter-vf|dev|*"));
-        authList.add(new SimpleGrantedAuthority("permission-type-cl-event|dev|*"));
-
-        authentication = new UsernamePasswordAuthenticationToken(new User("admin", "", authList), "", authList);
-    }
+    public void setupBefore() {
+        permissionTestHelper.setupMockEnv(env);
+        List<GrantedAuthority> authList = permissionTestHelper.getAuthList();
 
-    @Test
-    public void testIsUserPermittedNoException() {
         SecurityContext securityContext = Mockito.mock(SecurityContext.class);
-        Mockito.when(securityContext.getAuthentication()).thenReturn(authentication);
+        Mockito.when(securityContext.getAuthentication()).thenReturn(
+                new UsernamePasswordAuthenticationToken(new User("admin", "", authList),
+                        "", authList)
+        );
         PrincipalUtils.setSecurityContext(securityContext);
+    }
 
-        AuthorizationController auth = new AuthorizationController();
+    @Test
+    public void testIsUserPermitted() {
         assertTrue(auth.isUserPermitted(new SecureServicePermission("permission-type-cl","dev","read")));
         assertTrue(auth.isUserPermitted(new SecureServicePermission("permission-type-cl-manage","dev","DEPLOY")));
-        assertTrue(auth.isUserPermitted(new SecureServicePermission("permission-type-filter-vf","dev","12345-55555-55555-5555")));
+        assertTrue(auth.isUserPermitted(new SecureServicePermission("permission-type-filter-vf","dev",
+                "12345-55555-55555-5555")));
         assertFalse(auth.isUserPermitted(new SecureServicePermission("permission-type-cl","test","read")));
     }
+
+    @Test
+    public void testIfUserAuthorize() {
+        Exchange ex = Mockito.mock(Exchange.class);
+        try {
+            permissionTestHelper.doActionOnAllPermissions(((type, instance, action) ->
+                        auth.authorize(ex, type, instance, action)
+                    )
+            );
+        } catch (NotAuthorizedException e) {
+            fail(e.getMessage());
+        }
+    }
+
+    @Test(expected = NotAuthorizedException.class)
+    public void testIfAuthorizeThrowException() {
+        Exchange ex = Mockito.mock(Exchange.class);
+        auth.authorize(ex,"permission-type-cl","test","read");
+    }
 }