diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/BadRealmTest.java b/tests/base/src/test/java/org/keycloak/tests/model/BadRealmTest.java similarity index 63% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/BadRealmTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/BadRealmTest.java index c6d40b78d3d..9a482e424d1 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/BadRealmTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/BadRealmTest.java @@ -1,28 +1,26 @@ -package org.keycloak.testsuite.model; - -import java.util.List; +package org.keycloak.tests.model; import org.keycloak.models.KeycloakSession; -import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.services.managers.RealmManager; -import org.keycloak.testsuite.AbstractKeycloakTest; -import org.keycloak.testsuite.arquillian.annotation.ModelTest; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.remote.annotations.TestOnServer; import org.keycloak.utils.ReservedCharValidator; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.fail; -import static org.junit.Assert.fail; +@KeycloakIntegrationTest +public class BadRealmTest { + + @InjectRealm(attachTo = "master") + ManagedRealm realm; -public class BadRealmTest extends AbstractKeycloakTest { private String name = "MyRealm"; private String id = "MyId"; private String script = ""; - public void addTestRealms(List testRealms) { - } - - @Test - @ModelTest + @TestOnServer public void testBadRealmName(KeycloakSession session) { RealmManager manager = new RealmManager(session); try { @@ -31,8 +29,7 @@ public class BadRealmTest extends AbstractKeycloakTest { } catch (ReservedCharValidator.ReservedCharException ex) {} } - @Test - @ModelTest + @TestOnServer public void testBadRealmId(KeycloakSession session) { RealmManager manager = new RealmManager(session); try { diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/CacheTest.java b/tests/base/src/test/java/org/keycloak/tests/model/CacheTest.java old mode 100755 new mode 100644 similarity index 73% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/CacheTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/CacheTest.java index df5134e35a1..ae30be5fe66 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/CacheTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/CacheTest.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.keycloak.testsuite.model; +package org.keycloak.tests.model; import java.util.Set; import java.util.UUID; @@ -28,28 +28,36 @@ import org.keycloak.models.UserModel; import org.keycloak.models.UserSessionModel; import org.keycloak.models.cache.infinispan.ClientAdapter; import org.keycloak.models.cache.infinispan.RealmAdapter; -import org.keycloak.representations.idm.RealmRepresentation; -import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; -import org.keycloak.testsuite.Assert; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.realm.RealmConfig; +import org.keycloak.testframework.realm.RealmConfigBuilder; +import org.keycloak.testframework.remote.runonserver.InjectRunOnServer; +import org.keycloak.testframework.remote.runonserver.RunOnServerClient; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Bill Burke * @version $Revision: 1 $ */ -public class CacheTest extends AbstractTestRealmKeycloakTest { +@KeycloakIntegrationTest +public class CacheTest { - @Override - public void configureTestRealm(RealmRepresentation testRealm) { - } + @InjectRealm(config = CacheRealmConfig.class) + ManagedRealm managedRealm; + + @InjectRunOnServer + RunOnServerClient runOnServer; @Test public void testStaleCache() throws Exception { - testingClient.server().run(session -> { + runOnServer.run(session -> { // load up cache RealmModel realm = session.realms().getRealmByName("test"); assertTrue(realm instanceof RealmAdapter); @@ -75,22 +83,22 @@ public class CacheTest extends AbstractTestRealmKeycloakTest { // make sure that app cache was flushed and enabled changed realm = session.realms().getRealmByName("test"); - Assert.assertEquals(200, realm.getAccessCodeLifespanLogin()); + Assertions.assertEquals(200, realm.getAccessCodeLifespanLogin()); testApp = session.clients().getClientById(realm, appId); - Assert.assertFalse(testApp.isEnabled()); + Assertions.assertFalse(testApp.isEnabled()); }); } @Test public void testAddUserNotAddedToCache() { - testingClient.server().run(session -> { + runOnServer.run(session -> { RealmModel realm = session.realms().getRealmByName("test"); UserModel user = session.users().addUser(realm, "testAddUserNotAddedToCache"); user.setFirstName("firstName"); user.addRequiredAction(UserModel.RequiredAction.CONFIGURE_TOTP); - + UserSessionModel userSession = session.sessions().createUserSession(UUID.randomUUID().toString(), realm, user, "testAddUserNotAddedToCache", "127.0.0.1", "auth", false, null, null, UserSessionModel.SessionPersistenceState.PERSISTENT); user = userSession.getUser(); @@ -99,13 +107,13 @@ public class CacheTest extends AbstractTestRealmKeycloakTest { assertNotNull(user.getLastName()); }); - + } // KEYCLOAK-1842 @Test public void testRoleMappingsInvalidatedWhenClientRemoved() { - testingClient.server().run(session -> { + runOnServer.run(session -> { RealmModel realm = session.realms().getRealmByName("test"); UserModel user = session.users().addUser(realm, "joel"); @@ -114,7 +122,7 @@ public class CacheTest extends AbstractTestRealmKeycloakTest { user.grantRole(fooRole); }); - testingClient.server().run(session -> { + runOnServer.run(session -> { RealmModel realm = session.realms().getRealmByName("test"); UserModel user = session.users().getUserByUsername(realm, "joel"); long grantedRolesCount = user.getRoleMappingsStream().count(); @@ -127,12 +135,22 @@ public class CacheTest extends AbstractTestRealmKeycloakTest { Set roles = user.getRoleMappingsStream().collect(Collectors.toSet()); for (RoleModel role : roles) { - Assert.assertNotNull(role.getContainer()); + Assertions.assertNotNull(role.getContainer()); } - Assert.assertEquals(roles.size(), grantedRolesCount - 1); + Assertions.assertEquals(roles.size(), grantedRolesCount - 1); }); } + public static final class CacheRealmConfig implements RealmConfig { + + @Override + public RealmConfigBuilder configure(RealmConfigBuilder realm) { + realm.name("test"); + realm.addClient("test-app"); + return realm; + } + } + } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/ClientModelTest.java b/tests/base/src/test/java/org/keycloak/tests/model/ClientModelTest.java similarity index 95% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/ClientModelTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/ClientModelTest.java index a0327cecef2..5abc8e482f0 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/ClientModelTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/ClientModelTest.java @@ -15,9 +15,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.keycloak.testsuite.model; +package org.keycloak.tests.model; -import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; @@ -33,11 +32,13 @@ import org.keycloak.protocol.oidc.OIDCLoginProtocol; import org.keycloak.protocol.oidc.mappers.AddressMapper; import org.keycloak.representations.idm.ClientRepresentation; import org.keycloak.representations.idm.ProtocolMapperRepresentation; -import org.keycloak.representations.idm.RealmRepresentation; -import org.keycloak.testsuite.AbstractKeycloakTest; -import org.keycloak.testsuite.arquillian.annotation.ModelTest; - -import org.junit.Test; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.injection.LifeCycle; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.realm.RealmConfig; +import org.keycloak.testframework.realm.RealmConfigBuilder; +import org.keycloak.testframework.remote.annotations.TestOnServer; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.Is.is; @@ -47,26 +48,18 @@ import static org.hamcrest.core.IsNull.notNullValue; * @author Stian Thorgersen * @author Martin Bartos */ -public class ClientModelTest extends AbstractKeycloakTest { +@KeycloakIntegrationTest +public class ClientModelTest { + + @InjectRealm(lifecycle = LifeCycle.METHOD, config = ClientModelRealmConfig.class) + ManagedRealm managedRealm; + private ClientModel client; private String roleId; - private String realmName="original"; + private static final String realmName = "original"; private KeycloakSession currentSession; - @Override - protected boolean isImportAfterEachMethod() { - return true; - } - - @Override - public void addTestRealms(List testRealms) { - RealmRepresentation realm = new RealmRepresentation(); - realm.setRealm(realmName); - realm.setEnabled(true); - testRealms.add(realm); - } - - public static void assertEquals(ClientModel expected, ClientModel actual) { + private static void assertEquals(ClientModel expected, ClientModel actual) { assertThat(expected.getClientId(), is(actual.getClientId())); assertThat(expected.getName(), is(actual.getName())); assertThat(expected.getDescription(), is(actual.getDescription())); @@ -77,7 +70,6 @@ public class ClientModelTest extends AbstractKeycloakTest { assertThat(expected.getRegisteredNodes(), is(actual.getRegisteredNodes())); } - private ClientModel setUpClient(RealmModel realm) { ClientModel client = realm.addClient("app-name"); client.setName("Application"); @@ -99,8 +91,7 @@ public class ClientModelTest extends AbstractKeycloakTest { return client; } - @Test - @ModelTest + @TestOnServer public void testClientRoleRemovalAndClientScope(KeycloakSession session) { // Client "from" has a role. Assign this role to a scope to client "scoped". Delete the role and make sure // cache gets cleared @@ -148,8 +139,7 @@ public class ClientModelTest extends AbstractKeycloakTest { } - @Test - @ModelTest + @TestOnServer public void testClientRoleRemovalAndClientScopeSameTx(KeycloakSession session) { // Client "from" has a role. Assign this role to a scope to client "scoped". Delete the role and make sure // cache gets cleared @@ -185,8 +175,7 @@ public class ClientModelTest extends AbstractKeycloakTest { }); } - @Test - @ModelTest + @TestOnServer public void testRealmRoleRemovalAndClientScope(KeycloakSession session) { // Client "from" has a role. Assign this role to a scope to client "scoped". Delete the role and make sure // cache gets cleared @@ -218,8 +207,7 @@ public class ClientModelTest extends AbstractKeycloakTest { }); } - @Test - @ModelTest + @TestOnServer public void testCircularClientScopes(KeycloakSession session) { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), session.getContext(), (KeycloakSession sessionCircuilarClient1) -> { @@ -243,8 +231,7 @@ public class ClientModelTest extends AbstractKeycloakTest { }); } - @Test - @ModelTest + @TestOnServer public void persist(KeycloakSession session) { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), session.getContext(), (KeycloakSession sessionPersist) -> { currentSession = sessionPersist; @@ -261,8 +248,7 @@ public class ClientModelTest extends AbstractKeycloakTest { }); } - @Test - @ModelTest + @TestOnServer public void json(KeycloakSession session) { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), session.getContext(), (KeycloakSession sessionJson) -> { currentSession = sessionJson; @@ -290,8 +276,7 @@ public class ClientModelTest extends AbstractKeycloakTest { }); } - @Test - @ModelTest + @TestOnServer public void testAddApplicationWithId(KeycloakSession session) { final String id = KeycloakModelUtils.generateId(); String newClientId = KeycloakModelUtils.runJobInTransactionWithResult(session.getKeycloakSessionFactory(), session.getContext(), (KeycloakSession sessionAppWithId1) -> { @@ -313,8 +298,7 @@ public class ClientModelTest extends AbstractKeycloakTest { }); } - @Test - @ModelTest + @TestOnServer public void testClientScopesBinding(KeycloakSession session) { AtomicReference scope1Atomic = new AtomicReference<>(); AtomicReference scope2Atomic = new AtomicReference<>(); @@ -405,8 +389,7 @@ public class ClientModelTest extends AbstractKeycloakTest { }); } - @Test - @ModelTest + @TestOnServer public void testDefaultDefaultClientScopes(KeycloakSession session) { AtomicReference scope1Atomic = new AtomicReference<>(); AtomicReference scope2Atomic = new AtomicReference<>(); @@ -510,4 +493,14 @@ public class ClientModelTest extends AbstractKeycloakTest { realm.removeClientScope(scope3Atomic.get().getId()); }); } + + public static class ClientModelRealmConfig implements RealmConfig { + + @Override + public RealmConfigBuilder configure(RealmConfigBuilder realm) { + return realm.name(realmName); + } + + } + } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/ConcurrentTransactionsTest.java b/tests/base/src/test/java/org/keycloak/tests/model/ConcurrentTransactionsTest.java old mode 100755 new mode 100644 similarity index 82% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/ConcurrentTransactionsTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/ConcurrentTransactionsTest.java index 581c4d3e2c3..9e6ec007195 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/ConcurrentTransactionsTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/ConcurrentTransactionsTest.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.keycloak.testsuite.model; +package org.keycloak.tests.model; import java.util.Arrays; import java.util.concurrent.CountDownLatch; @@ -29,34 +29,31 @@ import org.keycloak.models.KeycloakSession; import org.keycloak.models.KeycloakSessionFactory; import org.keycloak.models.RealmModel; import org.keycloak.models.RoleModel; -import org.keycloak.models.UserManager; import org.keycloak.models.UserModel; import org.keycloak.models.utils.KeycloakModelUtils; -import org.keycloak.representations.idm.RealmRepresentation; -import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; -import org.keycloak.testsuite.arquillian.annotation.ModelTest; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.remote.annotations.TestOnServer; import org.jboss.logging.Logger; -import org.junit.Assert; -import org.junit.Test; - -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.Matchers.is; -import static org.hamcrest.Matchers.nullValue; +import org.junit.jupiter.api.Assertions; /** * @author Marek Posolda */ -public class ConcurrentTransactionsTest extends AbstractTestRealmKeycloakTest { +@KeycloakIntegrationTest +public class ConcurrentTransactionsTest { private static final int LATCH_TIMEOUT_MS = 30000; private static final Logger logger = Logger.getLogger(ConcurrentTransactionsTest.class); - @Test - @ModelTest(realmName = "test") - public void persistClient(KeycloakSession session) { + @InjectRealm(attachTo = "master") + ManagedRealm realm; + @TestOnServer + public void persistClient(KeycloakSession session) { final ClientModel[] client = {null}; AtomicReference clientDBIdAtomic = new AtomicReference<>(); AtomicReference exceptionHolder = new AtomicReference<>(); @@ -64,11 +61,7 @@ public class ConcurrentTransactionsTest extends AbstractTestRealmKeycloakTest { try { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), session.getContext(), (KeycloakSession sessionSetup) -> { - RealmModel realm = sessionSetup.realms().getRealmByName("test"); - sessionSetup.users().addUser(realm, "user1").setEmail("user1@localhost"); - sessionSetup.users().addUser(realm, "user2").setEmail("user2@localhost"); - - realm = sessionSetup.realms().createRealm("original"); + RealmModel realm = sessionSetup.realms().createRealm("original"); RoleModel defaultRole = sessionSetup.roles().addRealmRole(realm, Constants.DEFAULT_ROLES_ROLE_PREFIX + "-" + realm.getName()); realm.setDefaultRole(defaultRole); @@ -165,7 +158,7 @@ public class ConcurrentTransactionsTest extends AbstractTestRealmKeycloakTest { } if (exceptionHolder.get() != null) { - Assert.fail("Some thread thrown an exception. See the log for the details"); + Assertions.fail("Some thread thrown an exception. See the log for the details"); } logger.info("after thread join"); @@ -181,21 +174,19 @@ public class ConcurrentTransactionsTest extends AbstractTestRealmKeycloakTest { logger.info("SECRET FROM DB : " + clientFromDB.getSecret()); logger.info("SECRET FROM CACHE : " + clientFromCache.getSecret()); - Assert.assertEquals("new", clientFromDB.getSecret()); - Assert.assertEquals("new", clientFromCache.getSecret()); + Assertions.assertEquals("new", clientFromDB.getSecret()); + Assertions.assertEquals("new", clientFromCache.getSecret()); session2.sessions().removeUserSessions(realm); }); } finally { - KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), kcSession -> tearDownRealm(kcSession, "user1", "user2")); + tearDownRealm(session, "original"); } } - // KEYCLOAK-3296 , KEYCLOAK-3494 - @Test - @ModelTest + @TestOnServer public void removeUserAttribute(KeycloakSession session) throws Exception { try { @@ -269,36 +260,19 @@ public class ConcurrentTransactionsTest extends AbstractTestRealmKeycloakTest { logger.info("removeUserAttribute: after thread join"); if (reference.get() != null) { - Assert.fail("Exception happened in some of threads. Details: " + reference.get().getMessage()); + Assertions.fail("Exception happened in some of threads. Details: " + reference.get().getMessage()); } }); } finally { - tearDownRealm(session, "john", "john2"); + tearDownRealm(session, "original"); } } - private void tearDownRealm(KeycloakSession session, String user1, String user2) { - KeycloakSession currentSession = session; - - RealmModel realm = currentSession.realms().getRealmByName("original"); - - UserModel realmUser1 = currentSession.users().getUserByUsername(realm, user1); - UserModel realmUser2 = currentSession.users().getUserByUsername(realm, user2); - - UserManager um = new UserManager(currentSession); - if (realmUser1 != null) { - um.removeUser(realm, realmUser1); + private void tearDownRealm(KeycloakSession session, String realmName) { + RealmModel realm = session.realms().getRealmByName(realmName); + if (realm != null) { + session.realms().removeRealm(realm.getId()); } - if (realmUser2 != null) { - um.removeUser(realm, realmUser2); - } - - currentSession.getContext().setRealm(realm); - Assert.assertTrue(currentSession.realms().removeRealm(realm.getId())); - assertThat(currentSession.realms().getRealm(realm.getId()), is(nullValue())); } - @Override - public void configureTestRealm(RealmRepresentation testRealm) { - } } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/CredentialModelTest.java b/tests/base/src/test/java/org/keycloak/tests/model/CredentialModelTest.java similarity index 83% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/CredentialModelTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/CredentialModelTest.java index 6efeebb5392..330fb00918c 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/CredentialModelTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/CredentialModelTest.java @@ -1,4 +1,4 @@ -package org.keycloak.testsuite.model; +package org.keycloak.tests.model; import java.util.List; import java.util.concurrent.atomic.AtomicReference; @@ -14,26 +14,25 @@ import org.keycloak.models.UserModel; import org.keycloak.models.credential.OTPCredentialModel; import org.keycloak.models.jpa.entities.CredentialEntity; import org.keycloak.models.utils.KeycloakModelUtils; -import org.keycloak.representations.idm.RealmRepresentation; -import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; -import org.keycloak.testsuite.Assert; -import org.keycloak.testsuite.arquillian.annotation.ModelTest; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.realm.RealmConfig; +import org.keycloak.testframework.realm.RealmConfigBuilder; +import org.keycloak.testframework.remote.annotations.TestOnServer; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; /** * @author Marek Posolda */ -public class CredentialModelTest extends AbstractTestRealmKeycloakTest { +@KeycloakIntegrationTest +public class CredentialModelTest { - @Override - public void configureTestRealm(RealmRepresentation testRealm) { + @InjectRealm(config = CredentialModelRealm.class) + ManagedRealm realm; - } - - - @Test - @ModelTest + @TestOnServer public void testCredentialCRUD(KeycloakSession session) throws Exception { AtomicReference passwordId = new AtomicReference<>(); AtomicReference otp1Id = new AtomicReference<>(); @@ -46,7 +45,7 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { UserModel user = currentSession.users().getUserByUsername(realm, "test-user@localhost"); List list = user.credentialManager().getStoredCredentialsStream() .collect(Collectors.toList()); - Assert.assertEquals(1, list.size()); + Assertions.assertEquals(1, list.size()); passwordId.set(list.get(0).getId()); // Create 2 OTP credentials (password was already created) @@ -71,13 +70,13 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { assertOrder(list, passwordId.get(), otp1Id.get(), otp2Id.get()); // Assert can't move password when newPreviousCredential not found - Assert.assertFalse(user.credentialManager().moveStoredCredentialTo(passwordId.get(), "not-known")); + Assertions.assertFalse(user.credentialManager().moveStoredCredentialTo(passwordId.get(), "not-known")); // Assert can't move credential when not found - Assert.assertFalse(user.credentialManager().moveStoredCredentialTo("not-known", otp2Id.get())); + Assertions.assertFalse(user.credentialManager().moveStoredCredentialTo(otp2Id.get(), "not-known")); // Move otp2 up 1 position - Assert.assertTrue(user.credentialManager().moveStoredCredentialTo(otp2Id.get(), passwordId.get())); + Assertions.assertTrue(user.credentialManager().moveStoredCredentialTo(otp2Id.get(), passwordId.get())); }); KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession currentSession) -> { @@ -91,7 +90,7 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { assertOrder(list, passwordId.get(), otp2Id.get(), otp1Id.get()); // Move otp2 to the top - Assert.assertTrue(user.credentialManager().moveStoredCredentialTo(otp2Id.get(), null)); + Assertions.assertTrue(user.credentialManager().moveStoredCredentialTo(otp2Id.get(), null)); }); KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession currentSession) -> { @@ -105,7 +104,7 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { assertOrder(list, otp2Id.get(), passwordId.get(), otp1Id.get()); // Move password down - Assert.assertTrue(user.credentialManager().moveStoredCredentialTo(passwordId.get(), otp1Id.get())); + Assertions.assertTrue(user.credentialManager().moveStoredCredentialTo(passwordId.get(), otp1Id.get())); }); KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession currentSession) -> { @@ -119,7 +118,7 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { assertOrder(list, otp2Id.get(), otp1Id.get(), passwordId.get()); // Remove otp2 down two positions - Assert.assertTrue(user.credentialManager().moveStoredCredentialTo(otp2Id.get(), passwordId.get())); + Assertions.assertTrue(user.credentialManager().moveStoredCredentialTo(otp2Id.get(), passwordId.get())); }); KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession currentSession) -> { @@ -133,7 +132,7 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { assertOrder(list, otp1Id.get(), passwordId.get(), otp2Id.get()); // Remove password - Assert.assertTrue(user.credentialManager().removeStoredCredentialById(passwordId.get())); + Assertions.assertTrue(user.credentialManager().removeStoredCredentialById(passwordId.get())); }); KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession currentSession) -> { @@ -158,8 +157,7 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { } } - @Test - @ModelTest + @TestOnServer public void testCredentialUpdateWithDuplicateLabel(KeycloakSession session) { AtomicReference otp1Id = new AtomicReference<>(); AtomicReference otp2Id = new AtomicReference<>(); @@ -209,14 +207,23 @@ public class CredentialModelTest extends AbstractTestRealmKeycloakTest { } - private void assertOrder(List creds, String... expectedIds) { - Assert.assertEquals(expectedIds.length, creds.size()); + Assertions.assertEquals(expectedIds.length, creds.size()); if (creds.isEmpty()) return; for (int i=0 ; iMarek Posolda */ -public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { +@KeycloakIntegrationTest +public class MultipleRealmsTest { + + @InjectRealm(attachTo = "master") + ManagedRealm realm; private static final String REALM_ATTRIBUTE = "test-realm"; @@ -73,8 +77,7 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { session.getContext().setRealm(sessionRealm); } - @Test - @ModelTest + @TestOnServer public void testUsers(KeycloakSession session) { AtomicReference r1user1Atomic = new AtomicReference<>(); @@ -99,7 +102,7 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { createObjects(currentSession, realm2); UserModel r2user1 = currentSession.users().getUserByUsername(realm2, "user1"); - Assert.assertEquals(r1user1.getUsername(), r2user1.getUsername()); + Assertions.assertEquals(r1user1.getUsername(), r2user1.getUsername()); // The following check is not valid anymore since file store does have the same ID, and is redundant due to the previous line // Assert.assertNotEquals(r1user1.getId(), r2user1.getId()); @@ -107,14 +110,14 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { r1user1.credentialManager().updateCredential(UserCredentialModel.password("pass1")); r2user1.credentialManager().updateCredential(UserCredentialModel.password("pass2")); - Assert.assertTrue(r1user1.credentialManager().isValid(UserCredentialModel.password("pass1"))); - Assert.assertFalse(r1user1.credentialManager().isValid(UserCredentialModel.password("pass2"))); - Assert.assertFalse(r2user1.credentialManager().isValid(UserCredentialModel.password("pass1"))); - Assert.assertTrue(r2user1.credentialManager().isValid(UserCredentialModel.password("pass2"))); + Assertions.assertTrue(r1user1.credentialManager().isValid(UserCredentialModel.password("pass1"))); + Assertions.assertFalse(r1user1.credentialManager().isValid(UserCredentialModel.password("pass2"))); + Assertions.assertFalse(r2user1.credentialManager().isValid(UserCredentialModel.password("pass1"))); + Assertions.assertTrue(r2user1.credentialManager().isValid(UserCredentialModel.password("pass2"))); currentSession.getContext().setRealm(realm1); // Test searching - Assert.assertEquals(2, currentSession.users().searchForUserStream(realm1, Map.of(UserModel.SEARCH, "user")).count()); + Assertions.assertEquals(2, currentSession.users().searchForUserStream(realm1, Map.of(UserModel.SEARCH, "user")).count()); return new String[]{id1, id2}; }); @@ -132,7 +135,7 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { currentSession.users().removeUser(realm1, r1user1); UserModel user2 = currentSession.users().getUserByUsername(realm1, "user2"); currentSession.users().removeUser(realm1, user2); - Assert.assertEquals(0, currentSession.users().searchForUserStream(realm1, Map.of(UserModel.SEARCH, "user")).count()); + Assertions.assertEquals(0, currentSession.users().searchForUserStream(realm1, Map.of(UserModel.SEARCH, "user")).count()); UserModel user1 = currentSession.users().getUserByUsername(realm1, "user1"); UserManager um = new UserManager(currentSession); @@ -146,7 +149,7 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { RealmModel realm2 = currentSession.realms().getRealm(id2); currentSession.getContext().setRealm(realm2); - Assert.assertEquals(2, currentSession.users().searchForUserStream(realm2, Map.of(UserModel.SEARCH, "user")).count()); + Assertions.assertEquals(2, currentSession.users().searchForUserStream(realm2, Map.of(UserModel.SEARCH, "user")).count()); UserModel user1a = currentSession.users().getUserByUsername(realm2, "user1"); @@ -160,8 +163,7 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { removeRealm(session, id2); } - @Test - @ModelTest + @TestOnServer public void testGetById(KeycloakSession session) { String[] res = KeycloakModelUtils.runJobInTransactionWithResult(session.getKeycloakSessionFactory(), (KeycloakSession sessionById) -> { KeycloakSession currentSession = sessionById; @@ -172,13 +174,13 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { String id1 = realm1.getId(); realm1.setDefaultRole(currentSession.roles().addRealmRole(realm1, Constants.DEFAULT_ROLES_ROLE_PREFIX + "-" + realm1.getName())); createObjects(currentSession, realm1); - Assert.assertEquals(realm1, currentSession.realms().getRealm(id1)); - Assert.assertEquals(realm1, currentSession.realms().getRealmByName("realm1")); + Assertions.assertEquals(realm1, currentSession.realms().getRealm(id1)); + Assertions.assertEquals(realm1, currentSession.realms().getRealmByName("realm1")); ClientModel r1app1 = realm1.getClientByClientId("app1"); - Assert.assertNotNull(realm1.getClientByClientId("app2")); + Assertions.assertNotNull(realm1.getClientByClientId("app2")); - Assert.assertEquals(r1app1, realm1.getClientById(r1app1.getId())); + Assertions.assertEquals(r1app1, realm1.getClientById(r1app1.getId())); assertThat(r1app1.getAttribute(REALM_ATTRIBUTE), is(realm1.getName())); @@ -189,18 +191,18 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { realm2.setDefaultRole(currentSession.roles().addRealmRole(realm2, Constants.DEFAULT_ROLES_ROLE_PREFIX + "-" + realm2.getName())); createObjects(currentSession, realm2); - Assert.assertEquals(realm2, currentSession.realms().getRealm(id2)); - Assert.assertEquals(realm2, currentSession.realms().getRealmByName("realm2")); + Assertions.assertEquals(realm2, currentSession.realms().getRealm(id2)); + Assertions.assertEquals(realm2, currentSession.realms().getRealmByName("realm2")); - Assert.assertNotNull(realm2.getClientByClientId("app1")); - Assert.assertNotNull(realm2.getClientByClientId("app2")); + Assertions.assertNotNull(realm2.getClientByClientId("app1")); + Assertions.assertNotNull(realm2.getClientByClientId("app2")); ClientModel r2cl1 = realm2.getClientByClientId("cl1"); - Assert.assertEquals(r2cl1.getId(), realm2.getClientById(r2cl1.getId()).getId()); + Assertions.assertEquals(r2cl1.getId(), realm2.getClientById(r2cl1.getId()).getId()); assertThat(r2cl1.getAttribute(REALM_ATTRIBUTE), is(realm2.getName())); RoleModel r1App1Role = r1app1.getRole("app1Role1"); - Assert.assertEquals(r1App1Role, realm1.getRoleById(r1App1Role.getId())); + Assertions.assertEquals(r1App1Role, realm1.getRoleById(r1App1Role.getId())); assertAttrRealm(realm1, r1App1Role.getAttributeStream(REALM_ATTRIBUTE)); RoleModel r2Role1 = realm2.getRole("role2"); @@ -247,7 +249,4 @@ public class MultipleRealmsTest extends AbstractTestRealmKeycloakTest { } - @Override - public void configureTestRealm(RealmRepresentation testRealm) { - } } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/SimpleModelTest.java b/tests/base/src/test/java/org/keycloak/tests/model/SimpleModelTest.java similarity index 59% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/SimpleModelTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/SimpleModelTest.java index 5bfdf48d2ea..c071e4d19c3 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/SimpleModelTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/SimpleModelTest.java @@ -15,47 +15,35 @@ * limitations under the License. */ -package org.keycloak.testsuite.model; - -import java.util.List; +package org.keycloak.tests.model; import org.keycloak.models.Constants; import org.keycloak.models.KeycloakSession; import org.keycloak.models.RealmModel; import org.keycloak.models.utils.KeycloakModelUtils; -import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.services.managers.RealmManager; -import org.keycloak.testsuite.AbstractKeycloakTest; -import org.keycloak.testsuite.arquillian.annotation.ModelTest; -import org.keycloak.testsuite.runonserver.RunOnServerException; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.remote.annotations.TestOnServer; -import org.junit.Assert; -import org.junit.Test; +import org.jboss.logging.Logger; +import org.junit.jupiter.api.Assertions; /** * @author Marek Posolda */ -public class SimpleModelTest extends AbstractKeycloakTest { +@KeycloakIntegrationTest +public class SimpleModelTest { - @Override - public void addTestRealms(List testRealms) { - } + private static final Logger log = Logger.getLogger(SimpleModelTest.class); + @InjectRealm(attachTo = "master") + ManagedRealm realm; - @Test - @ModelTest - public void simpleModelTest(KeycloakSession session) { - log.infof("simpleModelTest"); - RealmModel realm = session.realms().getRealmByName("master"); - - Assert.assertNotNull("Master realm was not found!", realm); - } - - - @Test - @ModelTest + @TestOnServer public void simpleModelTestWithNestedTransactions(KeycloakSession session) { - log.infof("simpleModelTestWithNestedTransactions"); + log.debug("simpleModelTestWithNestedTransactions"); // Transaction 1 KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession session1) -> { @@ -69,7 +57,7 @@ public class SimpleModelTest extends AbstractKeycloakTest { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession session2) -> { RealmModel realm = session2.realms().getRealmByName("foo"); - Assert.assertNotNull(realm); + Assertions.assertNotNull(realm); session2.getContext().setRealm(realm); realm.setAttribute("bar", "baz"); @@ -80,11 +68,11 @@ public class SimpleModelTest extends AbstractKeycloakTest { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession session3) -> { RealmModel realm = session3.realms().getRealmByName("foo"); - Assert.assertNotNull(realm); + Assertions.assertNotNull(realm); session3.getContext().setRealm(realm); String attrValue = realm.getAttribute("bar"); - Assert.assertEquals("baz", attrValue); + Assertions.assertEquals("baz", attrValue); realm.setAttribute("bar", "baz2"); @@ -95,34 +83,14 @@ public class SimpleModelTest extends AbstractKeycloakTest { KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), (KeycloakSession session4) -> { RealmModel realm = session4.realms().getRealmByName("foo"); - Assert.assertNotNull(realm); + Assertions.assertNotNull(realm); session4.getContext().setRealm(realm); String attrValue = realm.getAttribute("bar"); - Assert.assertEquals("baz", attrValue); + Assertions.assertEquals("baz", attrValue); new RealmManager(session4).removeRealm(realm); }); } - - // Just for the test that AssertionError is correctly propagated - @Test(expected = AssertionError.class) - @ModelTest - public void simpleModelTestWithAssertionError(KeycloakSession session) { - log.infof("simpleModelTestWithAssertionError"); - RealmModel realm = session.realms().getRealmByName("masterr"); - - // This should fail and throw the AssertionError - Assert.assertNotNull("Master realm was not found!", realm); - } - - - // Just for the test that other exception is correctly propagated - @Test(expected = RunOnServerException.class) - @ModelTest - public void simpleModelTestWithOtherError(KeycloakSession session) { - log.infof("simpleModelTestWithOtherError"); - throw new RuntimeException("Some strange exception"); - } } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/SingleUseProviderTest.java b/tests/base/src/test/java/org/keycloak/tests/model/SingleUseProviderTest.java similarity index 81% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/SingleUseProviderTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/SingleUseProviderTest.java index cb05da3f1d0..e485fc9ae6b 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/SingleUseProviderTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/SingleUseProviderTest.java @@ -17,7 +17,7 @@ * */ -package org.keycloak.testsuite.model; +package org.keycloak.tests.model; import java.util.ArrayList; import java.util.Collections; @@ -29,27 +29,29 @@ import java.util.concurrent.atomic.AtomicInteger; import org.keycloak.models.KeycloakSession; import org.keycloak.models.SingleUseObjectProvider; import org.keycloak.models.utils.KeycloakModelUtils; -import org.keycloak.representations.idm.RealmRepresentation; -import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; -import org.keycloak.testsuite.arquillian.annotation.ModelTest; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.remote.annotations.TestOnServer; -import org.junit.Assert; -import org.junit.Test; +import org.jboss.logging.Logger; +import org.junit.jupiter.api.Assertions; /** * @author Marek Posolda */ -public class SingleUseProviderTest extends AbstractTestRealmKeycloakTest { +@KeycloakIntegrationTest +public class SingleUseProviderTest { + + private static final Logger logger = Logger.getLogger(SingleUseProviderTest.class); private static final int ITEMS_COUNT = 100; private static final int THREADS_COUNT = 20; - @Override - public void configureTestRealm(RealmRepresentation testRealm) { - } + @InjectRealm(attachTo = "master") + ManagedRealm realm; - @Test - @ModelTest + @TestOnServer public void testConcurrentRemoveFromSingleUseCacheShouldFail(KeycloakSession session) throws Exception { Map tracker = new ConcurrentHashMap<>(); @@ -94,12 +96,12 @@ public class SingleUseProviderTest extends AbstractTestRealmKeycloakTest { // Check countSuccess and countFailures. For each key, only single successful "remove" is allowed. Other threads should fail to remove the item and nothing should be found for (Map.Entry entry : tracker.entrySet()) { - getLogger().info(entry.getKey() + ": " + entry.getValue()); + logger.debug(entry.getKey() + ": " + entry.getValue()); } for (Map.Entry entry : tracker.entrySet()) { - Assert.assertEquals(1, entry.getValue().countSuccess.get()); - Assert.assertEquals(THREADS_COUNT - 1, entry.getValue().countFailures.get()); + Assertions.assertEquals(1, entry.getValue().countSuccess.get()); + Assertions.assertEquals(THREADS_COUNT - 1, entry.getValue().countFailures.get()); } } diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/UserSessionProviderOfflineTest.java b/tests/base/src/test/java/org/keycloak/tests/model/UserSessionProviderOfflineTest.java similarity index 82% rename from testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/UserSessionProviderOfflineTest.java rename to tests/base/src/test/java/org/keycloak/tests/model/UserSessionProviderOfflineTest.java index a2a47b5c359..0e29b87d36d 100644 --- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/model/UserSessionProviderOfflineTest.java +++ b/tests/base/src/test/java/org/keycloak/tests/model/UserSessionProviderOfflineTest.java @@ -15,7 +15,7 @@ * limitations under the License. */ -package org.keycloak.testsuite.model; +package org.keycloak.tests.model; import java.util.HashMap; import java.util.HashSet; @@ -35,59 +35,37 @@ import org.keycloak.models.UserModel; import org.keycloak.models.UserSessionModel; import org.keycloak.models.utils.KeycloakModelUtils; import org.keycloak.protocol.oidc.OIDCLoginProtocol; -import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.services.managers.ClientManager; import org.keycloak.services.managers.RealmManager; import org.keycloak.services.managers.UserSessionManager; -import org.keycloak.testsuite.AbstractTestRealmKeycloakTest; -import org.keycloak.testsuite.arquillian.annotation.ModelTest; +import org.keycloak.testframework.annotations.InjectRealm; +import org.keycloak.testframework.annotations.KeycloakIntegrationTest; +import org.keycloak.testframework.injection.LifeCycle; +import org.keycloak.testframework.realm.ManagedRealm; +import org.keycloak.testframework.realm.RealmConfig; +import org.keycloak.testframework.realm.RealmConfigBuilder; +import org.keycloak.testframework.remote.annotations.TestOnServer; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Assertions; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Marek Posolda */ -public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTest { +@KeycloakIntegrationTest +public class UserSessionProviderOfflineTest { - @Before - public void before() { - testingClient.server("test").run(session -> - reloadState(session, true)); + @InjectRealm(config = UserSessionProviderOfflineRealm.class, lifecycle = LifeCycle.METHOD) + ManagedRealm managedRealm; - } - - @After - public void after() { - testingClient.server("test").run(session -> { - RealmModel realm = session.realms().getRealmByName("test"); - session.sessions().removeUserSessions(realm); - UserModel user1 = session.users().getUserByUsername(realm, "user1"); - UserModel user2 = session.users().getUserByUsername(realm, "user2"); - - UserManager um = new UserManager(session); - if (user1 != null) { - um.removeUser(realm, user1); - } - if (user2 != null) { - um.removeUser(realm, user2); - } - }); - } - - @Test - @ModelTest(realmName = "test") + @TestOnServer public void testOfflineSessionsCrud(KeycloakSession session) { Map> offlineSessions = new HashMap<>(); KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), session.getContext(), currentSession -> { // Create some online sessions in infinispan - reloadState(currentSession); createSessions(currentSession); }); @@ -108,30 +86,30 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes // Assert all previously saved offline sessions found for (Map.Entry> entry : offlineSessions.entrySet()) { UserSessionModel offlineSession = sessionManager.findOfflineUserSession(realm, entry.getKey()); - Assert.assertNotNull(offlineSession); - Assert.assertEquals(offlineSession.getAuthenticatedClientSessions().keySet(), entry.getValue()); + Assertions.assertNotNull(offlineSession); + Assertions.assertEquals(offlineSession.getAuthenticatedClientSessions().keySet(), entry.getValue()); } // Find clients with offline token UserModel user1 = currentSession.users().getUserByUsername(realm, "user1"); Set clients = sessionManager.findClientsWithOfflineToken(realm, user1); - Assert.assertEquals(2, clients.size()); + Assertions.assertEquals(2, clients.size()); for (ClientModel client : clients) { - Assert.assertTrue(client.getClientId().equals("test-app") || client.getClientId().equals("third-party")); + Assertions.assertTrue(client.getClientId().equals("test-app") || client.getClientId().equals("third-party")); } UserModel user2 = currentSession.users().getUserByUsername(realm, "user2"); clients = sessionManager.findClientsWithOfflineToken(realm, user2); - Assert.assertEquals(1, clients.size()); - Assert.assertEquals("test-app", clients.iterator().next().getClientId()); + Assertions.assertEquals(1, clients.size()); + Assertions.assertEquals("test-app", clients.iterator().next().getClientId()); // Test count ClientModel testApp = realm.getClientByClientId("test-app"); ClientModel thirdparty = realm.getClientByClientId("third-party"); - Assert.assertEquals(3, currentSession.sessions().getOfflineSessionsCount(realm, testApp)); - Assert.assertEquals(1, currentSession.sessions().getOfflineSessionsCount(realm, thirdparty)); + Assertions.assertEquals(currentSession.sessions().getOfflineSessionsCount(realm, testApp), 3); + Assertions.assertEquals(currentSession.sessions().getOfflineSessionsCount(realm, thirdparty), 1); // Revoke "test-app" for user1 sessionManager.revokeOfflineToken(user1, testApp); }); @@ -145,19 +123,19 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes List thirdpartySessions = currentSession.sessions().getOfflineUserSessionsStream(realm, thirdparty, 0, 10) .toList(); - Assert.assertEquals(1, thirdpartySessions.size()); - Assert.assertEquals("127.0.0.1", thirdpartySessions.get(0).getIpAddress()); - Assert.assertEquals("user1", thirdpartySessions.get(0).getUser().getUsername()); + Assertions.assertEquals(1, thirdpartySessions.size()); + Assertions.assertEquals("127.0.0.1", thirdpartySessions.get(0).getIpAddress()); + Assertions.assertEquals("user1", thirdpartySessions.get(0).getUser().getUsername()); UserModel user1 = currentSession.users().getUserByUsername(realm, "user1"); UserModel user2 = currentSession.users().getUserByUsername(realm, "user2"); Set clients = sessionManager.findClientsWithOfflineToken(realm, user1); - Assert.assertEquals(1, clients.size()); - Assert.assertEquals("third-party", clients.iterator().next().getClientId()); + Assertions.assertEquals(1, clients.size()); + Assertions.assertEquals("third-party", clients.iterator().next().getClientId()); clients = sessionManager.findClientsWithOfflineToken(realm, user2); - Assert.assertEquals(1, clients.size()); - Assert.assertEquals("test-app", clients.iterator().next().getClientId()); + Assertions.assertEquals(1, clients.size()); + Assertions.assertEquals("test-app", clients.iterator().next().getClientId()); // Revoke the second currentSession for user1 too. sessionManager.revokeOfflineToken(user1, thirdparty); @@ -172,25 +150,24 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes ClientModel thirdparty = realm.getClientByClientId("third-party"); // Accurate count now. All sessions of user1 cleared - Assert.assertEquals(1, currentSession.sessions().getOfflineSessionsCount(realm, testApp)); - Assert.assertEquals(0, currentSession.sessions().getOfflineSessionsCount(realm, thirdparty)); + Assertions.assertEquals(currentSession.sessions().getOfflineSessionsCount(realm, testApp), 1); + Assertions.assertEquals(currentSession.sessions().getOfflineSessionsCount(realm, thirdparty), 0); List testAppSessions = currentSession.sessions().getOfflineUserSessionsStream(realm, testApp, 0, 10) .toList(); - Assert.assertEquals(1, testAppSessions.size()); - Assert.assertEquals("127.0.0.3", testAppSessions.get(0).getIpAddress()); - Assert.assertEquals("user2", testAppSessions.get(0).getUser().getUsername()); + Assertions.assertEquals(1, testAppSessions.size()); + Assertions.assertEquals("127.0.0.3", testAppSessions.get(0).getIpAddress()); + Assertions.assertEquals("user2", testAppSessions.get(0).getUser().getUsername()); UserModel user1 = currentSession.users().getUserByUsername(realm, "user1"); Set clients = sessionManager.findClientsWithOfflineToken(realm, user1); - Assert.assertEquals(0, clients.size()); + Assertions.assertEquals(0, clients.size()); }); } - @Test - @ModelTest + @TestOnServer public void testOnRealmRemoved(KeycloakSession session) { AtomicReference userSessionID = new AtomicReference<>(); @@ -223,10 +200,10 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes createOfflineSessionIncludeClientSessions(currentSession, userSession); UserSessionModel offlineUserSession = sessionManager.findOfflineUserSession(fooRealm, userSession.getId()); - Assert.assertEquals(1, offlineUserSession.getAuthenticatedClientSessions().size()); + Assertions.assertEquals(1, offlineUserSession.getAuthenticatedClientSessions().size()); AuthenticatedClientSessionModel offlineClientSession = offlineUserSession.getAuthenticatedClientSessions().values().iterator().next(); - Assert.assertEquals("foo-app", offlineClientSession.getClient().getClientId()); - Assert.assertEquals("user3", offlineClientSession.getUserSession().getUser().getUsername()); + Assertions.assertEquals("foo-app", offlineClientSession.getClient().getClientId()); + Assertions.assertEquals("user3", offlineClientSession.getUserSession().getUser().getUsername()); }); KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), currentSession -> { @@ -248,7 +225,7 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes KeycloakModelUtils.runJobInTransaction(session.getKeycloakSessionFactory(), currentSession -> { RealmModel fooRealm = currentSession.realms().getRealm(realmId); currentSession.getContext().setRealm(fooRealm); - Assert.assertEquals(0, currentSession.sessions().getOfflineSessionsCount(fooRealm, fooRealm.getClientByClientId("foo-app"))); + Assertions.assertEquals(currentSession.sessions().getOfflineSessionsCount(fooRealm, fooRealm.getClientByClientId("foo-app")), 0); // Cleanup RealmManager realmMgr = new RealmManager(currentSession); @@ -256,8 +233,7 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes }); } - @Test - @ModelTest + @TestOnServer public void testOnClientRemoved(KeycloakSession session) { AtomicReference userSessionID = new AtomicReference<>(); String realmId = KeycloakModelUtils.runJobInTransactionWithResult(session.getKeycloakSessionFactory(), currentSession -> { @@ -316,8 +292,8 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes // Assert just one bar-app clientSession persisted now UserSessionModel offlineSession = currentSession.sessions().getOfflineUserSession(fooRealm, userSessionID.get()); - Assert.assertEquals(1, offlineSession.getAuthenticatedClientSessions().size()); - Assert.assertEquals("bar-app", offlineSession.getAuthenticatedClientSessions().values().iterator().next().getClient().getClientId()); + Assertions.assertEquals(1, offlineSession.getAuthenticatedClientSessions().size()); + Assertions.assertEquals("bar-app", offlineSession.getAuthenticatedClientSessions().values().iterator().next().getClient().getClientId()); // Remove bar-app client ClientModel client = fooRealm.getClientByClientId("bar-app"); @@ -330,7 +306,7 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes RealmModel fooRealm = realmMgr.getRealm(realmId); currentSession.getContext().setRealm(fooRealm); UserSessionModel offlineSession = currentSession.sessions().getOfflineUserSession(fooRealm, userSessionID.get()); - Assert.assertEquals(0, offlineSession.getAuthenticatedClientSessions().size()); + Assertions.assertEquals(0, offlineSession.getAuthenticatedClientSessions().size()); }); } catch (Exception e) { @@ -352,8 +328,7 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes } } - @Test - @ModelTest + @TestOnServer public void testOnUserRemoved(KeycloakSession session) { AtomicReference userSessionID = new AtomicReference<>(); String realmId = KeycloakModelUtils.runJobInTransactionWithResult(session.getKeycloakSessionFactory(), currentSession -> { @@ -441,7 +416,7 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes for (Map.Entry entry : session.getAuthenticatedClientSessions().entrySet()) { String clientUUID = entry.getKey(); AuthenticatedClientSessionModel clientSession = entry.getValue(); - Assert.assertEquals(clientUUID, clientSession.getClient().getId()); + Assertions.assertEquals(clientUUID, clientSession.getClient().getId()); } } @@ -470,20 +445,18 @@ public class UserSessionProviderOfflineTest extends AbstractTestRealmKeycloakTes return sessions; } - public static void reloadState(KeycloakSession session) { - reloadState(session, false); - } + public static class UserSessionProviderOfflineRealm implements RealmConfig { - public static void reloadState(KeycloakSession currentSession, Boolean initialConfig) { - RealmModel realm = currentSession.realms().getRealmByName("test"); - if (initialConfig) { - currentSession.users().addUser(realm, "user1").setEmail("user1@localhost"); - currentSession.users().addUser(realm, "user2").setEmail("user2@localhost"); + @Override + public RealmConfigBuilder configure(RealmConfigBuilder realm) { + realm.name("test"); + realm.addClient("test-app"); + realm.addClient("third-party"); + realm.addUser("user1").email("user1@localhost"); + realm.addUser("user2").email("user2@localhost"); + return realm; } - } - - @Override - public void configureTestRealm(RealmRepresentation testRealm) { } + } diff --git a/tests/base/src/test/java/org/keycloak/tests/suites/Base2TestSuite.java b/tests/base/src/test/java/org/keycloak/tests/suites/Base2TestSuite.java index dc4ba3af5fd..6c605bd28b5 100644 --- a/tests/base/src/test/java/org/keycloak/tests/suites/Base2TestSuite.java +++ b/tests/base/src/test/java/org/keycloak/tests/suites/Base2TestSuite.java @@ -13,6 +13,7 @@ import org.junit.platform.suite.api.Suite; "org.keycloak.tests.i18n", "org.keycloak.tests.infinispan", "org.keycloak.tests.keys", + "org.keycloak.tests.model", "org.keycloak.tests.oauth", "org.keycloak.tests.tracing", "org.keycloak.tests.transactions",