/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates
* and other contributors as indicated by the @author tags.
*
* 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.adapter.example;
import org.jboss.arquillian.graphene.page.Page;
import org.junit.Test;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.testsuite.adapter.AbstractExampleAdapterTest;
import org.keycloak.testsuite.adapter.page.fuse.AdminInterface;
import org.keycloak.testsuite.adapter.page.fuse.CustomerListing;
import org.keycloak.testsuite.adapter.page.fuse.CustomerPortalFuseExample;
import org.keycloak.testsuite.adapter.page.fuse.ProductPortalFuseExample;
import org.keycloak.testsuite.auth.page.account.Account;
import java.io.File;
import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.keycloak.testsuite.auth.page.AuthRealm.DEMO;
import static org.keycloak.testsuite.util.IOUtil.loadRealm;
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWith;
import static org.keycloak.testsuite.util.URLAssert.assertCurrentUrlStartsWithLoginUrlOf;
import static org.keycloak.testsuite.util.WaitUtils.pause;
/**
*
* @author tkyjovsk
*/
public abstract class AbstractFuseExampleAdapterTest extends AbstractExampleAdapterTest {
@Page
protected CustomerPortalFuseExample customerPortal;
@Page
protected CustomerListing customerListing;
@Page
protected AdminInterface adminInterface;
@Page
protected ProductPortalFuseExample productPortal;
@Page
protected Account testRealmAccount;
@Override
public void addAdapterTestRealms(List<RealmRepresentation> testRealms) {
RealmRepresentation fuseRealm = loadRealm(new File(EXAMPLES_HOME_DIR + "/fuse/demorealm.json"));
testRealms.add(fuseRealm);
}
@Override
public void setDefaultPageUriParameters() {
super.setDefaultPageUriParameters();
testRealmPage.setAuthRealm(DEMO);
testRealmLoginPage.setAuthRealm(DEMO);
testRealmAccount.setAuthRealm(DEMO);
}
// no Arquillian deployments - examples already installed by maven
@Test
public void testCustomerListingAndAccountManagement() {
customerPortal.navigateTo();
assertCurrentUrlStartsWith(customerPortal);
customerPortal.clickCustomerListingLink();
assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
testRealmLoginPage.form().login("bburke@redhat.com", "password");
assertCurrentUrlStartsWith(customerListing);
String src = driver.getPageSource();
assertTrue(src.contains("Username: bburke@redhat.com")
&& src.contains("Bill Burke")
&& src.contains("Stian Thorgersen")
);
// account mgmt
customerListing.clickAccountManagement();
assertCurrentUrlStartsWith(testRealmAccount);
assertEquals(testRealmAccount.getUsername(), "bburke@redhat.com");
driver.navigate().back();
customerListing.clickLogOut();
// assert user not logged in
customerPortal.clickCustomerListingLink();
assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
}
@Test
public void testAdminInterface() {
customerPortal.navigateTo();
assertCurrentUrlStartsWith(customerPortal);
customerPortal.clickAdminInterfaceLink();
assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
testRealmLoginPage.form().login("admin", "password");
assertCurrentUrlStartsWith(adminInterface);
assertTrue(driver.getPageSource().contains("Hello admin!"));
assertTrue(driver.getPageSource().contains("This second sentence is returned from a Camel RestDSL endpoint"));
customerListing.navigateTo();
customerListing.clickLogOut();
pause(500);
assertCurrentUrlStartsWith(customerPortal);
customerPortal.navigateTo();//needed for phantomjs
customerPortal.clickAdminInterfaceLink();
assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
testRealmLoginPage.form().login("bburke@redhat.com", "password");
assertCurrentUrlStartsWith(adminInterface);
assertTrue(driver.getPageSource().contains("Status code is 403"));
}
@Test
public void testProductPortal() {
productPortal.navigateTo();
assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
testRealmLoginPage.form().login("bburke@redhat.com", "password");
assertCurrentUrlStartsWith(productPortal);
assertTrue(productPortal.getProduct1UnsecuredText().contains("401: Unauthorized"));
assertTrue(productPortal.getProduct1SecuredText().contains("Product received: id=1"));
assertTrue(productPortal.getProduct2SecuredText().contains("Product received: id=2"));
productPortal.clickLogOutLink();
assertCurrentUrlStartsWithLoginUrlOf(testRealmPage);
}
}