1+ package it .pagopa .pn .national .registries .utils ;
2+
3+ import it .pagopa .pn .commons .utils .MDCUtils ;
4+ import it .pagopa .pn .national .registries .config .adelegal .AdeLegalSecretConfig ;
5+ import it .pagopa .pn .national .registries .model .SSLData ;
6+ import kotlin .jvm .internal .unsafe .MonitorKt ;
7+ import org .junit .jupiter .api .Assertions ;
8+ import org .junit .jupiter .api .Test ;
9+ import org .junit .jupiter .api .extension .ExtendWith ;
10+ import org .mockito .InjectMocks ;
11+ import org .mockito .Mock ;
12+ import org .mockito .MockedStatic ;
13+ import org .mockito .Mockito ;
14+ import org .mockito .junit .jupiter .MockitoExtension ;
15+ import org .opensaml .core .xml .NamespaceManager ;
16+ import org .opensaml .core .xml .XMLObject ;
17+ import org .opensaml .saml .common .SAMLVersion ;
18+ import org .opensaml .saml .saml2 .core .*;
19+ import org .opensaml .xmlsec .signature .*;
20+ import org .springframework .test .context .ContextConfiguration ;
21+
22+ import javax .security .auth .x500 .X500Principal ;
23+ import java .nio .charset .StandardCharsets ;
24+ import java .security .PrivateKey ;
25+ import java .security .cert .X509Certificate ;
26+ import java .util .Base64 ;
27+ import java .util .Collections ;
28+ import java .util .HashMap ;
29+ import java .util .Map ;
30+
31+ import static org .junit .jupiter .api .Assertions .assertFalse ;
32+ import static org .junit .jupiter .api .Assertions .assertNotNull ;
33+ import static org .mockito .ArgumentMatchers .any ;
34+ import static org .mockito .ArgumentMatchers .anyString ;
35+ import static org .mockito .Mockito .*;
36+
37+ @ ExtendWith (MockitoExtension .class )
38+ class SAMLAssertionWriterTest {
39+
40+ @ Mock
41+ private OpenSAMLUtils openSAMLUtils ;
42+
43+ @ Mock
44+ private X509CertificateUtils x509CertificateUtils ;
45+
46+ @ Mock
47+ private AdeLegalSecretConfig adeLegalSecretConfig ;
48+
49+ @ InjectMocks
50+ private SAMLAssertionWriter samlAssertionWriter ;
51+
52+ @ Test
53+ void buildDefaultAssertion_shouldHandleRootTraceId () {
54+ try (MockedStatic <MDCUtils > mocked = mockStatic (MDCUtils .class )) {
55+ mocked .when (MDCUtils ::retrieveMDCContextMap ).thenReturn (new HashMap <>());
56+ MDCUtils .retrieveMDCContextMap ().put ("rootTraceId" , "12345" );
57+
58+ Assertion assertion = mock (Assertion .class );
59+ when (assertion .getNamespaceManager ()).thenReturn (mock (NamespaceManager .class ));
60+ Mockito .when (openSAMLUtils .buildSAMLObject (Assertion .DEFAULT_ELEMENT_NAME , null )).thenReturn (assertion );
61+ Mockito .when (openSAMLUtils .buildSAMLObject (Issuer .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (Issuer .class ));
62+ Mockito .when (openSAMLUtils .buildSAMLObject (Signature .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (Signature .class ));
63+ Mockito .when (openSAMLUtils .buildSAMLObject (KeyInfo .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (KeyInfo .class ));
64+ Mockito .when (openSAMLUtils .buildSAMLObject (X509Data .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (X509Data .class ));
65+ Mockito .when (openSAMLUtils .buildSAMLObject (org .opensaml .xmlsec .signature .X509Certificate .DEFAULT_ELEMENT_NAME , null ))
66+ .thenReturn (mock (org .opensaml .xmlsec .signature .X509Certificate .class ));
67+ Mockito .when (openSAMLUtils .buildSAMLObject (X509IssuerName .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (X509IssuerName .class ));
68+ Mockito .when (openSAMLUtils .buildSAMLObject (X509IssuerSerial .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (X509IssuerSerial .class ));
69+ Mockito .when (openSAMLUtils .buildSAMLObject (X509SerialNumber .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (X509SerialNumber .class ));
70+ Mockito .when (openSAMLUtils .buildSAMLObject (NameID .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (NameID .class ));
71+ Mockito .when (openSAMLUtils .buildSAMLObject (Subject .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (Subject .class ));
72+ Mockito .when (openSAMLUtils .buildSAMLObject (SubjectConfirmation .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (SubjectConfirmation .class ));
73+ Mockito .when (openSAMLUtils .buildSAMLObject (SubjectConfirmationData .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (SubjectConfirmationData .class ));
74+ Mockito .when (openSAMLUtils .buildSAMLObject (Conditions .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (Conditions .class ));
75+ Mockito .when (openSAMLUtils .buildSAMLObject (AuthnContextClassRef .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (AuthnContextClassRef .class ));
76+ Mockito .when (openSAMLUtils .buildSAMLObject (AuthnContext .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (AuthnContext .class ));
77+ Mockito .when (openSAMLUtils .buildSAMLObject (AuthnStatement .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (AuthnStatement .class ));
78+ Mockito .when (openSAMLUtils .buildSAMLObject (AttributeStatement .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (AttributeStatement .class ));
79+ Mockito .when (openSAMLUtils .buildSAMLObject (Attribute .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (Attribute .class ));
80+ Mockito .when (openSAMLUtils .buildSAMLObject (AttributeValue .DEFAULT_ELEMENT_NAME , null )).thenReturn (mock (AttributeValue .class ));
81+
82+ X509Certificate cert = mock (X509Certificate .class );
83+ X500Principal x500Principal = mock (X500Principal .class );
84+ when (x500Principal .getName (X500Principal .RFC1779 )).thenReturn ("CN=subject" );
85+ when (cert .getIssuerX500Principal ()).thenReturn (x500Principal );
86+ when (x509CertificateUtils .loadCertificate (any ())).thenReturn (cert );
87+ SSLData sslData = new SSLData ();
88+ sslData .setCert (Base64 .getEncoder ().encodeToString ("test" .getBytes (StandardCharsets .UTF_8 )));
89+ when (x509CertificateUtils .getKeyAndCertificate (any ())).thenReturn (sslData );
90+ when (x509CertificateUtils .getPrivateKey (any ())).thenReturn (mock (PrivateKey .class ));
91+
92+ Assertion response = samlAssertionWriter .buildDefaultAssertion ();
93+ assertNotNull (response );
94+ }catch (Exception e ){
95+ assertFalse (true );
96+ }
97+ }
98+ }
0 commit comments