Package gov.nasa.arc.mct.identitymgr.impl

Source Code of gov.nasa.arc.mct.identitymgr.impl.TestDefaultIdentityManager

package gov.nasa.arc.mct.identitymgr.impl;

import gov.nasa.arc.mct.platform.spi.PersistenceProvider;
import gov.nasa.arc.mct.platform.spi.Platform;
import gov.nasa.arc.mct.platform.spi.PlatformAccess;
import gov.nasa.arc.mct.platform.spi.WindowManager;
import gov.nasa.arc.mct.services.internal.component.User;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;


public class TestDefaultIdentityManager {

    // Some sample users & corresponding groups
    private String[] users = {
            "mockUser", "mockAdmin", "mockOther"
    };   
    private String[] groups = {
            "users", "admin", "other"
    };
   
    private Platform oldPlatform;
    @Mock Platform mockPlatform;
    @Mock PersistenceProvider mockPersistence;
    @Mock WindowManager mockWindowing;
    @Mock Properties mockProperties;
   
    @BeforeClass
    public void setup() {
        oldPlatform = PlatformAccess.getPlatform();
    }
   
    @AfterClass
    public void teardown() {
        new PlatformAccess().setPlatform(oldPlatform);
    }
   
    @BeforeMethod
    public void setupMethod() {
        MockitoAnnotations.initMocks(this);
       
        Mockito.when(mockPlatform.getPersistenceProvider()).thenReturn(mockPersistence);
        Mockito.when(mockPlatform.getWindowManager()).thenReturn(mockWindowing);

        // Expose sample users/groups through persistence
        for (int i = 0; i < 3; i++) {
            User mockUser = Mockito.mock(User.class);
            Mockito.when(mockUser.getUserId()).thenReturn(users[i]);
            Mockito.when(mockUser.getDisciplineId()).thenReturn(groups[i]);
            Mockito.when(mockPersistence.getUser(users[i])).thenReturn(mockUser);
        }
        Set<String> userSet = new HashSet<String>();
        userSet.addAll(Arrays.<String>asList(users));       
        Mockito.when(mockPersistence.getAllUsers()).thenReturn(userSet);
       
        new PlatformAccess().setPlatform(mockPlatform);
    }
   
    @Test
    public void testMonitorDisabled() {
        // The default identity manager should have no monitor
        Assert.assertFalse(new DefaultIdentityManager(mockProperties).isMonitorRunning());
    }
       
    @Test
    public void testNoDialogForNoUsers() {
        // No input dialog should be shown if there are no users in the DB
        Mockito.when(mockPersistence.getAllUsers()).thenReturn(Collections.<String>emptySet());       
        new DefaultIdentityManager(mockProperties).getCurrentUser();       
        Mockito.verify(mockWindowing, Mockito.never()).showInputDialog(Mockito.anyString(), Mockito.anyString(), Mockito.<Object[]>any(), Mockito.any(), Mockito.<Map<String,Object>>any());
    }
   
    @Test
    public void testNoDialogForOneUsers() {
        // No input dialog should be shown if there are 1 user in the DB
        Set<String> oneElementSet = new HashSet<String>();
        oneElementSet.add("testUser1");
        Mockito.when(mockPersistence.getAllUsers()).thenReturn(oneElementSet);      
        new DefaultIdentityManager(mockProperties).getCurrentUser();       
        Mockito.verify(mockWindowing, Mockito.never()).showInputDialog(Mockito.anyString(), Mockito.anyString(), Mockito.<Object[]>any(), Mockito.any(), Mockito.<Map<String,Object>>any());
    }
   
    @Test
    public void testDialogForUsers() {
        // If multiple users are present, input dialog should be shown                    
        new DefaultIdentityManager(mockProperties).getCurrentUser();       
        Mockito.verify(mockWindowing, Mockito.times(1)).showInputDialog(Mockito.anyString(), Mockito.anyString(), Mockito.<Object[]>any(), Mockito.any(), Mockito.<Map<String,Object>>any());
    }
   
    @Test
    public void testSelectionForUsers() {
        // Verify that IdentityManager matches selection from shown dialog              
        for (int i = 0; i < 3; i++) {
            Mockito.when(mockWindowing.showInputDialog(Mockito.anyString(), Mockito.anyString(), Mockito.<Object[]>any(), Mockito.any(), Mockito.<Map<String,Object>>any())).thenReturn(users[i]);
            IdentityManager identityManager = new DefaultIdentityManager(mockProperties);       
            Assert.assertEquals(identityManager.getCurrentUser(), users[i]);
            Assert.assertEquals(identityManager.getCurrentGroup(), groups[i]);
        }
    }
   
    @Test
    public void testMatchesMCTProperties() {
        // Here, we make sure that specifying mct.user still works with this identity manager
        for (int i = 0; i < 3; i++) {
            Mockito.when(mockProperties.getProperty("mct.user")).thenReturn(users[i]);
            IdentityManager identityManager = new DefaultIdentityManager(mockProperties);  
            // Input dialog should not be shown - mct.user was set!
            Mockito.verify(mockWindowing, Mockito.never()).showInputDialog(Mockito.anyString(), Mockito.anyString(), Mockito.<Object[]>any(), Mockito.any(), Mockito.<Map<String,Object>>any());
           
            // But we should still have "loaded" the requested user
            Assert.assertEquals(identityManager.getCurrentUser(), users[i]);
            Assert.assertEquals(identityManager.getCurrentGroup(), groups[i]);
           
            // Finally, ensure there's still no monitor
            Assert.assertFalse(identityManager.isMonitorRunning());
        }
    }
   
}
TOP

Related Classes of gov.nasa.arc.mct.identitymgr.impl.TestDefaultIdentityManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.