From 65ea6c17a0c1348aa9ef4e158102ddf173936882 Mon Sep 17 00:00:00 2001 From: Yuuta Liang Date: Thu, 23 Nov 2023 08:09:01 +0800 Subject: Add GUI Signed-off-by: Yuuta Liang --- src/test/model/GroupObserverTest.java | 65 ++++++++++++++++++ src/test/model/MockObserver.java | 41 +++++++++++ src/test/model/ObservedDataTest.java | 44 ++++++++++++ src/test/model/asn1/ObjectIdentifierTest.java | 17 +++++ src/test/model/ca/CertificationAuthorityTest.java | 79 ++++++++++++++++++++-- src/test/model/ca/TemplateTest.java | 3 + src/test/model/x501/AttributeTypeAndValueTest.java | 4 ++ src/test/model/x501/NameTest.java | 34 ++++++++++ 8 files changed, 281 insertions(+), 6 deletions(-) create mode 100644 src/test/model/GroupObserverTest.java create mode 100644 src/test/model/MockObserver.java create mode 100644 src/test/model/ObservedDataTest.java (limited to 'src/test/model') diff --git a/src/test/model/GroupObserverTest.java b/src/test/model/GroupObserverTest.java new file mode 100644 index 0000000..618f0eb --- /dev/null +++ b/src/test/model/GroupObserverTest.java @@ -0,0 +1,65 @@ +package model; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class GroupObserverTest { + private GroupObserver target; + + private MockObserver obsInt; + private MockObserver obsStr; + + private MockObserver obsObs; + + private MockObserver obsArrList; + + private MockObserver obsList; + + @BeforeEach + void setup() { + target = new GroupObserver(); + obsInt = new MockObserver<>(); + obsStr = new MockObserver<>(); + obsObs = new MockObserver<>(); + obsArrList = new MockObserver<>(); + obsList = new MockObserver<>(); + target.register(Integer.class, obsInt); + target.register(String.class, obsStr); + target.register(Observer.class, obsObs); + target.register(List.class, obsList); + target.register(ArrayList.class, obsArrList); + } + + @Test + void testRegister() { + assertEquals(5, target.getRegisteredObserverCount()); + } + + @Test + void testAccept() { + target.accept(this, Observer.DIRECTION_CHANGE, 100); + assertEquals(0, obsInt.getCount()); + assertEquals(0, obsStr.getCount()); + + target.accept("123", Observer.DIRECTION_CHANGE, 1000); + obsStr.assertCalled(Observer.DIRECTION_CHANGE); + assertEquals(0, obsInt.getCount()); + assertEquals(1000, obsStr.getIndex()); + + target.accept(114514, Observer.DIRECTION_ADD, 1919810); + obsInt.assertCalled(Observer.DIRECTION_ADD); + assertEquals(1919810, obsInt.getIndex()); + + target.accept(obsInt, Observer.DIRECTION_CHANGE, 1); + obsObs.assertCalled(Observer.DIRECTION_CHANGE); + + target.accept(new ArrayList<>(), Observer.DIRECTION_CHANGE, 2); + obsArrList.assertCalled(Observer.DIRECTION_CHANGE); + assertEquals(0, obsList.getCount()); + } +} diff --git a/src/test/model/MockObserver.java b/src/test/model/MockObserver.java new file mode 100644 index 0000000..bd3e79f --- /dev/null +++ b/src/test/model/MockObserver.java @@ -0,0 +1,41 @@ +package model; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class MockObserver implements Observer { + private int countPrev; + private int count; + private T data; + private int dir; + private int index; + + @Override + public void accept(T data, int direction, int index) { + this.count++; + this.data = data; + this.dir = direction; + this.index = index; + } + + public void assertCalled(int dir) { + assertEquals(countPrev + 1, count); + assertEquals(dir, this.dir); + countPrev = count; + } + + public int getCount() { + return count; + } + + public T getData() { + return data; + } + + public int getDir() { + return dir; + } + + public int getIndex() { + return index; + } +} diff --git a/src/test/model/ObservedDataTest.java b/src/test/model/ObservedDataTest.java new file mode 100644 index 0000000..60ed2ed --- /dev/null +++ b/src/test/model/ObservedDataTest.java @@ -0,0 +1,44 @@ +package model; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class ObservedDataTest { + private ObservedData target; + + private int callbackCount = 0; + private int callbackDirection = Integer.MIN_VALUE; + private int callbackIndex = Integer.MIN_VALUE; + + private final Observer obs = ((data, direction, index) -> { + callbackCount++; + callbackDirection = direction; + callbackIndex = index; + }); + + @BeforeEach + void setup() { + target = new ObservedData<>(0, obs); + callbackCount = 0; + callbackDirection = Integer.MIN_VALUE; + callbackIndex = Integer.MIN_VALUE; + } + + @Test + void testConstructor() { + assertEquals(0, target.get()); + assertNotNull(target.getAcceptor()); + } + + @Test + void testSet() { + target.set(114514); + assertEquals(114514, target.get()); + assertEquals(1, callbackCount); + assertEquals(Observer.DIRECTION_CHANGE, callbackDirection); + assertEquals(Observer.INDEX_NOT_IN_LIST, callbackIndex); + } +} diff --git a/src/test/model/asn1/ObjectIdentifierTest.java b/src/test/model/asn1/ObjectIdentifierTest.java index 367e349..5d49821 100644 --- a/src/test/model/asn1/ObjectIdentifierTest.java +++ b/src/test/model/asn1/ObjectIdentifierTest.java @@ -86,4 +86,21 @@ public class ObjectIdentifierTest { new ObjectIdentifier(new BytesReader(new Byte[]{0x6, 0x9, 0x2A, -122, 0x48, -122, -9, 0x0D, 0x01, 0x01, -117}), false)); } + + @Test + void testGetKnown() throws ParseException { + assertNotNull(ObjectIdentifier.getKnown("C")); + assertNotNull(ObjectIdentifier.getKnown("CN")); + assertNotNull(ObjectIdentifier.getKnown("O")); + assertNotNull(ObjectIdentifier.getKnown("OU")); + assertNotNull(ObjectIdentifier.getKnown("DC")); + assertNotNull(ObjectIdentifier.getKnown("L")); + + assertNotNull(ObjectIdentifier.getKnown("oU")); + assertNotNull(ObjectIdentifier.getKnown("Dc")); + assertNotNull(ObjectIdentifier.getKnown("cn")); + + assertThrows(ParseException.class, () -> ObjectIdentifier.getKnown("114514")); + assertThrows(ParseException.class, () -> ObjectIdentifier.getKnown("SN")); + } } diff --git a/src/test/model/ca/CertificationAuthorityTest.java b/src/test/model/ca/CertificationAuthorityTest.java index 0a9a3eb..7a2e50c 100644 --- a/src/test/model/ca/CertificationAuthorityTest.java +++ b/src/test/model/ca/CertificationAuthorityTest.java @@ -1,5 +1,8 @@ package model.ca; +import model.GroupObserver; +import model.MockObserver; +import model.Observer; import model.asn1.ASN1Object; import model.asn1.ObjectIdentifier; import model.asn1.UtcTime; @@ -17,6 +20,11 @@ import ui.Utils; import java.math.BigInteger; import java.nio.charset.StandardCharsets; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.InvalidKeySpecException; import java.time.ZoneId; import java.time.ZonedDateTime; @@ -302,6 +310,14 @@ public class CertificationAuthorityTest { private CertificationAuthority caWithPrivateKey; + private MockObserver obsPkey; + private MockObserver obsCrt; + private MockObserver obsRev; + private MockObserver