8000 Migrate PasswordPolicyTest to new test framework by msdaly200 · Pull Request #48583 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@
* limitations under the License.
*/

package org.keycloak.testsuite.policy;
package org.keycloak.tests.policy;

import java.io.File;
import java.util.List;
import java.net.URISyntaxException;
import java.net.URL;
import java.nio.file.Paths;

import org.keycloak.models.ModelException;
import org.keycloak.models.PasswordPolicy;
Expand All @@ -29,12 +31,19 @@
import org.keycloak.policy.PasswordPolicyManagerProvider;
import org.keycloak.policy.PasswordPolicyProvider;
import org.keycloak.provider.ProviderFactory;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.testframework.annotations.InjectRealm;
import org.keycloak.testframework.annotations.KeycloakIntegrationTest;
import org.keycloak.testframework.realm.ManagedRealm;
import org.keycloak.testframework.realm.RealmBuilder;
import org.keycloak.testsuite.AbstractKeycloakTest;
import org.keycloak.testframework.realm.RealmConfig;
import org.keycloak.testframework.remote.runonserver.InjectRunOnServer;
import org.keycloak.testframework.remote.runonserver.RunOnServerClient;
import org.keycloak.testframework.server.KeycloakServerConfig;
import org.keycloak.testframework.server.KeycloakServerConfigBuilder;
import org.keycloak.tests.suites.DatabaseTest;

import org.junit.Test;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.MatcherAssert.assertThat;
Expand All @@ -48,11 +57,19 @@
/**
* @author <a href="mailto:sthorger@redhat.com">Stian Thorgersen</a>
*/
public class PasswordPolicyTest extends AbstractKeycloakTest {
@KeycloakIntegrationTest(config = PasswordPolicyTest.PasswordPolicyServerConfig.class)
@DatabaseTest
public class PasswordPolicyTest {

@InjectRealm(config = PasswordPolicyRealmConfig.class)
ManagedRealm managedRealm;

@InjectRunOnServer
RunOnServerClient runOnServer;

@Test
public void testLength() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -72,7 +89,7 @@ public void testLength() {

@Test
public void testMaximumLength() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -96,7 +113,7 @@ public void testMaximumLength() {

@Test
public void testDigits() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -114,7 +131,7 @@ public void testDigits() {

@Test
public void testLowerCase() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -132,7 +149,7 @@ public void testLowerCase() {

@Test
public void testUpperCase() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -150,7 +167,7 @@ public void testUpperCase() {

@Test
public void testSpecialChars() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -170,8 +187,8 @@ public void testSpecialChars() {
* KEYCLOAK-5244
*/
@Test
public void testBlacklistPasswordPolicyWithTestBlacklist() throws Exception {
testingClient.server("passwordPolicy").run(session -> {
public void testBlacklistPasswordPolicyWithTestBlacklist() {
runOnServer.run(session -> {

RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);
Expand All @@ -186,10 +203,10 @@ public void testBlacklistPasswordPolicyWithTestBlacklist() throws Exception {
}

@Test
public void testBlacklistPasswordPolicyDefaultPath() throws Exception {
public void testBlacklistPasswordPolicyDefaultPath() {
final String SEPARATOR = File.separator;

testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
ProviderFactory<PasswordPolicyProvider> passPolicyFact = session.getKeycloakSessionFactory().getProviderFactory(
PasswordPolicyProvider.class, BlacklistPasswordPolicyProviderFactory.ID);
assertThat(passPolicyFact, instanceOf(BlacklistPasswordPolicyProviderFactory.class));
Expand All @@ -200,7 +217,7 @@ public void testBlacklistPasswordPolicyDefaultPath() throws Exception {

@Test
public void testNotUsername() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -212,9 +229,8 @@ public void testNotUsername() {

@Test
public void testInvalidPolicyName() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

try {
realmModel.setPasswordPolicy(PasswordPolicy.parse(session, "noSuchPolicy"));
Expand All @@ -227,11 +243,10 @@ public void testInvalidPolicyName() {

@Test
public void testRegexPatterns() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

PasswordPolicy policy = null;
try {
realmModel.setPasswordPolicy(PasswordPolicy.parse(session, "regexPattern"));
fail("Expected NullPointerException: Regex Pattern cannot be null.");
Expand All @@ -257,7 +272,7 @@ public void testRegexPatterns() {
realmModel.setPasswordPolicy(PasswordPolicy.parse(session, "regexPattern(jdoe) and regexPattern(j*d)"));
Assertions.assertEquals("invalidPasswordRegexPatternMessage", policyManager.validate("jdoe", "jdoe").getMessage());

////Fails to match all of the regex patterns
//Fails to match all of the regex patterns
realmModel.setPasswordPolicy(PasswordPolicy.parse(session, "regexPattern(j*p) and regexPattern(j*d) and regexPattern(adoe)"));
Assertions.assertEquals("invalidPasswordRegexPatternMessage", policyManager.validate("jdoe", "jdoe").getMessage());

Expand All @@ -274,7 +289,7 @@ public void testRegexPatterns() {

@Test
public void testComplex() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
RealmModel realmModel = session.getContext().getRealm();
PasswordPolicyManagerProvider policyManager = session.getProvider(PasswordPolicyManagerProvider.class);

Expand All @@ -293,10 +308,10 @@ public void testComplex() {

@Test
public void testBuilder() {
testingClient.server("passwordPolicy").run(session -> {
runOnServer.run(session -> {
PasswordPolicy.Builder builder = PasswordPolicy.parse(session, "hashIterations(20000)").toBuilder();
assertFalse(builder.contains(PasswordPolicy.HASH_ALGORITHM_ID));
assertTrue("20000".equals(builder.get(PasswordPolicy.HASH_ITERATIONS_ID)));
assertEquals("20000", builder.get(PasswordPolicy.HASH_ITERATIONS_ID));

builder.remove(PasswordPolicy.HASH_ITERATIONS_ID);

Expand All @@ -315,9 +330,27 @@ public void testBuilder() {
});
}

@Override
public void addTestRealms(List<RealmRepresentation> testRealms) {
testRealms.add(RealmBuilder.create().name("passwordPolicy").build());
public static class PasswordPolicyServerConfig implements KeycloakServerConfig {
@Override
public KeycloakServerConfigBuilder configure(KeycloakServerConfigBuilder config) {
try {
URL resourceUrl = PasswordPolicyTest.class.getResource("/password-blacklists");
if (resourceUrl == null) {
throw new RuntimeException("Unable to find the password-blacklists file in the classpath for PasswordPolicyTest");
}
String resourcePath = Paths.get(resourceUrl.toURI()).toString();
return config.spiOption("password-policy", "password-blacklist", "blacklists-path", resourcePath);

} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
}

public static class PasswordPolicyRealmConfig implements RealmConfig {
@Override
public RealmBuilder configure(RealmBuilder realm) {
return realm.name("passwordPolicy");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
"org.keycloak.tests.oauth",
"org.keycloak.tests.organization",
"org.keycloak.tests.oid4vc",
"org.keycloak.tests.policy",
"org.keycloak.tests.securityprofile",
"org.keycloak.tests.session",
"org.keycloak.tests.sessionlimits",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import org.keycloak.tests.forms.SSOTest;
import org.keycloak.tests.keys.GeneratedRsaKeyProviderTest;
import org.keycloak.tests.keys.JavaKeystoreKeyProviderTest;
import org.keycloak.tests.policy.PasswordPolicyTest;
import org.keycloak.tests.transactions.TransactionsTest;

import org.junit.platform.suite.api.SelectClasses;
Expand All @@ -14,6 +15,7 @@
CredentialsTest.class,
GeneratedRsaKeyProviderTest.class,
JavaKeystoreKeyProviderTest.class,
PasswordPolicyTest.class,
SSOTest.class,
TransactionsTest.class
})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ ExportImportTest
KcOidcBrokerTest
LDAPUserLoginTest
LoginTest
PasswordPolicyTest
RequiredActionUpdateProfileTest
SamlClientTest
UserProfileTest
Expand Down
553B
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ KerberosLdapTest
LDAPUserLoginTest
LoginTest
MutualTLSClientTest
PasswordPolicyTest
SamlClientTest
X509BrowserLoginTest
ThemeResourceProviderTest
Loading
0