TSK-1957: migrate UserServiceAccTest to new test-api
This commit is contained in:
parent
50915ef4e1
commit
d6da6f8124
|
@ -0,0 +1,321 @@
|
||||||
|
package acceptance.user;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.DynamicTest;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.TestFactory;
|
||||||
|
import org.junit.jupiter.api.function.ThrowingConsumer;
|
||||||
|
|
||||||
|
import pro.taskana.common.api.TaskanaRole;
|
||||||
|
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||||
|
import pro.taskana.common.api.exceptions.MismatchedRoleException;
|
||||||
|
import pro.taskana.testapi.TaskanaInject;
|
||||||
|
import pro.taskana.testapi.TaskanaIntegrationTest;
|
||||||
|
import pro.taskana.testapi.security.WithAccessId;
|
||||||
|
import pro.taskana.user.api.UserService;
|
||||||
|
import pro.taskana.user.api.exceptions.UserAlreadyExistException;
|
||||||
|
import pro.taskana.user.api.exceptions.UserNotFoundException;
|
||||||
|
import pro.taskana.user.api.models.User;
|
||||||
|
|
||||||
|
/** Acceptance test which tests the functionality of the UserService. */
|
||||||
|
@TaskanaIntegrationTest
|
||||||
|
class UserServiceAccTest {
|
||||||
|
|
||||||
|
@TaskanaInject UserService userService;
|
||||||
|
|
||||||
|
protected User createExampleUser(String id) {
|
||||||
|
User user = userService.newUser();
|
||||||
|
user.setId(id);
|
||||||
|
user.setFirstName("Hans");
|
||||||
|
user.setLastName("Georg");
|
||||||
|
user.setFullName("Georg, Hans");
|
||||||
|
user.setLongName("Georg, Hans - (user-10-20)");
|
||||||
|
user.setEmail("hans.georg@web.com");
|
||||||
|
user.setPhone("1234");
|
||||||
|
user.setMobilePhone("01574275632");
|
||||||
|
user.setOrgLevel4("level4");
|
||||||
|
user.setOrgLevel3("level3");
|
||||||
|
user.setOrgLevel2("level2");
|
||||||
|
user.setOrgLevel1("level1");
|
||||||
|
user.setData("ab");
|
||||||
|
|
||||||
|
return user;
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@BeforeAll
|
||||||
|
void setup() throws Exception {
|
||||||
|
User testuser1 = userService.newUser();
|
||||||
|
testuser1.setId("testuser1");
|
||||||
|
testuser1.setFirstName("Max");
|
||||||
|
testuser1.setLastName("Mustermann");
|
||||||
|
testuser1.setFullName("Max, Mustermann");
|
||||||
|
testuser1.setLongName("Max, Mustermann - (testuser1)");
|
||||||
|
testuser1.setEmail("max.mustermann@web.com");
|
||||||
|
testuser1.setPhone("040-2951854");
|
||||||
|
testuser1.setMobilePhone("015637683197");
|
||||||
|
testuser1.setOrgLevel4("Novatec");
|
||||||
|
testuser1.setOrgLevel3("BPM");
|
||||||
|
testuser1.setOrgLevel2("Human Workflow");
|
||||||
|
testuser1.setOrgLevel1("TASKANA");
|
||||||
|
testuser1.setData("");
|
||||||
|
userService.createUser(testuser1);
|
||||||
|
|
||||||
|
User testuser2 = userService.newUser();
|
||||||
|
testuser2.setId("testuser2");
|
||||||
|
testuser2.setFirstName("Elena");
|
||||||
|
testuser2.setLastName("Eifrig");
|
||||||
|
testuser2.setFullName("Elena, Eifrig");
|
||||||
|
testuser2.setLongName("Elena, Eifrig - (testuser2)");
|
||||||
|
testuser2.setEmail("elena.eifrig@web.com");
|
||||||
|
testuser2.setPhone("040-2951854");
|
||||||
|
testuser2.setMobilePhone("015637683197");
|
||||||
|
testuser2.setOrgLevel4("Novatec");
|
||||||
|
testuser2.setOrgLevel3("BPM");
|
||||||
|
testuser2.setOrgLevel2("Human Workflow");
|
||||||
|
testuser2.setOrgLevel1("TASKANA");
|
||||||
|
testuser2.setData("");
|
||||||
|
userService.createUser(testuser2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-1-2")
|
||||||
|
@Test
|
||||||
|
void should_ReturnUserWithAllFields_When_IdExisting() throws Exception {
|
||||||
|
User userInDatabase = userService.getUser("testuser1");
|
||||||
|
|
||||||
|
User userToCompare = userService.newUser();
|
||||||
|
userToCompare.setId("testuser1");
|
||||||
|
userToCompare.setFirstName("Max");
|
||||||
|
userToCompare.setLastName("Mustermann");
|
||||||
|
userToCompare.setFullName("Max, Mustermann");
|
||||||
|
userToCompare.setLongName("Max, Mustermann - (testuser1)");
|
||||||
|
userToCompare.setEmail("max.mustermann@web.com");
|
||||||
|
userToCompare.setPhone("040-2951854");
|
||||||
|
userToCompare.setMobilePhone("015637683197");
|
||||||
|
userToCompare.setOrgLevel4("Novatec");
|
||||||
|
userToCompare.setOrgLevel3("BPM");
|
||||||
|
userToCompare.setOrgLevel2("Human Workflow");
|
||||||
|
userToCompare.setOrgLevel1("TASKANA");
|
||||||
|
userToCompare.setData("");
|
||||||
|
|
||||||
|
assertThat(userInDatabase).hasNoNullFieldsOrProperties().isEqualTo(userToCompare);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-1-2")
|
||||||
|
@Test
|
||||||
|
void should_ThrowUserNotFoundException_When_TryingToGetUserWithNonExistingId() {
|
||||||
|
ThrowingCallable callable = () -> userService.getUser("NOT_EXISTING");
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(UserNotFoundException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("userId", "NOT_EXISTING")
|
||||||
|
.hasMessage("User with id 'NOT_EXISTING' was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_InsertUserInDatabase_When_CreatingUser() throws Exception {
|
||||||
|
User userToCreate = createExampleUser("user-10-20");
|
||||||
|
|
||||||
|
userService.createUser(userToCreate);
|
||||||
|
|
||||||
|
User userInDatabse = userService.getUser(userToCreate.getId());
|
||||||
|
|
||||||
|
assertThat(userToCreate)
|
||||||
|
.hasNoNullFieldsOrProperties()
|
||||||
|
.isNotSameAs(userInDatabse)
|
||||||
|
.isEqualTo(userInDatabse);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_SetTheLongAndFullNameAccordingToRules_When_CreatingUserWithThoseFieldsEmpty()
|
||||||
|
throws Exception {
|
||||||
|
User userToCreate = createExampleUser("user-10-21");
|
||||||
|
userToCreate.setLongName(null);
|
||||||
|
userToCreate.setFullName(null);
|
||||||
|
|
||||||
|
String fullName = userToCreate.getLastName() + ", " + userToCreate.getFirstName();
|
||||||
|
String longName =
|
||||||
|
userToCreate.getLastName()
|
||||||
|
+ ", "
|
||||||
|
+ userToCreate.getFirstName()
|
||||||
|
+ " - ("
|
||||||
|
+ userToCreate.getId()
|
||||||
|
+ ")";
|
||||||
|
|
||||||
|
User createdUser = userService.createUser(userToCreate);
|
||||||
|
|
||||||
|
assertThat(createdUser.getLongName()).isEqualTo(longName);
|
||||||
|
assertThat(createdUser.getFullName()).isEqualTo(fullName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_ThrowInvalidArgumentException_When_TryingToCreateUserWithFirstOrLastNameNull()
|
||||||
|
throws Exception {
|
||||||
|
User userToCreate = createExampleUser("user-10-20");
|
||||||
|
userToCreate.setFirstName(null);
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.createUser(userToCreate);
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(InvalidArgumentException.class)
|
||||||
|
.hasMessage("First and last name of User must be set or empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_ThrowInvalidArgumentException_When_TryingToCreateUserWithLastNameNull() {
|
||||||
|
User userToCreate = createExampleUser("user-10-20");
|
||||||
|
userToCreate.setLastName(null);
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.createUser(userToCreate);
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(InvalidArgumentException.class)
|
||||||
|
.hasMessage("First and last name of User must be set or empty.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@TestFactory
|
||||||
|
Stream<DynamicTest> should_ThrowInvalidArgumentException_When_TryingToCreateUserWithNotSetId()
|
||||||
|
throws Exception {
|
||||||
|
Iterator<String> iterator = Arrays.asList("", null).iterator();
|
||||||
|
|
||||||
|
ThrowingConsumer<String> test =
|
||||||
|
userId -> {
|
||||||
|
User userToCreate = createExampleUser("user-10-20");
|
||||||
|
userToCreate.setId(userId);
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.createUser(userToCreate);
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(InvalidArgumentException.class)
|
||||||
|
.hasMessage("UserId must not be empty when creating User.");
|
||||||
|
};
|
||||||
|
|
||||||
|
return DynamicTest.stream(iterator, c -> "for " + c, test);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_ThrowUserAlreadyExistException_When_TryingToCreateUserWithExistingId() {
|
||||||
|
User userToCreate = createExampleUser("testuser1"); // existing userId
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.createUser(userToCreate);
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(UserAlreadyExistException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("userId", "testuser1")
|
||||||
|
.hasMessage("User with id 'testuser1' already exists.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-1-2")
|
||||||
|
@Test
|
||||||
|
void should_ThrowNotAuthorizedException_When_TryingToCreateUserWithoutAdminRole() {
|
||||||
|
User userToCreate = createExampleUser("user-10-22");
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.createUser(userToCreate);
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(MismatchedRoleException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("currentUserId", "user-1-2")
|
||||||
|
.hasFieldOrPropertyWithValue(
|
||||||
|
"roles", new TaskanaRole[] {TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN})
|
||||||
|
.hasMessage(
|
||||||
|
"Not authorized. The current user 'user-1-2' is not member of role(s) "
|
||||||
|
+ "'[BUSINESS_ADMIN, ADMIN]'.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_UpdateUserInDatabase_When_IdExisting() throws Exception {
|
||||||
|
User userToUpdate = createExampleUser("testuser1"); // existing userId
|
||||||
|
|
||||||
|
userService.updateUser(userToUpdate);
|
||||||
|
|
||||||
|
User userInDatabase = userService.getUser("testuser1");
|
||||||
|
|
||||||
|
assertThat(userToUpdate).isNotSameAs(userInDatabase).isEqualTo(userInDatabase);
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_ThrowUserNotFoundException_When_TryingToUpdateUserWithNonExistingId() {
|
||||||
|
User userToUpdate = createExampleUser("NOT_EXISTING");
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.updateUser(userToUpdate);
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(UserNotFoundException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("userId", "NOT_EXISTING")
|
||||||
|
.hasMessage("User with id 'NOT_EXISTING' was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-1-2")
|
||||||
|
@Test
|
||||||
|
void should_ThrowNotAuthorizedException_When_TryingToUpdateUserWithNoAdminRole() {
|
||||||
|
User userToUpdate = createExampleUser("testuser1"); // existing userId
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.updateUser(userToUpdate);
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(MismatchedRoleException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("currentUserId", "user-1-2")
|
||||||
|
.hasFieldOrPropertyWithValue(
|
||||||
|
"roles", new TaskanaRole[] {TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN})
|
||||||
|
.hasMessage(
|
||||||
|
"Not authorized. The current user 'user-1-2' is not member of role(s) "
|
||||||
|
+ "'[BUSINESS_ADMIN, ADMIN]'.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_DeleteUserFromDatabase_When_IdExisting() throws Exception {
|
||||||
|
String id = "testuser2";
|
||||||
|
userService.getUser(id); // User existing
|
||||||
|
|
||||||
|
userService.deleteUser(id);
|
||||||
|
|
||||||
|
ThrowingCallable callable = () -> userService.getUser(id); // User deleted
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(UserNotFoundException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("userId", "testuser2")
|
||||||
|
.hasMessage("User with id 'testuser2' was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "admin")
|
||||||
|
@Test
|
||||||
|
void should_ThrowUserNotFoundException_When_TryingToDeleteUserWithNonExistingId() {
|
||||||
|
ThrowingCallable callable = () -> userService.deleteUser("NOT_EXISTING");
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(UserNotFoundException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("userId", "NOT_EXISTING")
|
||||||
|
.hasMessage("User with id 'NOT_EXISTING' was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@WithAccessId(user = "user-1-2")
|
||||||
|
@Test
|
||||||
|
void should_ThrowNotAuthorizedException_When_TryingToDeleteUserWithNoAdminRole() {
|
||||||
|
ThrowingCallable callable = () -> userService.deleteUser("testuser1");
|
||||||
|
|
||||||
|
assertThatThrownBy(callable)
|
||||||
|
.isInstanceOf(MismatchedRoleException.class)
|
||||||
|
.hasFieldOrPropertyWithValue("currentUserId", "user-1-2")
|
||||||
|
.hasFieldOrPropertyWithValue(
|
||||||
|
"roles", new TaskanaRole[] {TaskanaRole.BUSINESS_ADMIN, TaskanaRole.ADMIN})
|
||||||
|
.hasMessage(
|
||||||
|
"Not authorized. The current user 'user-1-2' is not member of role(s) "
|
||||||
|
+ "'[BUSINESS_ADMIN, ADMIN]'.");
|
||||||
|
}
|
||||||
|
}
|
|
@ -28,7 +28,6 @@ import pro.taskana.task.api.models.Attachment;
|
||||||
import pro.taskana.task.api.models.ObjectReference;
|
import pro.taskana.task.api.models.ObjectReference;
|
||||||
import pro.taskana.task.internal.TaskServiceImpl;
|
import pro.taskana.task.internal.TaskServiceImpl;
|
||||||
import pro.taskana.task.internal.models.ObjectReferenceImpl;
|
import pro.taskana.task.internal.models.ObjectReferenceImpl;
|
||||||
import pro.taskana.user.api.models.User;
|
|
||||||
|
|
||||||
/** Base class for all acceptance tests. */
|
/** Base class for all acceptance tests. */
|
||||||
public abstract class AbstractAccTest {
|
public abstract class AbstractAccTest {
|
||||||
|
@ -120,25 +119,6 @@ public abstract class AbstractAccTest {
|
||||||
return attachment;
|
return attachment;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected User createExampleUser(String id) {
|
|
||||||
User user = taskanaEngine.getUserService().newUser();
|
|
||||||
user.setId(id);
|
|
||||||
user.setFirstName("Hans");
|
|
||||||
user.setLastName("Georg");
|
|
||||||
user.setFullName("Georg, Hans");
|
|
||||||
user.setLongName("Georg, Hans - (user-10-20)");
|
|
||||||
user.setEmail("hans.georg@web.com");
|
|
||||||
user.setPhone("1234");
|
|
||||||
user.setMobilePhone("01574275632");
|
|
||||||
user.setOrgLevel4("level4");
|
|
||||||
user.setOrgLevel3("level3");
|
|
||||||
user.setOrgLevel2("level2");
|
|
||||||
user.setOrgLevel1("level1");
|
|
||||||
user.setData("ab");
|
|
||||||
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected TimeInterval toDaysInterval() {
|
protected TimeInterval toDaysInterval() {
|
||||||
Instant begin =
|
Instant begin =
|
||||||
ZonedDateTime.of(LocalDate.now(ZoneId.of("UTC")), LocalTime.MIN, ZoneId.of("UTC"))
|
ZonedDateTime.of(LocalDate.now(ZoneId.of("UTC")), LocalTime.MIN, ZoneId.of("UTC"))
|
||||||
|
|
|
@ -1,224 +0,0 @@
|
||||||
package acceptance.user;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
||||||
|
|
||||||
import acceptance.AbstractAccTest;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
|
||||||
import org.junit.jupiter.api.DynamicTest;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.TestFactory;
|
|
||||||
import org.junit.jupiter.api.extension.ExtendWith;
|
|
||||||
import org.junit.jupiter.api.function.ThrowingConsumer;
|
|
||||||
|
|
||||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
|
||||||
import pro.taskana.common.api.exceptions.MismatchedRoleException;
|
|
||||||
import pro.taskana.common.test.security.JaasExtension;
|
|
||||||
import pro.taskana.common.test.security.WithAccessId;
|
|
||||||
import pro.taskana.user.api.UserService;
|
|
||||||
import pro.taskana.user.api.exceptions.UserAlreadyExistException;
|
|
||||||
import pro.taskana.user.api.exceptions.UserNotFoundException;
|
|
||||||
import pro.taskana.user.api.models.User;
|
|
||||||
|
|
||||||
/** Acceptance test which tests the functionality of the UserService. */
|
|
||||||
@ExtendWith(JaasExtension.class)
|
|
||||||
class UserServiceAccTest extends AbstractAccTest {
|
|
||||||
private static final UserService USER_SERVICE = taskanaEngine.getUserService();
|
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-2")
|
|
||||||
@Test
|
|
||||||
void should_ReturnUserWithAllFields_When_IdExisting() throws Exception {
|
|
||||||
User user = USER_SERVICE.getUser("teamlead-1");
|
|
||||||
|
|
||||||
assertThat(user.getFirstName()).isEqualTo("Titus");
|
|
||||||
assertThat(user.getLastName()).isEqualTo("Toll");
|
|
||||||
assertThat(user.getFullName()).isEqualTo("Toll, Titus");
|
|
||||||
assertThat(user.getLongName()).isEqualTo("Toll, Titus - (teamlead-1)");
|
|
||||||
assertThat(user.getEmail()).isEqualTo("titus.toll@web.de");
|
|
||||||
assertThat(user.getPhone()).isEqualTo("040-2951854");
|
|
||||||
assertThat(user.getMobilePhone()).isEqualTo("015637683197");
|
|
||||||
assertThat(user.getOrgLevel4()).isEqualTo("Novatec");
|
|
||||||
assertThat(user.getOrgLevel3()).isEqualTo("BPM");
|
|
||||||
assertThat(user.getOrgLevel2()).isEqualTo("Human Workflow");
|
|
||||||
assertThat(user.getOrgLevel1()).isEqualTo("TASKANA");
|
|
||||||
assertThat(user.getData()).isEqualTo("xy");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-2")
|
|
||||||
@Test
|
|
||||||
void should_ThrowUserNotFoundException_When_TryingToGetUserWithNonExistingId() {
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.getUser("NOT_EXISTING");
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(UserNotFoundException.class)
|
|
||||||
.hasMessage("User with id 'NOT_EXISTING' was not found.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_InsertUserInDatabase_When_CreatingUser() throws Exception {
|
|
||||||
User userToCreate = createExampleUser("user-10-20");
|
|
||||||
|
|
||||||
USER_SERVICE.createUser(userToCreate);
|
|
||||||
User userInDatabse = USER_SERVICE.getUser(userToCreate.getId());
|
|
||||||
|
|
||||||
assertThat(userToCreate)
|
|
||||||
.hasNoNullFieldsOrProperties()
|
|
||||||
.isNotSameAs(userInDatabse)
|
|
||||||
.isEqualTo(userInDatabse);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_SetTheLongAndFullNameAccordingToRules_When_CreatingUserWithThoseFieldsEmpty()
|
|
||||||
throws Exception {
|
|
||||||
User userToCreate = createExampleUser("user-10-21");
|
|
||||||
userToCreate.setLongName(null);
|
|
||||||
userToCreate.setFullName(null);
|
|
||||||
|
|
||||||
String fullName = userToCreate.getLastName() + ", " + userToCreate.getFirstName();
|
|
||||||
String longName =
|
|
||||||
userToCreate.getLastName()
|
|
||||||
+ ", "
|
|
||||||
+ userToCreate.getFirstName()
|
|
||||||
+ " - ("
|
|
||||||
+ userToCreate.getId()
|
|
||||||
+ ")";
|
|
||||||
|
|
||||||
User createdUser = USER_SERVICE.createUser(userToCreate);
|
|
||||||
assertThat(createdUser.getLongName()).isEqualTo(longName);
|
|
||||||
assertThat(createdUser.getFullName()).isEqualTo(fullName);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_ThrowInvalidArgumentException_When_TryingToCreateUserWithFirstOrLastNameNull()
|
|
||||||
throws Exception {
|
|
||||||
User userToCreate = createExampleUser("user-10-20");
|
|
||||||
userToCreate.setFirstName(null);
|
|
||||||
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.createUser(userToCreate);
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(InvalidArgumentException.class)
|
|
||||||
.hasMessage("First and last name of User must be set or empty.");
|
|
||||||
|
|
||||||
userToCreate.setFirstName("xy");
|
|
||||||
userToCreate.setLastName(null);
|
|
||||||
callable = () -> USER_SERVICE.createUser(userToCreate);
|
|
||||||
assertThatThrownBy(callable).isInstanceOf(InvalidArgumentException.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@TestFactory
|
|
||||||
Stream<DynamicTest> should_ThrowInvalidArgumentException_When_TryingToCreateUserWithNotSetId()
|
|
||||||
throws Exception {
|
|
||||||
Iterator<String> iterator = Arrays.asList("", null).iterator();
|
|
||||||
|
|
||||||
ThrowingConsumer<String> test =
|
|
||||||
userId -> {
|
|
||||||
User userToCreate = createExampleUser("user-10-20");
|
|
||||||
userToCreate.setId(userId);
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.createUser(userToCreate);
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(InvalidArgumentException.class)
|
|
||||||
.hasMessage("UserId must not be empty when creating User.");
|
|
||||||
};
|
|
||||||
|
|
||||||
return DynamicTest.stream(iterator, c -> "for " + c, test);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_ThrowUserAlreadyExistException_When_TryingToCreateUserWithExistingId() {
|
|
||||||
User userToCreate = createExampleUser("teamlead-1"); // existing userId
|
|
||||||
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.createUser(userToCreate);
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(UserAlreadyExistException.class)
|
|
||||||
.hasMessage("User with id 'teamlead-1' already exists.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-2")
|
|
||||||
@Test
|
|
||||||
void should_ThrowNotAuthorizedException_When_TryingToCreateUserWithoutAdminRole() {
|
|
||||||
User userToCreate = createExampleUser("user-10-22");
|
|
||||||
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.createUser(userToCreate);
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(MismatchedRoleException.class)
|
|
||||||
.hasMessage(
|
|
||||||
"Not authorized. The current user 'user-1-2' is not member of role(s) "
|
|
||||||
+ "'[BUSINESS_ADMIN, ADMIN]'.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_UpdateUserInDatabase_When_IdExisting() throws Exception {
|
|
||||||
User userToUpdate = createExampleUser("teamlead-1"); // existing userId
|
|
||||||
|
|
||||||
USER_SERVICE.updateUser(userToUpdate);
|
|
||||||
User userInDatabase = USER_SERVICE.getUser("teamlead-1");
|
|
||||||
|
|
||||||
assertThat(userToUpdate)
|
|
||||||
.hasNoNullFieldsOrProperties()
|
|
||||||
.isNotSameAs(userInDatabase)
|
|
||||||
.isEqualTo(userInDatabase);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_ThrowUserNotFoundException_When_TryingToUpdateUserWithNonExistingId() {
|
|
||||||
User userToUpdate = createExampleUser("NOT_EXISTING");
|
|
||||||
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.updateUser(userToUpdate);
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(UserNotFoundException.class)
|
|
||||||
.hasMessage("User with id 'NOT_EXISTING' was not found.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-2")
|
|
||||||
@Test
|
|
||||||
void should_ThrowNotAuthorizedException_When_TryingToUpdateUserWithNoAdminRole() {
|
|
||||||
User userToUpdate = createExampleUser("teamlead-1"); // existing userId
|
|
||||||
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.updateUser(userToUpdate);
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(MismatchedRoleException.class)
|
|
||||||
.hasMessage(
|
|
||||||
"Not authorized. The current user 'user-1-2' is not member of role(s) "
|
|
||||||
+ "'[BUSINESS_ADMIN, ADMIN]'.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_DeleteUserFromDatabase_When_IdExisting() throws Exception {
|
|
||||||
String id = "teamlead-1";
|
|
||||||
USER_SERVICE.getUser(id); // User existing
|
|
||||||
|
|
||||||
USER_SERVICE.deleteUser(id);
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.getUser(id); // User deleted
|
|
||||||
assertThatThrownBy(callable).isInstanceOf(UserNotFoundException.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "admin")
|
|
||||||
@Test
|
|
||||||
void should_ThrowUserNotFoundException_When_TryingToDeleteUserWithNonExistingId() {
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.deleteUser("NOT_EXISTING");
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(UserNotFoundException.class)
|
|
||||||
.hasMessage("User with id 'NOT_EXISTING' was not found.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@WithAccessId(user = "user-1-2")
|
|
||||||
@Test
|
|
||||||
void should_ThrowNotAuthorizedException_When_TryingToDeleteUserWithNoAdminRole() {
|
|
||||||
ThrowingCallable callable = () -> USER_SERVICE.deleteUser("teamlead-1");
|
|
||||||
assertThatThrownBy(callable)
|
|
||||||
.isInstanceOf(MismatchedRoleException.class)
|
|
||||||
.hasMessage(
|
|
||||||
"Not authorized. The current user 'user-1-2' is not member of role(s) "
|
|
||||||
+ "'[BUSINESS_ADMIN, ADMIN]'.");
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue