package de.persosim.simulator.secstatus; import java.util.HashMap; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import de.persosim.simulator.protocols.GenericOid; import de.persosim.simulator.protocols.Oid; import de.persosim.simulator.protocols.ta.Authorization; import de.persosim.simulator.test.PersoSimTestCase; import de.persosim.simulator.utils.BitField; import de.persosim.simulator.utils.HexString; public class AuthorizationStoreTest extends PersoSimTestCase { byte [] field0Content, field1Content, field2Content, field3Content; BitField field0, field1, field2, field3; Authorization auth0, auth1, auth2, auth3; Oid oid1, oid2, oid3; @Before public void setUp(){ field0Content = new byte []{(byte) 0x00, (byte) 0x00}; field1Content = new byte []{(byte) 0x00, (byte) 0b01000000}; field2Content = new byte []{(byte) 0x00, (byte) 0b00100000}; field3Content = new byte []{(byte) 0x00, (byte) 0b00010000}; field0 = BitField.buildFromBigEndian(16, field0Content); field1 = BitField.buildFromBigEndian(16, field1Content); field2 = BitField.buildFromBigEndian(16, field2Content); field3 = BitField.buildFromBigEndian(16, field3Content); auth0 = new Authorization(field0); auth1 = new Authorization(field1); auth2 = new Authorization(field2); auth3 = new Authorization(field3); oid1 = new GenericOid(HexString.toByteArray("0011")); oid2 = new GenericOid(HexString.toByteArray("001122")); oid3 = new GenericOid(HexString.toByteArray("00112233")); } /** * This test checks equals for same objects */ @Test public void testEquals_Same(){ HashMap<Oid, Authorization> auths1 = new HashMap<>(); auths1.put(oid1, auth1); auths1.put(oid2, auth2); AuthorizationStore authStore1 = new AuthorizationStore(auths1); HashMap<Oid, Authorization> auths2 = new HashMap<>(); auths2.put(oid1, auth1); auths2.put(oid2, auth2); AuthorizationStore authStore2 = new AuthorizationStore(auths2); assertEquals(authStore1, authStore2); } /** * This test checks equals for different number of registered OIDs */ @Test public void testEquals_DifferentOids(){ HashMap<Oid, Authorization> auths1 = new HashMap<>(); auths1.put(oid1, auth1); auths1.put(oid2, auth2); AuthorizationStore authStore1 = new AuthorizationStore(auths1); HashMap<Oid, Authorization> auths2 = new HashMap<>(); auths2.put(oid1, auth1); auths2.put(oid2, auth2); auths2.put(oid3, auth0); AuthorizationStore authStore2 = new AuthorizationStore(auths2); assertNotEquals(authStore1, authStore2); } /** * This test checks equals for different authorizations registered for same OIDs */ @Test public void testEquals_DifferentAuths(){ HashMap<Oid, Authorization> auths1 = new HashMap<>(); auths1.put(oid1, auth1); auths1.put(oid2, auth2); AuthorizationStore authStore1 = new AuthorizationStore(auths1); HashMap<Oid, Authorization> auths2 = new HashMap<>(); auths2.put(oid1, auth1); auths2.put(oid2, auth0); AuthorizationStore authStore2 = new AuthorizationStore(auths2); assertNotEquals(authStore1, authStore2); } /** * This test checks updating authorizations for same objects */ @Test public void testUpdateAuthorization_Same(){ HashMap<Oid, Authorization> auths1 = new HashMap<>(); auths1.put(oid1, auth1); auths1.put(oid2, auth2); AuthorizationStore authStore1 = new AuthorizationStore(auths1); HashMap<Oid, Authorization> auths2 = new HashMap<>(); auths2.put(oid1, auth1); auths2.put(oid2, auth1); AuthorizationStore authStore2 = new AuthorizationStore(auths2); authStore1.updateAuthorization(authStore2); assertEquals(authStore1, authStore1); } /** * This test checks updating authorizations for existing OIDs */ @Test public void testUpdateAuthorization_UpdatingPresentOid(){ HashMap<Oid, Authorization> auths1 = new HashMap<>(); auths1.put(oid1, auth1); auths1.put(oid2, auth2); AuthorizationStore authStore1 = new AuthorizationStore(auths1); HashMap<Oid, Authorization> auths2 = new HashMap<>(); auths2.put(oid1, auth1); auths2.put(oid2, auth3); AuthorizationStore authStore2 = new AuthorizationStore(auths2); HashMap<Oid, Authorization> auths3 = new HashMap<>(); auths3.put(oid1, auth1); auths3.put(oid2, auth0); AuthorizationStore authStore3 = new AuthorizationStore(auths3); authStore1.updateAuthorization(authStore2); assertEquals(authStore3, authStore1); } /** * This test checks updating authorizations for more OIDs */ @Test public void testUpdateAuthorization_UpdatingMoreOids(){ HashMap<Oid, Authorization> auths1 = new HashMap<>(); auths1.put(oid1, auth1); auths1.put(oid2, auth2); AuthorizationStore authStore1 = new AuthorizationStore(auths1); HashMap<Oid, Authorization> auths2 = new HashMap<>(); auths2.put(oid1, auth1); auths2.put(oid2, auth2); auths2.put(oid3, auth3); AuthorizationStore authStore2 = new AuthorizationStore(auths2); HashMap<Oid, Authorization> auths3 = new HashMap<>(); auths3.put(oid1, auth1); auths3.put(oid2, auth2); AuthorizationStore authStore3 = new AuthorizationStore(auths3); authStore1.updateAuthorization(authStore2); assertEquals(authStore3, authStore1); } /** * This test checks updating authorizations for less OIDs */ @Test public void testUpdateAuthorization_UpdatingLessOids(){ HashMap<Oid, Authorization> auths1 = new HashMap<>(); auths1.put(oid1, auth1); auths1.put(oid2, auth2); auths1.put(oid3, auth3); AuthorizationStore authStore1 = new AuthorizationStore(auths1); HashMap<Oid, Authorization> auths2 = new HashMap<>(); auths2.put(oid1, auth1); auths2.put(oid2, auth2); AuthorizationStore authStore2 = new AuthorizationStore(auths2); HashMap<Oid, Authorization> auths3 = new HashMap<>(); auths3.put(oid1, auth1); auths3.put(oid2, auth2); AuthorizationStore authStore3 = new AuthorizationStore(auths3); authStore1.updateAuthorization(authStore2); assertEquals(authStore3, authStore1); } }