Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tested it all up #6

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions src/main/java/project/services/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,21 @@ public class UserService {


private JdbcTemplate jdbcTemplate;

public UserService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

public void create(UserModel user) {
final String sql =
"INSERT INTO users (email, login, password) VALUES (?, ?, crypt(?, gen_salt('bf')));";
"INSERT INTO users (email, login, password) VALUES (?, ?, crypt(?, gen_salt('bf')));";
jdbcTemplate.update(sql, user.getMail(), user.getLogin(), user.getPassword());
}


public UserModel signin(UserModel user) {
final String sql =
"SELECT email, login, score, id FROM users WHERE email = ? AND password = crypt(?, password);";
"SELECT email, login, score, id FROM users WHERE email = ? AND password = crypt(?, password);";
return jdbcTemplate.queryForObject(sql, UserModel::getUser, user.getMail(), user.getPassword());

}
Expand Down Expand Up @@ -86,8 +86,8 @@ public Integer updateScore(String email) {
return jdbcTemplate.queryForObject(sql, Integer.class, email);
}

public void incrementScoreById(Long id) {
final String sql = "UPDATE users SET score = score + 1 WHERE id = ?";
jdbcTemplate.update(sql, id);
public Integer incrementScoreById(Long id) {
final String sql = "UPDATE users SET score = score + 1 WHERE id = ? RETURNING score";
return jdbcTemplate.queryForObject(sql, Integer.class, id);
}
}
62 changes: 60 additions & 2 deletions src/test/java/project/controllers/UserControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,8 @@
import org.springframework.transaction.annotation.Transactional;
import project.models.UserModel;

import javax.servlet.http.HttpSession;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;

Expand Down Expand Up @@ -69,4 +67,64 @@ public void testLogout () {
usersController.logout(session);
assertTrue(session.isInvalid());
}


@Test
@DisplayName("Get user")
public void getUser() {
usersController.register(user, session);
usersController.authorize(user, session);
assertEquals(HttpStatus.OK, usersController.getUser(session).getStatusCode());
}

@Test
@DisplayName("Get user when unauthorised")
public void getUserWhenUnauthorised() {
assertEquals(HttpStatus.METHOD_NOT_ALLOWED, usersController.getUser(session).getStatusCode());
}

@Test
@DisplayName("Get leaders")
public void getLeaders() {
final ResponseEntity response = usersController.loadLeaders(0, 10);
assertEquals(HttpStatus.OK, response.getStatusCode());
}

@Test
@DisplayName("Edit user")
public void editUser() {
usersController.register(user, session);
usersController.authorize(user, session);
user.setLogin(user.getLogin() + 1);
final ResponseEntity response = usersController.changeUserInfo(user, session);
assertEquals(HttpStatus.OK, response.getStatusCode());
}

@Test
@DisplayName("Try edit user when unauthorised")
public void editUserUnauthorised() {
usersController.register(user, session);
usersController.logout(session);

final MockHttpSession newSession = new MockHttpSession();
user.setLogin(user.getLogin() + 1);
final ResponseEntity response = usersController.changeUserInfo(user, newSession);
assertEquals(HttpStatus.METHOD_NOT_ALLOWED, response.getStatusCode());
}


@Test
@DisplayName("Try edit user mail for already existing")
public void editUserMail() {
usersController.register(user, session);

final UserModel secondUser = new UserModel("[email protected]","tester1", 0, "12345qwerty");
final MockHttpSession secondSession = new MockHttpSession();
usersController.register(secondUser, secondSession);

user.setMail("[email protected]");

final ResponseEntity response = usersController.changeUserInfo(user, session);
assertEquals(HttpStatus.CONFLICT, response.getStatusCode());
}
}
50 changes: 42 additions & 8 deletions src/test/java/project/services/UserServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void testCreate() {
public void insertWithSameMail() {
userService.create(user);
final UserModel user2 =
new UserModel(user.getMail(), changeString(user.getLogin()), user.getScore(), user.getPassword());
new UserModel(user.getMail(), changeString(user.getLogin()), user.getScore(), user.getPassword());
final Executable getSameUser = () -> userService.create(user2);
assertThrows(DuplicateKeyException.class, getSameUser);
}
Expand All @@ -65,8 +65,8 @@ public void insertWithSameMail() {
public void insertWithSameLogin() {
userService.create(user);
final UserModel user2 =
new UserModel(changeString(user.getMail()), user.getLogin(), user.getScore(), user.getPassword());
final Executable sameLogin = () ->userService.create(user2);
new UserModel(changeString(user.getMail()), user.getLogin(), user.getScore(), user.getPassword());
final Executable sameLogin = () -> userService.create(user2);
assertThrows(DuplicateKeyException.class, sameLogin);
}

Expand All @@ -90,7 +90,7 @@ public void testSignIn() {
public void testSignInNonexistent() {
final UserModel newUser = new UserModel("default", "default", 2);
final Executable signInFunc = () -> userService.signin(newUser);
assertThrows(EmptyResultDataAccessException.class, signInFunc);
assertThrows(EmptyResultDataAccessException.class, signInFunc);
}

@Test
Expand All @@ -100,7 +100,6 @@ public void editUserMail() {
final String oldMail = user.getMail();
final String newMail = changeString(user.getMail());
final UserModel newUser = new UserModel(newMail, user.getLogin(), user.getScore());
System.out.println('3');
assertEquals(newUser, userService.edit(newUser, oldMail));
}

Expand Down Expand Up @@ -128,8 +127,8 @@ public void editUserPassword() {
@DisplayName("Showing leaders")
public void getLeasersTest() {
final UserModel newUser =
new UserModel(changeString(user.getMail()), changeString(user.getLogin()),
user.getScore() + 1, changeString(user.getPassword()));
new UserModel(changeString(user.getMail()), changeString(user.getLogin()),
user.getScore() + 1, changeString(user.getPassword()));

userService.create(user);
userService.create(newUser);
Expand All @@ -148,4 +147,39 @@ public void getLeasersTest() {
i++;
}
}
}

@Test
@DisplayName("Increment score by mail")
public void incrementScoreByMail() {
userService.create(user);
final Long userId = userService.getUserByMail(user.getMail()).getId();
final Integer newScore = user.getScore() + 1;
assertEquals(newScore, userService.incrementScoreById(userId));
}

@Test
@DisplayName("Increment score by id")
public void incrementScoreById() {
userService.create(user);
final Integer newScore = user.getScore() + 1;
assertEquals(newScore, userService.updateScore(user.getMail()));
}

@Test
@DisplayName("Increment score nonexistance user")
public void incrementScoreNonExistanceUser() {
final Executable error = () -> userService.updateScore(changeString(user.getMail()));
assertThrows(DataAccessException.class, error);
}

@Test
@DisplayName("Editing all user info")
public void editUserInfo() {
userService.create(user);
final String newPassword = changeString(user.getPassword());
final String newLogin = changeString(user.getLogin());
final String newMail = changeString(user.getMail());
final UserModel newUser = new UserModel(newMail, newLogin, user.getScore(), newPassword);
assertEquals(newUser, userService.edit(newUser, user.getMail()));
}
}