blob: 2c5f01924a86c9ca5b5e4c27ef95d573b19be093 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. The ASF licenses this file to You
* 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. For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/
package org.apache.roller.selenium;
import java.util.regex.Pattern;
import java.util.concurrent.TimeUnit;
import org.junit.*;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.apache.roller.selenium.core.CreateWeblogPage;
import org.apache.roller.selenium.core.LoginPage;
import org.apache.roller.selenium.core.MainMenuPage;
import org.apache.roller.selenium.core.RegisterPage;
import org.apache.roller.selenium.core.SetupPage;
import org.apache.roller.selenium.core.WelcomePage;
import org.apache.roller.selenium.editor.EntryAddPage;
import org.apache.roller.selenium.editor.EntryEditPage;
import org.apache.roller.selenium.view.BlogHomePage;
import org.apache.roller.selenium.view.SingleBlogEntryPage;
import org.openqa.selenium.firefox.FirefoxProfile;
public class InitialLoginTestIT {
private WebDriver driver;
private String baseUrl;
private boolean acceptNextAlert = true;
private StringBuffer verificationErrors = new StringBuffer();
@Before
public void setUp() throws Exception {
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("intl.accept_languages", "en_US");
driver = new FirefoxDriver(profile);
baseUrl = "http://localhost:8080/roller/";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void testInitialLogin() throws Exception {
// create new user and first blog
driver.get(baseUrl);
SetupPage sp = new SetupPage(driver);
RegisterPage rp = sp.createNewUser();
WelcomePage wp = rp.submitUserRegistration("bsmith", "Bob Smith", "bsmith@email.com", "roller123");
LoginPage lp = wp.doRollerLogin();
MainMenuPage mmp = lp.loginToRoller("bsmith", "roller123");
CreateWeblogPage cwp = mmp.createWeblog();
mmp = cwp.createWeblog("Bob's Blog", "bobsblog", "bsmith@email.com");
// set bobsblog as the front page blog
driver.get(baseUrl);
BlogHomePage bhp = sp.chooseFrontPageBlog();
// create and read first blog entry
String blogEntryTitle = "My First Blog Entry";
String blogEntryContent = "Welcome to my blog!";
EntryAddPage eap = bhp.createNewBlogEntry();
eap.setTitle(blogEntryTitle);
eap.setText(blogEntryContent);
EntryEditPage eep = eap.postBlogEntry();
SingleBlogEntryPage sbep = eep.viewBlogEntry();
System.out.println("title/text: " + sbep.getBlogTitle() + " / " + sbep.getBlogText());
assertEquals(blogEntryTitle, sbep.getBlogTitle());
assertEquals(blogEntryContent, sbep.getBlogText());
}
@After
public void tearDown() throws Exception {
driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
}
}
private boolean isElementPresent(By by) {
try {
driver.findElement(by);
return true;
} catch (NoSuchElementException e) {
return false;
}
}
private boolean isAlertPresent() {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException e) {
return false;
}
}
private String closeAlertAndGetItsText() {
try {
Alert alert = driver.switchTo().alert();
String alertText = alert.getText();
if (acceptNextAlert) {
alert.accept();
} else {
alert.dismiss();
}
return alertText;
} finally {
acceptNextAlert = true;
}
}
}