office-alexander-logistics/office-alexander-logistics-app/src/test/java/com/alexanderlogistics/ksef/KSeFAuthManagerTest.java

95 lines
3.1 KiB
Java

package com.alexanderlogistics.ksef;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;
@ExtendWith(MockitoExtension.class)
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
public class KSeFAuthManagerTest {
private KSeFAuthManager manager;
@BeforeEach
void setup() throws Exception {
manager = new KSeFAuthManager();
// Test config
manager.setKsefToken(Params.TOKEN);
manager.setKsefNip(Params.NIP);
manager.setKsefEndpoint("https://ksef-test.mf.gov.pl/api/v2");
manager.setDebug(true);
// init() ausführen
manager.init();
}
// ------------------------------------------------------------
// 1) Challenge abholen
// ------------------------------------------------------------
@Test
@Order(1)
@DisplayName("GET /auth/challenge should return a challenge")
void testChallenge() throws Exception {
manager.getChallenge();
assertNotNull(
manager.getChallengeValue(),
"Challenge darf nicht NULL sein");
assertFalse(
manager.getChallengeValue().isBlank(),
"Challenge darf nicht leer sein");
System.out.println("Challenge = " + manager.getChallengeValue());
}
// ------------------------------------------------------------
// 2) Zertifikate holen (nur Public Keys)
// ------------------------------------------------------------
@Test
@Order(2)
@DisplayName("GET /security/public-key-certificates should return symmetric key certificate")
void testPublicKeys() throws Exception {
manager.getKsefPublicKeys();
assertNotNull(manager.getSymmetricPublicKey(), "Symmetric RSA PublicKey muss vorhanden sein");
assertNotNull(manager.getSymmetricCertBase64(), "Base64 Zertifikat muss vorhanden sein");
System.out.println("Symmetric PublicKey OK");
}
// ------------------------------------------------------------
// 3) KSeF Token Request
// ------------------------------------------------------------
@Test
@Order(3)
@DisplayName("POST /auth/ksef-token should return a token")
void testKsefToken() throws Exception {
// Challenge muss vorher geholt worden sein
manager.getChallenge();
// Token verschlüsseln
manager.generateAuthToken();
// Token-Call durchführen
String authToken = manager.getAuthToken();
assertNotNull(authToken, "auth token darf nicht NULL sein");
String refNumber = manager.getRefNumber();
assertNotNull(refNumber, "refNumber darf nicht NULL sein");
System.out.println("Received KSeF Token OK");
}
}