/* * JBoss, Home of Professional Open Source * * Copyright 2013 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.keycloak.testsuite.console.authentication.actions; import org.jboss.arquillian.graphene.page.Page; import org.junit.Assert; import org.junit.Test; import org.keycloak.admin.client.resource.RealmResource; import org.keycloak.representations.idm.CredentialRepresentation; import org.keycloak.representations.idm.RealmRepresentation; import org.keycloak.representations.idm.UserRepresentation; import org.keycloak.testsuite.auth.page.login.Registration; import org.keycloak.testsuite.auth.page.login.TermsAndConditions; import org.keycloak.testsuite.console.AbstractConsoleTest; import org.keycloak.testsuite.console.page.authentication.RequiredActions; import java.util.ArrayList; import java.util.List; /** * */ public class TermsAndConditionsTest extends AbstractConsoleTest { private static final String TERMS_TEXT = "Terms and conditions to be defined"; private static final String REALM = "TermsAndConditions"; private static final String BART = "Bart"; private static final String BART_PASS = "Ay caramba!"; private static final String HOMER = "Homer"; private static final String HOMER_PASS = "Mmm donuts."; @Page private TermsAndConditions termsAndConditionsPage; @Page private Registration registrationPage; @Override public void beforeConsoleTest() { // no operation - we don't need 'admin' user for this test. } @Override public void setDefaultPageUriParameters() { super.setDefaultPageUriParameters(); testRealmPage.setAuthRealm(REALM); testRealmAdminConsolePage.setAdminRealm(REALM); } @Override public void addTestRealms(List<RealmRepresentation> testRealms) { RealmRepresentation testRealmRep = new RealmRepresentation(); testRealmRep.setRealm(REALM); testRealmRep.setEnabled(true); testRealms.add(testRealmRep); } @Test public void testExistingUser() { // create user String userId = createUser(REALM, HOMER, HOMER_PASS); // test t&c - log in and make sure t&c is not displayed testRealmAdminConsolePage.navigateTo(); testRealmLoginPage.form().login(HOMER, HOMER_PASS); testRealmAdminConsolePage.logOut(); // enable terms setRequiredActionEnabled(REALM, RequiredActions.TERMS_AND_CONDITIONS, true, false); setRequiredActionEnabled(REALM, userId, RequiredActions.TERMS_AND_CONDITIONS, true); // test t&c - log in and accept testRealmLoginPage.form().login(HOMER, HOMER_PASS); Assert.assertEquals(TERMS_TEXT, termsAndConditionsPage.getText()); termsAndConditionsPage.declineTerms(); testRealmLoginPage.form().login(HOMER, HOMER_PASS); Assert.assertEquals(TERMS_TEXT, termsAndConditionsPage.getText()); termsAndConditionsPage.acceptTerms(); testRealmAdminConsolePage.logOut(); testRealmLoginPage.form().login(HOMER, HOMER_PASS); testRealmAdminConsolePage.logOut(); // disable terms setRequiredActionEnabled(REALM, RequiredActions.TERMS_AND_CONDITIONS, false, false); } @Test public void testAdminCreatedUser() { // enable terms setRequiredActionEnabled(REALM, RequiredActions.TERMS_AND_CONDITIONS, true, false); // create user String userId = createUser(REALM, BART, BART_PASS); setRequiredActionEnabled(REALM, userId, RequiredActions.TERMS_AND_CONDITIONS, true); // test t&c testRealmAdminConsolePage.navigateTo(); testRealmLoginPage.form().login(BART, BART_PASS); Assert.assertTrue(termsAndConditionsPage.isCurrent()); // disable terms setRequiredActionEnabled(REALM, RequiredActions.TERMS_AND_CONDITIONS, false, false); } @Test public void testSelfRegisteredUser() { // enable self-registration RealmResource realmResource = adminClient.realm(REALM); RealmRepresentation realmRepresentation = realmResource.toRepresentation(); realmRepresentation.setRegistrationAllowed(true); realmResource.update(realmRepresentation); // enable terms setRequiredActionEnabled(REALM, RequiredActions.TERMS_AND_CONDITIONS, true, true); // self-register CredentialRepresentation mrBurnsPassword = new CredentialRepresentation(); mrBurnsPassword.setType(CredentialRepresentation.PASSWORD); mrBurnsPassword.setValue("Excellent."); List<CredentialRepresentation> credentials = new ArrayList<CredentialRepresentation>(); credentials.add(mrBurnsPassword); UserRepresentation mrBurns = new UserRepresentation(); mrBurns.setUsername("mrburns"); mrBurns.setFirstName("Montgomery"); mrBurns.setLastName("Burns"); mrBurns.setEmail("mburns@keycloak.org"); mrBurns.setCredentials(credentials); testRealmAdminConsolePage.navigateTo(); testRealmLoginPage.form().register(); registrationPage.register(mrBurns); // test t&c Assert.assertTrue(termsAndConditionsPage.isCurrent()); // disable terms setRequiredActionEnabled(REALM, RequiredActions.TERMS_AND_CONDITIONS, false, false); } }