Skip to content

Commit cf8c225

Browse files
committed
update_java_version
1 parent 6538fc1 commit cf8c225

File tree

8 files changed

+363
-6
lines changed

8 files changed

+363
-6
lines changed

java-maven-selenium/src/test/java/com/mailslurp/examples/ExampleUsageTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package com.mailslurp.examples;
22

3-
import com.mailslurp.api.api.InboxControllerApi;
4-
import com.mailslurp.api.api.WaitForControllerApi;
5-
import com.mailslurp.client.ApiClient;
6-
import com.mailslurp.client.ApiException;
7-
import com.mailslurp.client.Configuration;
3+
import com.mailslurp.apis.InboxControllerApi;
4+
import com.mailslurp.apis.WaitForControllerApi;
5+
import com.mailslurp.clients.ApiClient;
6+
import com.mailslurp.clients.ApiException;
7+
import com.mailslurp.clients.Configuration;
88
import com.mailslurp.models.Email;
99
import com.mailslurp.models.Inbox;
1010
import java.io.File;
@@ -96,7 +96,7 @@ public void test2_canClickSignUpButton() {
9696
public void test3_canCreateEmailAddressAndSignUp() throws ApiException {
9797
// create a real, randomized email address with MailSlurp to represent a user
9898
InboxControllerApi inboxControllerApi = new InboxControllerApi(mailslurpClient);
99-
inbox = inboxControllerApi.createInbox(null,null,null,null, null, null);
99+
inbox = inboxControllerApi.createInbox(null,null,null,null,null,null,null, null, null);
100100

101101
// check the inbox was created
102102
assertNotNull(inbox.getId());

java-testng-selenium/.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
bin
2+
target
3+
.idea
4+
*.iml
5+
chromedriver
6+
geckodriver
7+
build

java-testng-selenium/Makefile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
-include ../.env
2+
3+
DRIVER_LOCATION=geckodriver
4+
DRIVER_URL=https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
5+
6+
$(DRIVER_LOCATION):
7+
curl -s -L "$(DRIVER_URL)" | tar -xz
8+
chmod +x $(DRIVER_LOCATION)
9+
10+
test: $(DRIVER_LOCATION)
11+
API_KEY=$(API_KEY) \
12+
PATH_TO_WEBDRIVER=$(realpath $(DRIVER_LOCATION)) \
13+
mvn install test

java-testng-selenium/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# TestNG Acceptance Testing User Sign Up with Selenium and MailSlurp
2+
3+
## Install
4+
`make install`
5+
6+
## Test
7+
`API_KEY=your-mailslurp-key make test`

java-testng-selenium/pom.xml

Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
<modelVersion>4.0.0</modelVersion>
4+
<groupId>com.mailslurp.examples</groupId>
5+
<artifactId>testng</artifactId>
6+
<version>1.0-SNAPSHOT</version>
7+
<packaging>jar</packaging>
8+
9+
<properties>
10+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
11+
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
12+
</properties>
13+
14+
<dependencies>
15+
<dependency>
16+
<groupId>com.mailslurp</groupId>
17+
<artifactId>mailslurp-client-java</artifactId>
18+
<version>11.5.20</version>
19+
</dependency>
20+
<dependency>
21+
<groupId>org.testng</groupId>
22+
<artifactId>testng</artifactId>
23+
<version>7.1.0</version>
24+
</dependency>
25+
<dependency>
26+
<groupId>ru.stqa.selenium</groupId>
27+
<artifactId>webdriver-factory</artifactId>
28+
<version>4.3</version>
29+
</dependency>
30+
<dependency>
31+
<groupId>org.seleniumhq.selenium</groupId>
32+
<artifactId>selenium-java</artifactId>
33+
<version>3.141.59</version>
34+
</dependency>
35+
</dependencies>
36+
<build>
37+
<resources>
38+
<resource>
39+
<directory>src/main/resources</directory>
40+
<filtering>true</filtering>
41+
</resource>
42+
</resources>
43+
<testResources>
44+
<testResource>
45+
<directory>src/test/resources</directory>
46+
<filtering>true</filtering>
47+
</testResource>
48+
</testResources>
49+
<plugins>
50+
<plugin>
51+
<groupId>org.apache.maven.plugins</groupId>
52+
<artifactId>maven-resources-plugin</artifactId>
53+
<version>3.1.0</version>
54+
<configuration>
55+
<encoding>UTF-8</encoding>
56+
</configuration>
57+
</plugin>
58+
<plugin>
59+
<artifactId>maven-surefire-plugin</artifactId>
60+
<version>2.22.2</version>
61+
<configuration>
62+
<suiteXmlFiles>
63+
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
64+
</suiteXmlFiles>
65+
<systemPropertyVariables>
66+
<application.properties>/application.properties</application.properties>
67+
</systemPropertyVariables>
68+
</configuration>
69+
</plugin>
70+
<plugin>
71+
<artifactId>maven-compiler-plugin</artifactId>
72+
<version>3.8.1</version>
73+
<configuration>
74+
<source>11</source>
75+
<target>11</target>
76+
</configuration>
77+
</plugin>
78+
</plugins>
79+
</build>
80+
<!-- profiles -->
81+
<profiles>
82+
<!-- browsers -->
83+
<profile>
84+
<id>firefox</id>
85+
<properties>
86+
<capabilities>/firefox.capabilities</capabilities>
87+
</properties>
88+
<activation>
89+
<activeByDefault>true</activeByDefault>
90+
</activation>
91+
</profile>
92+
<profile>
93+
<id>chrome</id>
94+
<properties>
95+
<capabilities>/chrome.capabilities</capabilities>
96+
</properties>
97+
</profile>
98+
<profile>
99+
<id>ie</id>
100+
<properties>
101+
<capabilities>/ie.capabilities</capabilities>
102+
</properties>
103+
</profile>
104+
<profile>
105+
<id>safari</id>
106+
<properties>
107+
<capabilities>/safari.capabilities</capabilities>
108+
</properties>
109+
</profile>
110+
<profile>
111+
<id>opera</id>
112+
<properties>
113+
<capabilities>/opera.capabilities</capabilities>
114+
</properties>
115+
</profile>
116+
<!-- environments -->
117+
<profile>
118+
<id>localhost</id>
119+
<properties>
120+
<site.url>http://localhost/</site.url>
121+
</properties>
122+
<activation>
123+
<activeByDefault>true</activeByDefault>
124+
</activation>
125+
</profile>
126+
<profile>
127+
<id>devhost</id>
128+
<properties>
129+
<site.url>http://devhost/</site.url>
130+
</properties>
131+
</profile>
132+
<profile>
133+
<id>testhost</id>
134+
<properties>
135+
<site.url>http://testhost/</site.url>
136+
</properties>
137+
</profile>
138+
<profile>
139+
<id>prodhost</id>
140+
<properties>
141+
<site.url>http://prodhost.com/</site.url>
142+
</properties>
143+
</profile>
144+
<!-- grid -->
145+
<profile>
146+
<id>nogrid</id>
147+
<properties>
148+
<grid.url></grid.url>
149+
</properties>
150+
<activation>
151+
<activeByDefault>true</activeByDefault>
152+
</activation>
153+
</profile>
154+
<profile>
155+
<id>grid</id>
156+
<properties>
157+
<grid.url>http://localhost:4444/wd/hub/</grid.url>
158+
</properties>
159+
</profile>
160+
</profiles>
161+
</project>
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
package com.mailslurp.examples;
2+
3+
import com.mailslurp.apis.InboxControllerApi;
4+
import com.mailslurp.apis.WaitForControllerApi;
5+
import com.mailslurp.clients.ApiClient;
6+
import com.mailslurp.clients.ApiException;
7+
import com.mailslurp.clients.Configuration;
8+
import com.mailslurp.models.Email;
9+
import com.mailslurp.models.Inbox;
10+
import org.openqa.selenium.By;
11+
import org.openqa.selenium.WebDriver;
12+
import org.openqa.selenium.firefox.FirefoxDriver;
13+
import org.testng.annotations.AfterSuite;
14+
import org.testng.annotations.BeforeSuite;
15+
import org.testng.annotations.Test;
16+
import ru.stqa.selenium.factory.WebDriverPool;
17+
import java.io.File;
18+
import java.util.Random;
19+
import java.util.concurrent.TimeUnit;
20+
import java.util.regex.Matcher;
21+
import java.util.regex.Pattern;
22+
23+
import static org.testng.Assert.*;
24+
25+
public class SignUpTestNGExample {
26+
27+
// website useful for testing, has a real authentication flow
28+
private static final String PLAYGROUND_URL = "https://playground.mailslurp.com";
29+
30+
// get a MailSlurp API Key free at https://app.mailslurp.com
31+
private static final String YOUR_API_KEY = System.getenv("API_KEY");
32+
private static final String WEBDRIVER_PATH = System.getenv("PATH_TO_WEBDRIVER");
33+
private static final String TEST_PASSWORD = "password-" + new Random().nextLong();
34+
private static final Boolean UNREAD_ONLY = true;
35+
private static final Long TIMEOUT_MILLIS = 30000L;
36+
private static Inbox inbox;
37+
private static Email email;
38+
private static String confirmationCode;
39+
private static ApiClient mailslurpClient;
40+
private static WebDriver driver;
41+
42+
@BeforeSuite
43+
public void initTestSuite() {
44+
assertNotNull(YOUR_API_KEY);
45+
assertNotNull(WEBDRIVER_PATH);
46+
47+
// setup mailslurp
48+
mailslurpClient = Configuration.getDefaultApiClient();
49+
mailslurpClient.setApiKey(YOUR_API_KEY);
50+
mailslurpClient.setConnectTimeout(TIMEOUT_MILLIS.intValue());
51+
52+
// setup webdriver (expects geckodriver binary at WEBDRIVER_PATH)
53+
assertTrue(new File(WEBDRIVER_PATH).exists());
54+
System.setProperty("webdriver.gecko.driver", WEBDRIVER_PATH);
55+
driver = new FirefoxDriver();
56+
driver.manage().timeouts().implicitlyWait(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
57+
}
58+
59+
/**
60+
* Load the playground site in selenium
61+
*/
62+
@Test
63+
public void test1_canLoadAuthenticationPlayground() {
64+
driver.get(PLAYGROUND_URL);
65+
assertEquals(driver.getTitle(), "React App");
66+
}
67+
68+
/**
69+
* Start the sign-up process
70+
*/
71+
@Test
72+
public void test2_canClickSignUpButton() {
73+
driver.findElement(By.cssSelector("[data-test=sign-in-create-account-link]")).click();
74+
}
75+
76+
/**
77+
* Create a real email address with MailSlurp and use it to start sign-up on the playground
78+
*/
79+
@Test
80+
public void test3_canCreateEmailAddressAndSignUp() throws ApiException {
81+
// create a real, randomized email address with MailSlurp to represent a user
82+
InboxControllerApi inboxControllerApi = new InboxControllerApi(mailslurpClient);
83+
inbox = inboxControllerApi.createInbox(null, null,null, null,null,null,null, null, null);
84+
85+
// check the inbox was created
86+
assertNotNull(inbox.getId());
87+
assertTrue(inbox.getEmailAddress().contains("@mailslurp.com"));
88+
89+
// fill the playground app's sign-up form with the MailSlurp
90+
// email address and a random password
91+
driver.findElement(By.name("email")).sendKeys(inbox.getEmailAddress());
92+
driver.findElement(By.name("password")).sendKeys(TEST_PASSWORD);
93+
94+
// submit the form to trigger the playground's email confirmation process
95+
// we will need to receive the confirmation email and extract a code
96+
driver.findElement(By.cssSelector("[data-test=sign-up-create-account-button]")).click();
97+
}
98+
99+
/**
100+
* Use MailSlurp to receive the confirmation email that is sent by playground
101+
*/
102+
@Test
103+
public void test4_canReceiveConfirmationEmail() throws ApiException {
104+
// receive a verification email from playground using mailslurp
105+
WaitForControllerApi waitForControllerApi = new WaitForControllerApi(mailslurpClient);
106+
email = waitForControllerApi.waitForLatestEmail(inbox.getId(), TIMEOUT_MILLIS, UNREAD_ONLY);
107+
108+
// verify the contents
109+
assertTrue(email.getSubject().contains("Please confirm your email address"));
110+
}
111+
112+
/**
113+
* Extract the confirmation code from email body using regex pattern
114+
*/
115+
@Test
116+
public void test5_canExtractConfirmationCodeFromEmail() {
117+
// create a regex for matching the code we expect in the email body
118+
Pattern p = Pattern.compile(".*verification code is (\\d+).*");
119+
Matcher matcher = p.matcher(email.getBody());
120+
121+
// find first occurrence and extract
122+
assertTrue(matcher.find());
123+
confirmationCode = matcher.group(1);
124+
125+
assertTrue(confirmationCode.length() == 6);
126+
}
127+
128+
/**
129+
* Submit the confirmation code to the playground to confirm the user
130+
*/
131+
@Test
132+
public void test6_canSubmitVerificationCodeToPlayground() {
133+
driver.findElement(By.name("code")).sendKeys(confirmationCode);
134+
driver.findElement(By.cssSelector("[data-test=confirm-sign-up-confirm-button]")).click();
135+
}
136+
137+
/**
138+
* Test sign-in as confirmed user
139+
*/
140+
@Test
141+
public void test7_canLoginWithConfirmedUser() {
142+
// load the main playground login page
143+
driver.get(PLAYGROUND_URL);
144+
145+
// login with now confirmed email address
146+
driver.findElement(By.name("username")).sendKeys(inbox.getEmailAddress());
147+
driver.findElement(By.name("password")).sendKeys(TEST_PASSWORD);
148+
driver.findElement(By.cssSelector("[data-test=sign-in-sign-in-button]")).click();
149+
150+
// verify that user can see authenticated content
151+
assertTrue(driver.findElement(By.tagName("h1")).getText().contains("Welcome"));
152+
}
153+
154+
@AfterSuite(alwaysRun = true)
155+
public void tearDown() {
156+
WebDriverPool.DEFAULT.dismissAll();
157+
}
158+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
capabilities=${capabilities}
2+
site.url=${site.url}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
3+
<suite name="Tests" verbose="5">
4+
<test name="Test1">
5+
<classes>
6+
<class name="com.mailslurp.examples.SignUpTestNGExample"/>
7+
</classes>
8+
</test>
9+
</suite>

0 commit comments

Comments
 (0)