You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
3.1 KiB
Java
59 lines
3.1 KiB
Java
package com.yau.digitalrmb.institutionidentity;
|
|
|
|
import com.yau.digitalrmb.institutionidentity.domain.CurrencyGenerationVerification;
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
|
|
class CurrencyGenerationVerificationDomainTest {
|
|
@Test
|
|
void completesAllStepThreeStatesInOrder() {
|
|
CurrencyGenerationVerification value = value();
|
|
assertThat(value.getStatus()).isEqualTo(CurrencyGenerationVerification.Status.RECEIVED);
|
|
value.verifySignature(true);
|
|
value.verifyDigest("A123456789012345678901234567890123456789012345678901234567890123", true);
|
|
value.verifyQuota(new BigDecimal("500000000.00"), new BigDecimal("495000000.00"),
|
|
new BigDecimal("5000000.00"));
|
|
value.confirm("CENTRAL_FIRST_SM2_KEY", "3044AABB", "20260804210000", "{confirmed:true}");
|
|
value.returnResponse();
|
|
assertThat(value.getStatus()).isEqualTo(CurrencyGenerationVerification.Status.RESPONSE_RETURNED);
|
|
assertThat(value.getSignatureValid()).isTrue();
|
|
assertThat(value.getDigestMatches()).isTrue();
|
|
assertThat(value.getQuotaSufficient()).isTrue();
|
|
}
|
|
|
|
@Test
|
|
void rejectsSkippedAndRepeatedOperations() {
|
|
CurrencyGenerationVerification value = value();
|
|
assertThatThrownBy(() -> value.verifyDigest(
|
|
"A123456789012345678901234567890123456789012345678901234567890123", true))
|
|
.isInstanceOf(IllegalStateException.class);
|
|
value.verifySignature(true);
|
|
assertThatThrownBy(() -> value.verifySignature(true)).isInstanceOf(IllegalStateException.class);
|
|
}
|
|
|
|
@Test
|
|
void rejectsInvalidSignatureDigestAndInsufficientQuotaWithoutAdvancing() {
|
|
CurrencyGenerationVerification value = value();
|
|
assertThatThrownBy(() -> value.verifySignature(false)).isInstanceOf(IllegalArgumentException.class);
|
|
assertThat(value.getStatus()).isEqualTo(CurrencyGenerationVerification.Status.RECEIVED);
|
|
value.verifySignature(true);
|
|
assertThatThrownBy(() -> value.verifyDigest("BAD", false)).isInstanceOf(IllegalArgumentException.class);
|
|
assertThat(value.getStatus()).isEqualTo(CurrencyGenerationVerification.Status.SIGNATURE_VERIFIED);
|
|
value.verifyDigest("A123456789012345678901234567890123456789012345678901234567890123", true);
|
|
assertThatThrownBy(() -> value.verifyQuota(new BigDecimal("500000000.00"),
|
|
new BigDecimal("499999999.00"), new BigDecimal("1.00")))
|
|
.isInstanceOf(IllegalArgumentException.class);
|
|
assertThat(value.getStatus()).isEqualTo(CurrencyGenerationVerification.Status.DIGEST_VERIFIED);
|
|
}
|
|
|
|
private CurrencyGenerationVerification value() {
|
|
return CurrencyGenerationVerification.receive(1L, "message", "ORG_123456789ABC|1598.85|SYS_DC_002|20260804210000",
|
|
"A123456789012345678901234567890123456789012345678901234567890123",
|
|
"3044AABB", "BANK_SECOND_SM2_KEY", new BigDecimal("1598.85"));
|
|
}
|
|
}
|