1 19 20 package com.sslexplorer.security; 21 22 import static org.junit.Assert.assertEquals; 23 import static org.junit.Assert.assertTrue; 24 25 import java.util.Calendar ; 26 import java.util.Iterator ; 27 import java.util.List ; 28 29 import org.junit.BeforeClass; 30 import org.junit.Ignore; 31 import org.junit.Test; 32 33 import com.sslexplorer.boot.PropertyList; 34 import com.sslexplorer.policyframework.AccessRights; 35 import com.sslexplorer.policyframework.Policy; 36 import com.sslexplorer.policyframework.PolicyConstants; 37 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 38 import com.sslexplorer.policyframework.ResourceType; 39 import com.sslexplorer.realms.Realm; 40 import com.sslexplorer.testcontainer.policyframework.AbstractTestPolicyEnabledResource; 41 42 44 public class AuthenticationSchemeTest extends AbstractTestPolicyEnabledResource<AuthenticationScheme> { 45 48 @BeforeClass 49 public static void oneTimeSetUp() throws Exception { 50 setUp(""); 51 } 52 53 @Override 54 public ResourceType getResourceType() throws Exception { 55 return PolicyConstants.AUTHENTICATION_SCHEMES_RESOURCE_TYPE; 56 } 57 58 @Override 59 public AuthenticationScheme getEmptyResource() throws Exception { 60 Calendar calendar = Calendar.getInstance(); 61 return new DefaultAuthenticationScheme(-1, -1, "", "", calendar, calendar, true, 0); 62 } 63 64 @Override 65 public AuthenticationScheme getNormalResource() throws Exception { 66 Calendar calendar = Calendar.getInstance(); 67 return new DefaultAuthenticationScheme(getDefaultRealm().getRealmID(), -1, "resourceName", "resourceDescription", calendar, calendar, true, 0); 68 } 69 70 @Override 71 public AuthenticationScheme getNullResource() throws Exception { 72 Calendar calendar = Calendar.getInstance(); 73 return new DefaultAuthenticationScheme(-1, -1, null, null, calendar, calendar, true, 0); 74 } 75 76 @Override 77 public AuthenticationScheme createResource(AuthenticationScheme resource) throws Exception { 78 return SystemDatabaseFactory.getInstance().createAuthenticationSchemeSequence(resource.getRealmID(), resource.getResourceName(), resource.getResourceDescription(), resource.getModules(), resource.getEnabled(), resource.getPriorityInt()); 79 } 80 81 @Override 82 public AuthenticationScheme updateResource(AuthenticationScheme resource) throws Exception { 83 SystemDatabaseFactory.getInstance().updateAuthenticationSchemeSequence((AuthenticationScheme)resource); 84 return SystemDatabaseFactory.getInstance().getAuthenticationSchemeSequence(resource.getResourceId()); 85 } 86 87 @Override 88 public AuthenticationScheme deleteResource(AuthenticationScheme resource) throws Exception { 89 AuthenticationScheme authenticationScheme = getResource(resource); 90 SystemDatabaseFactory.getInstance().deleteAuthenticationSchemeSequence(resource.getResourceId()); 91 return authenticationScheme; 92 } 93 94 @Override 95 public AuthenticationScheme getResource(AuthenticationScheme resource) throws Exception { 96 return SystemDatabaseFactory.getInstance().getAuthenticationSchemeSequence(resource.getResourceId()); 97 } 98 99 @Override 100 public List <AuthenticationScheme> getAllResources() throws Exception { 101 return SystemDatabaseFactory.getInstance().getAuthenticationSchemeSequences(); 102 } 103 104 @Test 105 public void checkResourceAccessRights() throws Exception { 106 Realm realm = getUserService().getRealm(1); 107 Policy policy = createPolicy(realm); 108 User user = createAccount(); 109 getPolicyService().grantPolicyToPrincipal(policy, user); 110 111 AccessRights accessRights = createAssignAccessRights(getResourceType().getPermissionClass()); 112 PropertyList selectedPolicies = PropertyList.createFromArray(new int[] {policy.getResourceId()}); 113 PolicyDatabaseFactory.getInstance().attachResourceToPolicyList(accessRights, selectedPolicies, getSessionInfo()); 114 AuthenticationScheme resource = createResource(); 115 assertTrue("Should be, as one already exists.", getPolicyService().isPrincipalGrantedResourcesOfType(user, resource.getResourceType(), null)); 116 assertEquals("Should be four.", getPolicyService().getGrantedResourcesOfType(user, getResourceType()).size(), 4); 117 118 PolicyDatabaseFactory.getInstance().attachResourceToPolicyList(resource, selectedPolicies, getSessionInfo()); 119 assertEquals("Should be five.", getPolicyService().getGrantedResourcesOfType(user, getResourceType()).size(), 5); 120 121 PolicyDatabaseFactory.getInstance().detachResourceFromPolicyList(resource, getSessionInfo()); 122 assertEquals("Should be four.", getPolicyService().getGrantedResourcesOfType(user, getResourceType()).size(), 4); 123 getPolicyService().revokePolicyFromPrincipal(policy, user); 124 getUserService().getDefaultUserDatabase().deleteAccount(user); 125 126 PolicyDatabaseFactory.getInstance().detachResourceFromPolicyList(accessRights, getSessionInfo()); 127 deleteResource(resource); 128 getPolicyService().deleteAccessRights(accessRights.getResourceId()); 129 getPolicyService().deletePolicy(policy.getResourceId()); 130 } 131 132 137 @Test 138 public void createAuthSchWithSamePriority() throws Exception { 139 Calendar calendar = Calendar.getInstance(); 140 AuthenticationScheme authenticationScheme = new DefaultAuthenticationScheme(getDefaultRealm().getRealmID(), -1, "resourceName", "resourceDescription", calendar, calendar, true, 1); 141 AuthenticationScheme createdAuthenticationScheme = createResource(authenticationScheme); 142 assertEquals("There should be only one AuthenticationScheme", 1, getAllResources().size()); 143 AuthenticationScheme authenticationScheme2 = new DefaultAuthenticationScheme(getDefaultRealm().getRealmID(), -1, "resourceName2", "resourceDescription2", calendar, calendar, true, 1); 144 AuthenticationScheme createdAuthenticationScheme2 = createResource(authenticationScheme2); 145 assertEquals("There should be two AuthenticationScheme", 2, getAllResources().size()); 146 deleteResource(createdAuthenticationScheme); 147 deleteResource(createdAuthenticationScheme2); 148 assertTrue("Should have none", getAllResources().isEmpty()); 149 } 150 151 154 @Test 155 public void addModulesToAuth() throws Exception { 156 AuthenticationScheme authenticationScheme = (DefaultAuthenticationScheme)createResource(); 157 assertEquals("There should be only one AuthenticationScheme", 1, getAllResources().size()); 158 159 for (Iterator ite = AuthenticationModuleManager.getInstance().authenticationModuleDefinitions(); ite.hasNext();) { 160 AuthenticationModuleDefinition definition = (AuthenticationModuleDefinition)ite.next(); 161 authenticationScheme.addModule(definition.getName()); 162 } 163 updateResource(authenticationScheme); 164 deleteResource(authenticationScheme); 165 assertTrue("Should have none", getAllResources().isEmpty()); 166 } 167 168 171 @Test 172 public void deleteModulesFromAuth() throws Exception { 173 AuthenticationScheme authenticationScheme = (DefaultAuthenticationScheme)createResource(); 174 assertEquals("There should be only one AuthenticationScheme", 1, getAllResources().size()); 175 176 for (Iterator ite = AuthenticationModuleManager.getInstance().authenticationModuleDefinitions(); ite.hasNext();) { 177 AuthenticationModuleDefinition definition = (AuthenticationModuleDefinition)ite.next(); 178 authenticationScheme.removeModule(definition.getName()); 179 } 180 updateResource(authenticationScheme); 181 deleteResource(authenticationScheme); 182 assertTrue("Should have none", getAllResources().isEmpty()); 183 } 184 185 188 @Test 189 public void registerDeregisterModule() throws Exception { 190 String module = "EmbeddedClientTest"; 191 AuthenticationModuleManager.getInstance().registerModule(module, EmbeddedClientAuthenticationModule.class, "security", true, false, true); 192 assertTrue("This module should be registered", AuthenticationModuleManager.getInstance().isRegistered(module)); 193 AuthenticationModuleManager.getInstance().deregisterModule(module); 194 assertTrue("This module should not be registered", !AuthenticationModuleManager.getInstance().isRegistered(module)); 195 } 196 197 200 @Ignore ("This test should be able to run but there is no control at the moment.") 201 @Test 202 public void deleteAllAuthenticationScheme() throws Exception { 203 List listAuth = SystemDatabaseFactory.getInstance().getAuthenticationSchemeSequences(); 204 for (Iterator ite = listAuth.iterator(); ite.hasNext();) { 205 AuthenticationScheme auth = (AuthenticationScheme)ite.next(); 206 SystemDatabaseFactory.getInstance().deleteAuthenticationSchemeSequence(auth.getResourceId()); 207 } 208 assertEquals("Should have none", 0, SystemDatabaseFactory.getInstance().getAuthenticationSchemeSequences().size()); 209 } 210 } | Popular Tags |