Skip to content

Commit 796a249

Browse files
authored
Merge pull request #80 from Sprokof/add-ui-accountAlreadyExist-test
Add UI account already exist test
2 parents 8bf10aa + 81cacfa commit 796a249

File tree

7 files changed

+514
-36
lines changed

7 files changed

+514
-36
lines changed

.idea/dbnavigator.xml

Lines changed: 402 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,44 @@
11
package ui;
22

3+
import com.digitalsanctuary.spring.user.dto.UserDto;
34
import org.junit.jupiter.api.AfterAll;
45
import org.junit.jupiter.api.Assertions;
56
import org.junit.jupiter.api.Test;
7+
import ui.data.UiTestData;
68
import ui.jdbc.Jdbc;
79
import ui.page.RegisterPage;
810
import ui.page.SuccessRegisterPage;
911

10-
import static ui.data.UserTestData.*;
12+
import static ui.data.UiTestData.*;
1113

1214
public class SpringUserFrameworkTest extends BaseTest {
13-
private static final String SUCCESS_MESSAGE = "Thank you for registering!";
15+
1416
private static final String URI = "http://localhost:8080/";
1517

18+
private static final UserDto testUser = UiTestData.getUserDto();
19+
1620
@AfterAll
1721
public static void deleteTestUser() {
18-
Jdbc.deleteTestUser();
22+
Jdbc.deleteTestUser(testUser);
1923
}
2024

2125
@Test
2226
public void successSignUp() {
23-
RegisterPage registerPage = new RegisterPage(URI + "user/register.html");
24-
registerPage.signUp(FIRST_NAME, LAST_NAME, EMAIL, PASSWORD, CONFIRM_PASSWORD);
25-
SuccessRegisterPage successRegisterPage = new SuccessRegisterPage();
26-
String actual = successRegisterPage.message();
27-
Assertions.assertEquals(actual, SUCCESS_MESSAGE);
27+
SuccessRegisterPage registerPage = new RegisterPage(URI + "user/register.html")
28+
.signUp(testUser.getFirstName(), testUser.getLastName(), testUser.getEmail(),
29+
testUser.getPassword(), testUser.getMatchingPassword());
30+
String actualMessage = registerPage.message();
31+
Assertions.assertEquals(SUCCESS_SING_UP_MESSAGE, actualMessage);
32+
}
33+
34+
@Test
35+
public void userAlreadyExistSignUp() {
36+
Jdbc.saveTestUser(testUser);
37+
RegisterPage page = new RegisterPage(URI + "user/register.html");
38+
page.signUp(testUser.getFirstName(), testUser.getLastName(), testUser.getEmail(),
39+
testUser.getPassword(), testUser.getMatchingPassword());
40+
String actualMessage = page.accountExistErrorMessage();
41+
Assertions.assertEquals(ACCOUNT_EXIST_ERROR_MESSAGE, actualMessage);
2842
}
43+
2944
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package ui.data;
2+
3+
import com.digitalsanctuary.spring.user.dto.UserDto;
4+
public class UiTestData {
5+
6+
public static final String ACCOUNT_EXIST_ERROR_MESSAGE = "An account for that username/email already exists. " +
7+
"Please enter a different email.";
8+
9+
public static final String SUCCESS_SING_UP_MESSAGE = "Thank you for registering!";
10+
11+
public static UserDto getUserDto() {
12+
UserDto userDto = new UserDto();
13+
userDto.setFirstName("testUser");
14+
userDto.setLastName("userTest");
15+
userDto.setEmail("[email protected]");
16+
userDto.setPassword("testUserPassword");
17+
userDto.setMatchingPassword("testUserPassword");
18+
return userDto;
19+
}
20+
}

src/test/java/ui/data/UserTestData.java

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/test/java/ui/jdbc/ConnectionManager.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,29 @@
66

77
public class ConnectionManager {
88

9+
private static final String driver = "org.mariadb.jdbc.Driver";
10+
11+
private static final String url = "jdbc:mariadb://127.0.0.1:3306/springuser";
12+
13+
private static final String username = "springuser";
14+
15+
private static final String password = "springuser";
16+
917
static {
1018
initDriver();
1119
}
1220

1321
private static void initDriver() {
1422
try {
15-
Class.forName("org.mariadb.jdbc.Driver");
23+
Class.forName(driver);
1624
} catch (ClassNotFoundException e) {
1725
throw new RuntimeException(e);
1826
}
1927
}
2028

2129
public static Connection open() {
2230
try {
23-
return DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/springuser", "springuser", "springuser");
31+
return DriverManager.getConnection(url, username, password);
2432
} catch (SQLException e) {
2533
throw new RuntimeException(e);
2634
}

src/test/java/ui/jdbc/Jdbc.java

Lines changed: 45 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,65 @@
11
package ui.jdbc;
22

3+
import com.digitalsanctuary.spring.user.dto.UserDto;
34
import java.sql.Connection;
45
import java.sql.PreparedStatement;
6+
import java.sql.ResultSet;
57
import java.sql.SQLException;
68

7-
import static ui.data.UserTestData.EMAIL;
8-
import static ui.data.UserTestData.FIRST_NAME;
9-
109
/**
11-
* Using for test user data from db when it storing by UI test
10+
* Using for delete/save user test data
1211
*/
1312
public class Jdbc {
1413
private static final String DELETE_VERIFICATION_TOKEN_QUERY = "DELETE FROM verification_token WHERE user_id = (SELECT id FROM user_account WHERE first_name = ? AND email = ?)";
15-
private static final String DELETE_TEST_USER_ROLE = "DELETE FROM users_roles WHERE user_id = (SELECT id FROM user_account WHERE first_name = ? AND email = ?)";
16-
private static final String DELETE_TEST_USER_QUERY = "DELETE FROM user_account WHERE first_name = ? AND email = ?";
17-
public static void deleteTestUser() {
14+
15+
private static final String DELETE_TEST_USER_ROLE = "DELETE FROM users_roles WHERE user_id = (SELECT id FROM user_account WHERE first_name = ? AND email = ?)";private static final String DELETE_TEST_USER_QUERY = "DELETE FROM user_account WHERE first_name = ? AND email = ?";
16+
17+
private static final String GET_LAST_USER_ID_QUERY = "SELECT max(id) FROM user_account";
18+
19+
private static final String SAVE_TEST_USER_QUERY = "INSERT INTO user_account (id, first_name, last_name, email, " +
20+
"password, enabled, failed_login_attempts, locked) VALUES (?,?,?,?,?,?,?,?)";
21+
22+
public static void deleteTestUser(UserDto userDto) {
1823
try(Connection connection = ConnectionManager.open()) {
19-
execute(connection, DELETE_VERIFICATION_TOKEN_QUERY);
20-
execute(connection, DELETE_TEST_USER_ROLE);
21-
execute(connection, DELETE_TEST_USER_QUERY);
24+
String[] params = new String[]{userDto.getFirstName(), userDto.getEmail()};
25+
execute(connection, DELETE_VERIFICATION_TOKEN_QUERY, params);
26+
execute(connection, DELETE_TEST_USER_ROLE, params);
27+
execute(connection, DELETE_TEST_USER_QUERY, params);
2228
} catch (SQLException e) {
2329
throw new RuntimeException(e);
2430
}
2531
}
2632

27-
private static void execute(Connection connection, String query) throws SQLException {
33+
34+
public static void saveTestUser(UserDto userDto) {
35+
try(Connection connection = ConnectionManager.open()) {
36+
ResultSet resultSet = connection.prepareStatement(GET_LAST_USER_ID_QUERY).executeQuery();
37+
int id = 0;
38+
if (resultSet.next()) {
39+
id = (resultSet.getInt(1) + 1);
40+
}
41+
Object[] params = new Object[]{id, userDto.getFirstName(), userDto.getEmail(),
42+
userDto.getEmail(), userDto.getPassword(), true, 0, false};
43+
execute(connection, SAVE_TEST_USER_QUERY, params);
44+
} catch (SQLException e) {
45+
throw new RuntimeException(e);
46+
}
47+
}
48+
49+
private static void execute(Connection connection, String query, Object[] params) throws SQLException {
2850
PreparedStatement statement = connection.prepareStatement(query);
29-
statement.setString(1, FIRST_NAME);
30-
statement.setString(2, EMAIL);
51+
for(int i = 0; i < params.length; i++) {
52+
Object param = params[i];
53+
if (param instanceof Integer) {
54+
statement.setInt((i + 1), (Integer) param);
55+
}
56+
if (param instanceof String) {
57+
statement.setString((i + 1), (String) param);
58+
}
59+
if (param instanceof Boolean) {
60+
statement.setBoolean((i + 1), (Boolean) param);
61+
}
62+
}
3163
statement.executeUpdate();
3264
}
3365
}

src/test/java/ui/page/RegisterPage.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,39 @@
77
* Register page
88
*/
99
public class RegisterPage {
10+
1011
private final SelenideElement FIRST_NAME_FIELD = Selenide.$x("//input[@id='firstName']");
12+
1113
private final SelenideElement LAST_NAME_FIELD = Selenide.$x("//input[@id='lastName']");
14+
1215
private final SelenideElement EMAIL_FIELD = Selenide.$x("//input[@id='email']");
16+
1317
private final SelenideElement PASSWORD_FIELD = Selenide.$x("//input[@id='password']");
18+
1419
private final SelenideElement CONFIRM_PASSWORD_FIELD = Selenide.$x("//input[@id='matchPassword']");
20+
1521
private final SelenideElement SIGN_UP_BUTTON = Selenide.$x("//button[@id='signUpButton']");
1622

23+
private final SelenideElement ACCOUNT_EXIST_ERROR_MESSAGE = Selenide.$x("//div[@id='existingAccountError']//span");
24+
1725
public RegisterPage(String url) {
1826
Selenide.open(url);
1927
}
2028
/**
2129
* Filling register form and click signUp button
2230
*/
23-
public void signUp(String firstName, String lastName, String email, String password, String confirmPassword) {
31+
public SuccessRegisterPage signUp(String firstName, String lastName, String email, String password, String confirmPassword) {
2432
FIRST_NAME_FIELD.setValue(firstName);
2533
LAST_NAME_FIELD.setValue(lastName);
2634
EMAIL_FIELD.setValue(email);
2735
PASSWORD_FIELD.setValue(password);
2836
CONFIRM_PASSWORD_FIELD.setValue(confirmPassword);
2937
SIGN_UP_BUTTON.click();
38+
return new SuccessRegisterPage();
39+
}
40+
41+
public String accountExistErrorMessage() {
42+
return ACCOUNT_EXIST_ERROR_MESSAGE.text();
3043
}
3144

3245
}

0 commit comments

Comments
 (0)