Unit test fails due to cleanup
[clamp.git] / src / test / java / org / onap / clamp / clds / it / AuthorizationControllerItCase.java
index a15c556..207e936 100644 (file)
@@ -5,6 +5,9 @@
  * Copyright (C) 2019 AT&T Intellectual Property. All rights
  *                             reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2019 Samsung
+ * Modifications Copyright (C) 2020 Nordix Foundation.
+ * ================================================================================
  * 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
 
 package org.onap.clamp.clds.it;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
-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.junit.Before;
+import java.util.Arrays;
+import java.util.Collection;
+import org.apache.camel.Exchange;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
 import org.onap.clamp.authorization.AuthorizationController;
-import org.onap.clamp.clds.service.SecureServicePermission;
-import org.onap.clamp.util.PrincipalUtils;
+import org.onap.clamp.authorization.SecureServicePermission;
+import org.onap.clamp.clds.exception.NotAuthorizedException;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
-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.security.core.context.SecurityContextHolder;
 import org.springframework.test.context.junit4.SpringRunner;
 
 /**
@@ -54,42 +55,83 @@ import org.springframework.test.context.junit4.SpringRunner;
  * and stored procedures.
  */
 @RunWith(SpringRunner.class)
-@SpringBootTest
+@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 public class AuthorizationControllerItCase {
 
-    protected static final EELFLogger logger = EELFManager.getInstance().getLogger(AuthorizationControllerItCase.class);
-    private Authentication authentication;
-    private List<GrantedAuthority> authList = new LinkedList<GrantedAuthority>();
+    @Autowired
+    private AuthorizationController auth;
+
+    private static SecurityContext sc = SecurityContextHolder.getContext();
 
     /**
      * 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);
+    @BeforeClass
+    public static void setupBefore() {
+
+        sc.setAuthentication(new Authentication() {
+            @Override
+            public Collection<? extends GrantedAuthority> getAuthorities() {
+                return Arrays.asList(new SimpleGrantedAuthority(
+                                new SecureServicePermission("permission-type-cl", "dev", "read").getKey()),
+                        new SimpleGrantedAuthority(new SecureServicePermission("permission-type-cl-manage", "dev",
+                                "DEPLOY").getKey()),
+                        new SimpleGrantedAuthority(new SecureServicePermission("permission-type-filter-vf", "dev",
+                                "12345-55555-55555-5555").getKey()));
+            }
+
+            @Override
+            public Object getCredentials() {
+                return null;
+            }
+
+            @Override
+            public Object getDetails() {
+                return null;
+            }
+
+            @Override
+            public Object getPrincipal() {
+                return "admin";
+            }
+
+            @Override
+            public boolean isAuthenticated() {
+                return true;
+            }
+
+            @Override
+            public void setAuthenticated(boolean authenticatedFlag) throws IllegalArgumentException {
+
+            }
+
+            @Override
+            public String getName() {
+                return "admin";
+            }
+        });
+
+    }
+
+    @AfterClass
+
+    public static void afterCleanup() {
+        sc.setAuthentication(null);
     }
 
     @Test
-    public void testIsUserPermittedNoException() {
-        SecurityContext securityContext = Mockito.mock(SecurityContext.class);
-        Mockito.when(securityContext.getAuthentication()).thenReturn(authentication);
-        PrincipalUtils.setSecurityContext(securityContext);
-
-        AuthorizationController auth = new AuthorizationController();
-        assertTrue(auth.isUserPermittedNoException(new SecureServicePermission("permission-type-cl","dev","read")));
-        assertTrue(auth.isUserPermittedNoException(new SecureServicePermission("permission-type-cl-manage","dev","DEPLOY")));
-        assertTrue(auth.isUserPermittedNoException(new SecureServicePermission("permission-type-filter-vf","dev","12345-55555-55555-5555")));
-        assertFalse(auth.isUserPermittedNoException(new SecureServicePermission("permission-type-cl","test","read")));
+    public void testIsUserPermitted() {
+        assertEquals(AuthorizationController.getPrincipalName(sc),"admin");
+        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")));
+        assertFalse(auth.isUserPermitted(new SecureServicePermission("permission-type-cl", "test", "read")));
+    }
+
+    @Test(expected = NotAuthorizedException.class)
+    public void testIfAuthorizeThrowException() {
+        Exchange ex = Mockito.mock(Exchange.class);
+        auth.authorize(ex, "cl", "test", "read");
     }
 }