Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
T
token-checker
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
OZG-Cloud
app
token-checker
Commits
4bc1bae5
You need to sign in or sign up before continuing.
Commit
4bc1bae5
authored
5 months ago
by
OZGCloud
Browse files
Options
Downloads
Patches
Plain Diff
OZG-7092 [test] add tests for decrypter factory
parent
3a4e0312
No related branches found
No related tags found
1 merge request
!1
OZG-7092 Anpassung TokenChecker
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
token-checker-server/src/test/java/de/ozgcloud/token/saml/SamlDecrypterFactoryTest.java
+192
-0
192 additions, 0 deletions
...java/de/ozgcloud/token/saml/SamlDecrypterFactoryTest.java
with
192 additions
and
0 deletions
token-checker-server/src/test/java/de/ozgcloud/token/saml/SamlDecrypterFactoryTest.java
0 → 100644
+
192
−
0
View file @
4bc1bae5
/*
* Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
* Ministerpräsidenten des Landes Schleswig-Holstein
* Staatskanzlei
* Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
*
* Lizenziert unter der EUPL, Version 1.2 oder - sobald
* diese von der Europäischen Kommission genehmigt wurden -
* Folgeversionen der EUPL ("Lizenz");
* Sie dürfen dieses Werk ausschließlich gemäß
* dieser Lizenz nutzen.
* Eine Kopie der Lizenz finden Sie hier:
*
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
*
* Sofern nicht durch anwendbare Rechtsvorschriften
* gefordert oder in schriftlicher Form vereinbart, wird
* die unter der Lizenz verbreitete Software "so wie sie
* ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
* ausdrücklich oder stillschweigend - verbreitet.
* Die sprachspezifischen Genehmigungen und Beschränkungen
* unter der Lizenz sind dem Lizenztext zu entnehmen.
*/
package
de.ozgcloud.token.saml
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.*;
import
static
org
.
mockito
.
Mockito
.*;
import
java.security.cert.X509Certificate
;
import
java.security.interfaces.RSAPrivateKey
;
import
org.junit.jupiter.api.AfterEach
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Nested
;
import
org.junit.jupiter.api.Test
;
import
org.mockito.InjectMocks
;
import
org.mockito.Mock
;
import
org.mockito.MockedStatic
;
import
org.mockito.Spy
;
import
org.opensaml.saml.saml2.encryption.Decrypter
;
import
org.opensaml.security.credential.CredentialSupport
;
import
org.opensaml.security.x509.BasicX509Credential
;
import
org.opensaml.xmlsec.encryption.support.ChainingEncryptedKeyResolver
;
import
org.opensaml.xmlsec.keyinfo.impl.CollectionKeyInfoCredentialResolver
;
import
de.ozgcloud.token.TokenValidationProperties.TokenValidationProperty
;
import
de.ozgcloud.token.saml.SamlDecrypterFactory.DecrypterBuilder
;
class
SamlDecrypterFactoryTest
{
@Spy
@InjectMocks
private
SamlDecrypterFactory
factory
;
@Mock
private
TokenValidationProperty
tokenValidationProperty
;
@Nested
class
TestBuildDecrypter
{
@Mock
private
CollectionKeyInfoCredentialResolver
keyInfoCredentialResolver
;
@Mock
private
ChainingEncryptedKeyResolver
encryptedKeyResolver
;
@Mock
private
DecrypterBuilder
decrypterBuilder
;
@Mock
private
Decrypter
decrypter
;
private
MockedStatic
<
DecrypterBuilder
>
decrypterBuilderMock
;
@BeforeEach
void
init
()
{
doReturn
(
keyInfoCredentialResolver
).
when
(
factory
).
buildKeyInfoCredentialResolver
(
any
());
doReturn
(
encryptedKeyResolver
).
when
(
factory
).
buildEncryptedKeyResolver
();
decrypterBuilderMock
=
mockStatic
(
DecrypterBuilder
.
class
);
decrypterBuilderMock
.
when
(
DecrypterBuilder:
:
builder
).
thenReturn
(
decrypterBuilder
);
when
(
decrypterBuilder
.
keyEncryptionKeyResolver
(
any
())).
thenReturn
(
decrypterBuilder
);
when
(
decrypterBuilder
.
encryptedKeyElementsResolver
(
any
())).
thenReturn
(
decrypterBuilder
);
when
(
decrypterBuilder
.
build
()).
thenReturn
(
decrypter
);
}
@AfterEach
void
close
()
{
decrypterBuilderMock
.
close
();
}
@Test
void
shouldCallBuildKeyInfoCredentialResolver
()
{
buildDecrypter
();
verify
(
factory
).
buildKeyInfoCredentialResolver
(
tokenValidationProperty
);
}
@Test
void
shouldSetKeyEncryptionKeyResolver
()
{
buildDecrypter
();
verify
(
decrypterBuilder
).
keyEncryptionKeyResolver
(
keyInfoCredentialResolver
);
}
@Test
void
shouldCallBuildEncryptedKeyResolver
()
{
buildDecrypter
();
verify
(
factory
).
buildEncryptedKeyResolver
();
}
@Test
void
shouldSetEncryptedKeyElementsResolver
()
{
buildDecrypter
();
verify
(
decrypterBuilder
).
encryptedKeyElementsResolver
(
encryptedKeyResolver
);
}
@Test
void
shouldCallBuild
()
{
buildDecrypter
();
verify
(
decrypterBuilder
).
build
();
}
@Test
void
shouldReturnResult
()
{
var
result
=
buildDecrypter
();
assertThat
(
result
).
isSameAs
(
decrypter
);
}
private
Decrypter
buildDecrypter
()
{
return
factory
.
buildDecrypter
(
tokenValidationProperty
);
}
}
@Nested
class
TestBuildKeyInfoCredentialResolver
{
@Mock
private
X509Certificate
certificate
;
@Mock
private
RSAPrivateKey
privateKey
;
@Mock
private
BasicX509Credential
credential
;
private
MockedStatic
<
CredentialSupport
>
credentialSupportMock
;
@BeforeEach
void
init
()
{
doReturn
(
certificate
).
when
(
factory
).
getCertificate
(
any
());
doReturn
(
privateKey
).
when
(
factory
).
getPrivateKey
(
any
());
credentialSupportMock
=
mockStatic
(
CredentialSupport
.
class
);
credentialSupportMock
.
when
(()
->
CredentialSupport
.
getSimpleCredential
(
any
(
X509Certificate
.
class
),
any
())).
thenReturn
(
credential
);
}
@AfterEach
void
close
()
{
credentialSupportMock
.
close
();
}
@Test
void
shouldCallGetCertificate
()
{
buildKeyInfoCredentialResolver
();
verify
(
factory
).
getCertificate
(
tokenValidationProperty
);
}
@Test
void
shouldCallGetPrivateKey
()
{
buildKeyInfoCredentialResolver
();
verify
(
factory
).
getPrivateKey
(
tokenValidationProperty
);
}
@Test
void
shouldCallGetSimpleCredential
()
{
buildKeyInfoCredentialResolver
();
credentialSupportMock
.
verify
(()
->
CredentialSupport
.
getSimpleCredential
(
certificate
,
privateKey
));
}
@Test
void
shouldReturnResult
()
{
var
result
=
buildKeyInfoCredentialResolver
();
assertThat
(
result
.
getCollection
()).
contains
(
credential
);
}
private
CollectionKeyInfoCredentialResolver
buildKeyInfoCredentialResolver
()
{
return
factory
.
buildKeyInfoCredentialResolver
(
tokenValidationProperty
);
}
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment