|
|
|
@ -15,13 +15,11 @@ |
|
|
|
*/ |
|
|
|
package org.thingsboard.server.dao.service; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import org.apache.commons.lang3.RandomStringUtils; |
|
|
|
import org.junit.After; |
|
|
|
import org.junit.Assert; |
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
|
import org.thingsboard.server.common.data.Customer; |
|
|
|
import org.thingsboard.server.common.data.Tenant; |
|
|
|
import org.thingsboard.server.common.data.User; |
|
|
|
@ -32,11 +30,13 @@ import org.thingsboard.server.common.data.page.TextPageLink; |
|
|
|
import org.thingsboard.server.common.data.security.Authority; |
|
|
|
import org.thingsboard.server.common.data.security.UserCredentials; |
|
|
|
import org.thingsboard.server.dao.exception.DataValidationException; |
|
|
|
import org.junit.Assert; |
|
|
|
import org.junit.Test; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Collections; |
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
|
|
|
|
|
|
|
|
private IdComparator<User> idComparator = new IdComparator<>(); |
|
|
|
|
|
|
|
private TenantId tenantId; |
|
|
|
@ -96,7 +96,7 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
Assert.assertNotNull(foundUser); |
|
|
|
Assert.assertEquals(user, foundUser); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindUserCredentials() { |
|
|
|
User user = userService.findUserByEmail("sysadmin@thingsboard.org"); |
|
|
|
@ -104,7 +104,7 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
UserCredentials userCredentials = userService.findUserCredentialsByUserId(user.getId()); |
|
|
|
Assert.assertNotNull(userCredentials); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
public void testSaveUser() { |
|
|
|
User tenantAdminUser = userService.findUserByEmail("tenant@thingsboard.org"); |
|
|
|
@ -124,46 +124,46 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
Assert.assertNotNull(userCredentials.getId()); |
|
|
|
Assert.assertNotNull(userCredentials.getUserId()); |
|
|
|
Assert.assertNotNull(userCredentials.getActivateToken()); |
|
|
|
|
|
|
|
|
|
|
|
savedUser.setFirstName("Joe"); |
|
|
|
savedUser.setLastName("Downs"); |
|
|
|
|
|
|
|
|
|
|
|
userService.saveUser(savedUser); |
|
|
|
savedUser = userService.findUserById(savedUser.getId()); |
|
|
|
Assert.assertEquals("Joe", savedUser.getFirstName()); |
|
|
|
Assert.assertEquals("Downs", savedUser.getLastName()); |
|
|
|
|
|
|
|
Assert.assertEquals("Downs", savedUser.getLastName()); |
|
|
|
|
|
|
|
userService.deleteUser(savedUser.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test(expected = DataValidationException.class) |
|
|
|
public void testSaveUserWithSameEmail() { |
|
|
|
User tenantAdminUser = userService.findUserByEmail("tenant@thingsboard.org"); |
|
|
|
tenantAdminUser.setEmail("sysadmin@thingsboard.org"); |
|
|
|
userService.saveUser(tenantAdminUser); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test(expected = DataValidationException.class) |
|
|
|
public void testSaveUserWithInvalidEmail() { |
|
|
|
User tenantAdminUser = userService.findUserByEmail("tenant@thingsboard.org"); |
|
|
|
tenantAdminUser.setEmail("tenant_thingsboard.org"); |
|
|
|
userService.saveUser(tenantAdminUser); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test(expected = DataValidationException.class) |
|
|
|
public void testSaveUserWithEmptyEmail() { |
|
|
|
User tenantAdminUser = userService.findUserByEmail("tenant@thingsboard.org"); |
|
|
|
tenantAdminUser.setEmail(null); |
|
|
|
userService.saveUser(tenantAdminUser); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test(expected = DataValidationException.class) |
|
|
|
public void testSaveUserWithoutTenant() { |
|
|
|
User tenantAdminUser = userService.findUserByEmail("tenant@thingsboard.org"); |
|
|
|
tenantAdminUser.setTenantId(null); |
|
|
|
userService.saveUser(tenantAdminUser); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
public void testDeleteUser() { |
|
|
|
User tenantAdminUser = userService.findUserByEmail("tenant@thingsboard.org"); |
|
|
|
@ -184,7 +184,7 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
Assert.assertNull(foundUser); |
|
|
|
Assert.assertNull(userCredentials); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindTenantAdmins() { |
|
|
|
User tenantAdminUser = userService.findUserByEmail("tenant@thingsboard.org"); |
|
|
|
@ -193,22 +193,22 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
List<User> users = pageData.getData(); |
|
|
|
Assert.assertEquals(1, users.size()); |
|
|
|
Assert.assertEquals(tenantAdminUser, users.get(0)); |
|
|
|
|
|
|
|
|
|
|
|
Tenant tenant = new Tenant(); |
|
|
|
tenant.setTitle("Test tenant"); |
|
|
|
tenant = tenantService.saveTenant(tenant); |
|
|
|
|
|
|
|
|
|
|
|
TenantId tenantId = tenant.getId(); |
|
|
|
|
|
|
|
|
|
|
|
List<User> tenantAdmins = new ArrayList<>(); |
|
|
|
for (int i=0;i<124;i++) { |
|
|
|
for (int i = 0; i < 124; i++) { |
|
|
|
User user = new User(); |
|
|
|
user.setAuthority(Authority.TENANT_ADMIN); |
|
|
|
user.setTenantId(tenantId); |
|
|
|
user.setEmail("testTenant" + i + "@thingsboard.org"); |
|
|
|
tenantAdmins.add(userService.saveUser(user)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<User> loadedTenantAdmins = new ArrayList<>(); |
|
|
|
TextPageLink pageLink = new TextPageLink(33); |
|
|
|
do { |
|
|
|
@ -218,57 +218,57 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
pageLink = pageData.getNextPageLink(); |
|
|
|
} |
|
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
|
|
|
Collections.sort(tenantAdmins, idComparator); |
|
|
|
Collections.sort(loadedTenantAdmins, idComparator); |
|
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(tenantAdmins, loadedTenantAdmins); |
|
|
|
|
|
|
|
|
|
|
|
tenantService.deleteTenant(tenantId); |
|
|
|
|
|
|
|
|
|
|
|
pageLink = new TextPageLink(33); |
|
|
|
pageData = userService.findTenantAdmins(tenantId, pageLink); |
|
|
|
Assert.assertFalse(pageData.hasNext()); |
|
|
|
Assert.assertTrue(pageData.getData().isEmpty()); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindTenantAdminsByEmail() { |
|
|
|
Tenant tenant = new Tenant(); |
|
|
|
tenant.setTitle("Test tenant"); |
|
|
|
tenant = tenantService.saveTenant(tenant); |
|
|
|
|
|
|
|
|
|
|
|
TenantId tenantId = tenant.getId(); |
|
|
|
|
|
|
|
String email1 = "testEmail1"; |
|
|
|
|
|
|
|
String email1 = "testEmail1"; |
|
|
|
List<User> tenantAdminsEmail1 = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i=0;i<94;i++) { |
|
|
|
|
|
|
|
for (int i = 0; i < 94; i++) { |
|
|
|
User user = new User(); |
|
|
|
user.setAuthority(Authority.TENANT_ADMIN); |
|
|
|
user.setTenantId(tenantId); |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10)); |
|
|
|
String email = email1+suffix+ "@thingsboard.org"; |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10)); |
|
|
|
String email = email1 + suffix + "@thingsboard.org"; |
|
|
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase(); |
|
|
|
user.setEmail(email); |
|
|
|
tenantAdminsEmail1.add(userService.saveUser(user)); |
|
|
|
} |
|
|
|
|
|
|
|
String email2 = "testEmail2"; |
|
|
|
|
|
|
|
String email2 = "testEmail2"; |
|
|
|
List<User> tenantAdminsEmail2 = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i=0;i<132;i++) { |
|
|
|
|
|
|
|
for (int i = 0; i < 132; i++) { |
|
|
|
User user = new User(); |
|
|
|
user.setAuthority(Authority.TENANT_ADMIN); |
|
|
|
user.setTenantId(tenantId); |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10)); |
|
|
|
String email = email2+suffix+ "@thingsboard.org"; |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10)); |
|
|
|
String email = email2 + suffix + "@thingsboard.org"; |
|
|
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase(); |
|
|
|
user.setEmail(email); |
|
|
|
tenantAdminsEmail2.add(userService.saveUser(user)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<User> loadedTenantAdminsEmail1 = new ArrayList<>(); |
|
|
|
TextPageLink pageLink = new TextPageLink(33, email1); |
|
|
|
TextPageData<User> pageData = null; |
|
|
|
@ -279,12 +279,12 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
pageLink = pageData.getNextPageLink(); |
|
|
|
} |
|
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
|
|
|
Collections.sort(tenantAdminsEmail1, idComparator); |
|
|
|
Collections.sort(loadedTenantAdminsEmail1, idComparator); |
|
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(tenantAdminsEmail1, loadedTenantAdminsEmail1); |
|
|
|
|
|
|
|
|
|
|
|
List<User> loadedTenantAdminsEmail2 = new ArrayList<>(); |
|
|
|
pageLink = new TextPageLink(16, email2); |
|
|
|
do { |
|
|
|
@ -294,33 +294,33 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
pageLink = pageData.getNextPageLink(); |
|
|
|
} |
|
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
|
|
|
Collections.sort(tenantAdminsEmail2, idComparator); |
|
|
|
Collections.sort(loadedTenantAdminsEmail2, idComparator); |
|
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(tenantAdminsEmail2, loadedTenantAdminsEmail2); |
|
|
|
|
|
|
|
|
|
|
|
for (User user : loadedTenantAdminsEmail1) { |
|
|
|
userService.deleteUser(user.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pageLink = new TextPageLink(4, email1); |
|
|
|
pageData = userService.findTenantAdmins(tenantId, pageLink); |
|
|
|
Assert.assertFalse(pageData.hasNext()); |
|
|
|
Assert.assertEquals(0, pageData.getData().size()); |
|
|
|
|
|
|
|
|
|
|
|
for (User user : loadedTenantAdminsEmail2) { |
|
|
|
userService.deleteUser(user.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pageLink = new TextPageLink(4, email2); |
|
|
|
pageData = userService.findTenantAdmins(tenantId, pageLink); |
|
|
|
Assert.assertFalse(pageData.hasNext()); |
|
|
|
Assert.assertEquals(0, pageData.getData().size()); |
|
|
|
|
|
|
|
|
|
|
|
tenantService.deleteTenant(tenantId); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindCustomerUsers() { |
|
|
|
User customerUser = userService.findUserByEmail("customer@thingsboard.org"); |
|
|
|
@ -330,22 +330,22 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
List<User> users = pageData.getData(); |
|
|
|
Assert.assertEquals(1, users.size()); |
|
|
|
Assert.assertEquals(customerUser, users.get(0)); |
|
|
|
|
|
|
|
|
|
|
|
Tenant tenant = new Tenant(); |
|
|
|
tenant.setTitle("Test tenant"); |
|
|
|
tenant = tenantService.saveTenant(tenant); |
|
|
|
|
|
|
|
|
|
|
|
TenantId tenantId = tenant.getId(); |
|
|
|
|
|
|
|
|
|
|
|
Customer customer = new Customer(); |
|
|
|
customer.setTitle("Test customer"); |
|
|
|
customer.setTenantId(tenantId); |
|
|
|
customer = customerService.saveCustomer(customer); |
|
|
|
|
|
|
|
|
|
|
|
CustomerId customerId = customer.getId(); |
|
|
|
|
|
|
|
|
|
|
|
List<User> customerUsers = new ArrayList<>(); |
|
|
|
for (int i=0;i<156;i++) { |
|
|
|
for (int i = 0; i < 156; i++) { |
|
|
|
User user = new User(); |
|
|
|
user.setAuthority(Authority.CUSTOMER_USER); |
|
|
|
user.setTenantId(tenantId); |
|
|
|
@ -353,7 +353,7 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
user.setEmail("testCustomer" + i + "@thingsboard.org"); |
|
|
|
customerUsers.add(userService.saveUser(user)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<User> loadedCustomerUsers = new ArrayList<>(); |
|
|
|
TextPageLink pageLink = new TextPageLink(33); |
|
|
|
do { |
|
|
|
@ -363,65 +363,65 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
pageLink = pageData.getNextPageLink(); |
|
|
|
} |
|
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
|
|
|
Collections.sort(customerUsers, idComparator); |
|
|
|
Collections.sort(loadedCustomerUsers, idComparator); |
|
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(customerUsers, loadedCustomerUsers); |
|
|
|
|
|
|
|
|
|
|
|
tenantService.deleteTenant(tenantId); |
|
|
|
|
|
|
|
|
|
|
|
pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); |
|
|
|
Assert.assertFalse(pageData.hasNext()); |
|
|
|
Assert.assertTrue(pageData.getData().isEmpty()); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
public void testFindCustomerUsersByEmail() { |
|
|
|
Tenant tenant = new Tenant(); |
|
|
|
tenant.setTitle("Test tenant"); |
|
|
|
tenant = tenantService.saveTenant(tenant); |
|
|
|
|
|
|
|
|
|
|
|
TenantId tenantId = tenant.getId(); |
|
|
|
|
|
|
|
|
|
|
|
Customer customer = new Customer(); |
|
|
|
customer.setTitle("Test customer"); |
|
|
|
customer.setTenantId(tenantId); |
|
|
|
customer = customerService.saveCustomer(customer); |
|
|
|
|
|
|
|
|
|
|
|
CustomerId customerId = customer.getId(); |
|
|
|
|
|
|
|
String email1 = "testEmail1"; |
|
|
|
|
|
|
|
String email1 = "testEmail1"; |
|
|
|
List<User> customerUsersEmail1 = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i=0;i<124;i++) { |
|
|
|
|
|
|
|
for (int i = 0; i < 124; i++) { |
|
|
|
User user = new User(); |
|
|
|
user.setAuthority(Authority.CUSTOMER_USER); |
|
|
|
user.setTenantId(tenantId); |
|
|
|
user.setCustomerId(customerId); |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10)); |
|
|
|
String email = email1+suffix+ "@thingsboard.org"; |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10)); |
|
|
|
String email = email1 + suffix + "@thingsboard.org"; |
|
|
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase(); |
|
|
|
user.setEmail(email); |
|
|
|
customerUsersEmail1.add(userService.saveUser(user)); |
|
|
|
} |
|
|
|
|
|
|
|
String email2 = "testEmail2"; |
|
|
|
|
|
|
|
String email2 = "testEmail2"; |
|
|
|
List<User> customerUsersEmail2 = new ArrayList<>(); |
|
|
|
|
|
|
|
for (int i=0;i<132;i++) { |
|
|
|
|
|
|
|
for (int i = 0; i < 132; i++) { |
|
|
|
User user = new User(); |
|
|
|
user.setAuthority(Authority.CUSTOMER_USER); |
|
|
|
user.setTenantId(tenantId); |
|
|
|
user.setCustomerId(customerId); |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10)); |
|
|
|
String email = email2+suffix+ "@thingsboard.org"; |
|
|
|
String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10)); |
|
|
|
String email = email2 + suffix + "@thingsboard.org"; |
|
|
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase(); |
|
|
|
user.setEmail(email); |
|
|
|
customerUsersEmail2.add(userService.saveUser(user)); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
List<User> loadedCustomerUsersEmail1 = new ArrayList<>(); |
|
|
|
TextPageLink pageLink = new TextPageLink(33, email1); |
|
|
|
TextPageData<User> pageData = null; |
|
|
|
@ -432,12 +432,12 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
pageLink = pageData.getNextPageLink(); |
|
|
|
} |
|
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
|
|
|
Collections.sort(customerUsersEmail1, idComparator); |
|
|
|
Collections.sort(loadedCustomerUsersEmail1, idComparator); |
|
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(customerUsersEmail1, loadedCustomerUsersEmail1); |
|
|
|
|
|
|
|
|
|
|
|
List<User> loadedCustomerUsersEmail2 = new ArrayList<>(); |
|
|
|
pageLink = new TextPageLink(16, email2); |
|
|
|
do { |
|
|
|
@ -447,30 +447,30 @@ public class UserServiceImplTest extends AbstractServiceTest { |
|
|
|
pageLink = pageData.getNextPageLink(); |
|
|
|
} |
|
|
|
} while (pageData.hasNext()); |
|
|
|
|
|
|
|
|
|
|
|
Collections.sort(customerUsersEmail2, idComparator); |
|
|
|
Collections.sort(loadedCustomerUsersEmail2, idComparator); |
|
|
|
|
|
|
|
|
|
|
|
Assert.assertEquals(customerUsersEmail2, loadedCustomerUsersEmail2); |
|
|
|
|
|
|
|
|
|
|
|
for (User user : loadedCustomerUsersEmail1) { |
|
|
|
userService.deleteUser(user.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pageLink = new TextPageLink(4, email1); |
|
|
|
pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); |
|
|
|
Assert.assertFalse(pageData.hasNext()); |
|
|
|
Assert.assertEquals(0, pageData.getData().size()); |
|
|
|
|
|
|
|
|
|
|
|
for (User user : loadedCustomerUsersEmail2) { |
|
|
|
userService.deleteUser(user.getId()); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pageLink = new TextPageLink(4, email2); |
|
|
|
pageData = userService.findCustomerUsers(tenantId, customerId, pageLink); |
|
|
|
Assert.assertFalse(pageData.hasNext()); |
|
|
|
Assert.assertEquals(0, pageData.getData().size()); |
|
|
|
|
|
|
|
|
|
|
|
tenantService.deleteTenant(tenantId); |
|
|
|
} |
|
|
|
|
|
|
|
|