|
@@ -38,21 +38,23 @@ import java.util.List; |
|
@@ -38,21 +38,23 @@ import java.util.List; |
38
|
|
38
|
|
39
|
import static org.hamcrest.Matchers.containsString;
|
39
|
import static org.hamcrest.Matchers.containsString;
|
40
|
import static org.hamcrest.Matchers.is;
|
40
|
import static org.hamcrest.Matchers.is;
|
41
|
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
|
41
|
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
|
|
|
42
|
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
|
|
|
43
|
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
|
42
|
|
44
|
|
43
|
public abstract class BaseUserControllerTest extends AbstractControllerTest {
|
45
|
public abstract class BaseUserControllerTest extends AbstractControllerTest {
|
44
|
-
|
46
|
+
|
45
|
private IdComparator<User> idComparator = new IdComparator<>();
|
47
|
private IdComparator<User> idComparator = new IdComparator<>();
|
46
|
|
48
|
|
47
|
@Test
|
49
|
@Test
|
48
|
public void testSaveUser() throws Exception {
|
50
|
public void testSaveUser() throws Exception {
|
49
|
loginSysAdmin();
|
51
|
loginSysAdmin();
|
50
|
-
|
52
|
+
|
51
|
Tenant tenant = new Tenant();
|
53
|
Tenant tenant = new Tenant();
|
52
|
tenant.setTitle("My tenant");
|
54
|
tenant.setTitle("My tenant");
|
53
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
55
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
54
|
Assert.assertNotNull(savedTenant);
|
56
|
Assert.assertNotNull(savedTenant);
|
55
|
-
|
57
|
+
|
56
|
String email = "tenant2@thingsboard.org";
|
58
|
String email = "tenant2@thingsboard.org";
|
57
|
User user = new User();
|
59
|
User user = new User();
|
58
|
user.setAuthority(Authority.TENANT_ADMIN);
|
60
|
user.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -66,13 +68,13 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -66,13 +68,13 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
66
|
Assert.assertTrue(savedUser.getCreatedTime() > 0);
|
68
|
Assert.assertTrue(savedUser.getCreatedTime() > 0);
|
67
|
Assert.assertEquals(user.getEmail(), savedUser.getEmail());
|
69
|
Assert.assertEquals(user.getEmail(), savedUser.getEmail());
|
68
|
|
70
|
|
69
|
- User foundUser = doGet("/api/user/"+savedUser.getId().getId().toString(), User.class);
|
71
|
+ User foundUser = doGet("/api/user/" + savedUser.getId().getId().toString(), User.class);
|
70
|
Assert.assertEquals(foundUser, savedUser);
|
72
|
Assert.assertEquals(foundUser, savedUser);
|
71
|
-
|
73
|
+
|
72
|
logout();
|
74
|
logout();
|
73
|
doGet("/api/noauth/activate?activateToken={activateToken}", TestMailService.currentActivateToken)
|
75
|
doGet("/api/noauth/activate?activateToken={activateToken}", TestMailService.currentActivateToken)
|
74
|
- .andExpect(status().isSeeOther())
|
|
|
75
|
- .andExpect(header().string(HttpHeaders.LOCATION, "/login/createPassword?activateToken=" + TestMailService.currentActivateToken));
|
76
|
+ .andExpect(status().isSeeOther())
|
|
|
77
|
+ .andExpect(header().string(HttpHeaders.LOCATION, "/login/createPassword?activateToken=" + TestMailService.currentActivateToken));
|
76
|
|
78
|
|
77
|
JsonNode activateRequest = new ObjectMapper().createObjectNode()
|
79
|
JsonNode activateRequest = new ObjectMapper().createObjectNode()
|
78
|
.put("activateToken", TestMailService.currentActivateToken)
|
80
|
.put("activateToken", TestMailService.currentActivateToken)
|
|
@@ -82,36 +84,61 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -82,36 +84,61 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
82
|
validateAndSetJwtToken(tokenInfo, email);
|
84
|
validateAndSetJwtToken(tokenInfo, email);
|
83
|
|
85
|
|
84
|
doGet("/api/auth/user")
|
86
|
doGet("/api/auth/user")
|
85
|
- .andExpect(status().isOk())
|
|
|
86
|
- .andExpect(jsonPath("$.authority",is(Authority.TENANT_ADMIN.name())))
|
|
|
87
|
- .andExpect(jsonPath("$.email",is(email)));
|
|
|
88
|
-
|
87
|
+ .andExpect(status().isOk())
|
|
|
88
|
+ .andExpect(jsonPath("$.authority", is(Authority.TENANT_ADMIN.name())))
|
|
|
89
|
+ .andExpect(jsonPath("$.email", is(email)));
|
|
|
90
|
+
|
89
|
logout();
|
91
|
logout();
|
90
|
-
|
92
|
+
|
91
|
login(email, "testPassword");
|
93
|
login(email, "testPassword");
|
92
|
-
|
94
|
+
|
93
|
doGet("/api/auth/user")
|
95
|
doGet("/api/auth/user")
|
94
|
- .andExpect(status().isOk())
|
|
|
95
|
- .andExpect(jsonPath("$.authority",is(Authority.TENANT_ADMIN.name())))
|
|
|
96
|
- .andExpect(jsonPath("$.email",is(email)));
|
|
|
97
|
-
|
96
|
+ .andExpect(status().isOk())
|
|
|
97
|
+ .andExpect(jsonPath("$.authority", is(Authority.TENANT_ADMIN.name())))
|
|
|
98
|
+ .andExpect(jsonPath("$.email", is(email)));
|
|
|
99
|
+
|
98
|
loginSysAdmin();
|
100
|
loginSysAdmin();
|
99
|
- doDelete("/api/user/"+savedUser.getId().getId().toString())
|
|
|
100
|
- .andExpect(status().isOk());
|
|
|
101
|
-
|
|
|
102
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
103
|
- .andExpect(status().isOk());
|
101
|
+ doDelete("/api/user/" + savedUser.getId().getId().toString())
|
|
|
102
|
+ .andExpect(status().isOk());
|
|
|
103
|
+
|
|
|
104
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
105
|
+ .andExpect(status().isOk());
|
104
|
}
|
106
|
}
|
105
|
-
|
107
|
+
|
|
|
108
|
+ @Test
|
|
|
109
|
+ public void testUpdateUserFromDifferentTenant() throws Exception {
|
|
|
110
|
+ loginSysAdmin();
|
|
|
111
|
+ Tenant tenant = new Tenant();
|
|
|
112
|
+ tenant.setTitle("My tenant");
|
|
|
113
|
+ Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
|
|
114
|
+ Assert.assertNotNull(savedTenant);
|
|
|
115
|
+
|
|
|
116
|
+ User tenantAdmin = new User();
|
|
|
117
|
+ tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
|
|
118
|
+ tenantAdmin.setTenantId(savedTenant.getId());
|
|
|
119
|
+ tenantAdmin.setEmail("tenant2@thingsboard.org");
|
|
|
120
|
+ tenantAdmin.setFirstName("Joe");
|
|
|
121
|
+ tenantAdmin.setLastName("Downs");
|
|
|
122
|
+ tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
|
|
123
|
+
|
|
|
124
|
+ loginDifferentTenant();
|
|
|
125
|
+ doPost("/api/user", tenantAdmin, User.class, status().isForbidden());
|
|
|
126
|
+ deleteDifferentTenant();
|
|
|
127
|
+
|
|
|
128
|
+ loginSysAdmin();
|
|
|
129
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
130
|
+ .andExpect(status().isOk());
|
|
|
131
|
+ }
|
|
|
132
|
+
|
106
|
@Test
|
133
|
@Test
|
107
|
public void testResetPassword() throws Exception {
|
134
|
public void testResetPassword() throws Exception {
|
108
|
loginSysAdmin();
|
135
|
loginSysAdmin();
|
109
|
-
|
136
|
+
|
110
|
Tenant tenant = new Tenant();
|
137
|
Tenant tenant = new Tenant();
|
111
|
tenant.setTitle("My tenant");
|
138
|
tenant.setTitle("My tenant");
|
112
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
139
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
113
|
Assert.assertNotNull(savedTenant);
|
140
|
Assert.assertNotNull(savedTenant);
|
114
|
-
|
141
|
+
|
115
|
String email = "tenant2@thingsboard.org";
|
142
|
String email = "tenant2@thingsboard.org";
|
116
|
User user = new User();
|
143
|
User user = new User();
|
117
|
user.setAuthority(Authority.TENANT_ADMIN);
|
144
|
user.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -119,7 +146,7 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -119,7 +146,7 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
119
|
user.setEmail(email);
|
146
|
user.setEmail(email);
|
120
|
user.setFirstName("Joe");
|
147
|
user.setFirstName("Joe");
|
121
|
user.setLastName("Downs");
|
148
|
user.setLastName("Downs");
|
122
|
-
|
149
|
+
|
123
|
User savedUser = createUserAndLogin(user, "testPassword1");
|
150
|
User savedUser = createUserAndLogin(user, "testPassword1");
|
124
|
logout();
|
151
|
logout();
|
125
|
|
152
|
|
|
@@ -127,10 +154,10 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -127,10 +154,10 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
127
|
.put("email", email);
|
154
|
.put("email", email);
|
128
|
|
155
|
|
129
|
doPost("/api/noauth/resetPasswordByEmail", resetPasswordByEmailRequest)
|
156
|
doPost("/api/noauth/resetPasswordByEmail", resetPasswordByEmailRequest)
|
130
|
- .andExpect(status().isOk());
|
157
|
+ .andExpect(status().isOk());
|
131
|
doGet("/api/noauth/resetPassword?resetToken={resetToken}", TestMailService.currentResetPasswordToken)
|
158
|
doGet("/api/noauth/resetPassword?resetToken={resetToken}", TestMailService.currentResetPasswordToken)
|
132
|
- .andExpect(status().isSeeOther())
|
|
|
133
|
- .andExpect(header().string(HttpHeaders.LOCATION, "/login/resetPassword?resetToken=" + TestMailService.currentResetPasswordToken));
|
159
|
+ .andExpect(status().isSeeOther())
|
|
|
160
|
+ .andExpect(header().string(HttpHeaders.LOCATION, "/login/resetPassword?resetToken=" + TestMailService.currentResetPasswordToken));
|
134
|
|
161
|
|
135
|
JsonNode resetPasswordRequest = new ObjectMapper().createObjectNode()
|
162
|
JsonNode resetPasswordRequest = new ObjectMapper().createObjectNode()
|
136
|
.put("resetToken", TestMailService.currentResetPasswordToken)
|
163
|
.put("resetToken", TestMailService.currentResetPasswordToken)
|
|
@@ -140,35 +167,35 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -140,35 +167,35 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
140
|
validateAndSetJwtToken(tokenInfo, email);
|
167
|
validateAndSetJwtToken(tokenInfo, email);
|
141
|
|
168
|
|
142
|
doGet("/api/auth/user")
|
169
|
doGet("/api/auth/user")
|
143
|
- .andExpect(status().isOk())
|
|
|
144
|
- .andExpect(jsonPath("$.authority",is(Authority.TENANT_ADMIN.name())))
|
|
|
145
|
- .andExpect(jsonPath("$.email",is(email)));
|
|
|
146
|
-
|
170
|
+ .andExpect(status().isOk())
|
|
|
171
|
+ .andExpect(jsonPath("$.authority", is(Authority.TENANT_ADMIN.name())))
|
|
|
172
|
+ .andExpect(jsonPath("$.email", is(email)));
|
|
|
173
|
+
|
147
|
logout();
|
174
|
logout();
|
148
|
-
|
175
|
+
|
149
|
login(email, "testPassword2");
|
176
|
login(email, "testPassword2");
|
150
|
doGet("/api/auth/user")
|
177
|
doGet("/api/auth/user")
|
151
|
- .andExpect(status().isOk())
|
|
|
152
|
- .andExpect(jsonPath("$.authority",is(Authority.TENANT_ADMIN.name())))
|
|
|
153
|
- .andExpect(jsonPath("$.email",is(email)));
|
|
|
154
|
-
|
178
|
+ .andExpect(status().isOk())
|
|
|
179
|
+ .andExpect(jsonPath("$.authority", is(Authority.TENANT_ADMIN.name())))
|
|
|
180
|
+ .andExpect(jsonPath("$.email", is(email)));
|
|
|
181
|
+
|
155
|
loginSysAdmin();
|
182
|
loginSysAdmin();
|
156
|
- doDelete("/api/user/"+savedUser.getId().getId().toString())
|
|
|
157
|
- .andExpect(status().isOk());
|
|
|
158
|
-
|
|
|
159
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
160
|
- .andExpect(status().isOk());
|
183
|
+ doDelete("/api/user/" + savedUser.getId().getId().toString())
|
|
|
184
|
+ .andExpect(status().isOk());
|
|
|
185
|
+
|
|
|
186
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
187
|
+ .andExpect(status().isOk());
|
161
|
}
|
188
|
}
|
162
|
-
|
189
|
+
|
163
|
@Test
|
190
|
@Test
|
164
|
public void testFindUserById() throws Exception {
|
191
|
public void testFindUserById() throws Exception {
|
165
|
loginSysAdmin();
|
192
|
loginSysAdmin();
|
166
|
-
|
193
|
+
|
167
|
Tenant tenant = new Tenant();
|
194
|
Tenant tenant = new Tenant();
|
168
|
tenant.setTitle("My tenant");
|
195
|
tenant.setTitle("My tenant");
|
169
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
196
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
170
|
Assert.assertNotNull(savedTenant);
|
197
|
Assert.assertNotNull(savedTenant);
|
171
|
-
|
198
|
+
|
172
|
String email = "tenant2@thingsboard.org";
|
199
|
String email = "tenant2@thingsboard.org";
|
173
|
User user = new User();
|
200
|
User user = new User();
|
174
|
user.setAuthority(Authority.TENANT_ADMIN);
|
201
|
user.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -176,25 +203,25 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -176,25 +203,25 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
176
|
user.setEmail(email);
|
203
|
user.setEmail(email);
|
177
|
user.setFirstName("Joe");
|
204
|
user.setFirstName("Joe");
|
178
|
user.setLastName("Downs");
|
205
|
user.setLastName("Downs");
|
179
|
-
|
206
|
+
|
180
|
User savedUser = doPost("/api/user", user, User.class);
|
207
|
User savedUser = doPost("/api/user", user, User.class);
|
181
|
- User foundUser = doGet("/api/user/"+savedUser.getId().getId().toString(), User.class);
|
208
|
+ User foundUser = doGet("/api/user/" + savedUser.getId().getId().toString(), User.class);
|
182
|
Assert.assertNotNull(foundUser);
|
209
|
Assert.assertNotNull(foundUser);
|
183
|
Assert.assertEquals(savedUser, foundUser);
|
210
|
Assert.assertEquals(savedUser, foundUser);
|
184
|
-
|
|
|
185
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
186
|
- .andExpect(status().isOk());
|
211
|
+
|
|
|
212
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
213
|
+ .andExpect(status().isOk());
|
187
|
}
|
214
|
}
|
188
|
-
|
215
|
+
|
189
|
@Test
|
216
|
@Test
|
190
|
public void testSaveUserWithSameEmail() throws Exception {
|
217
|
public void testSaveUserWithSameEmail() throws Exception {
|
191
|
loginSysAdmin();
|
218
|
loginSysAdmin();
|
192
|
-
|
219
|
+
|
193
|
Tenant tenant = new Tenant();
|
220
|
Tenant tenant = new Tenant();
|
194
|
tenant.setTitle("My tenant");
|
221
|
tenant.setTitle("My tenant");
|
195
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
222
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
196
|
Assert.assertNotNull(savedTenant);
|
223
|
Assert.assertNotNull(savedTenant);
|
197
|
-
|
224
|
+
|
198
|
String email = TENANT_ADMIN_EMAIL;
|
225
|
String email = TENANT_ADMIN_EMAIL;
|
199
|
User user = new User();
|
226
|
User user = new User();
|
200
|
user.setAuthority(Authority.TENANT_ADMIN);
|
227
|
user.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -202,24 +229,24 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -202,24 +229,24 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
202
|
user.setEmail(email);
|
229
|
user.setEmail(email);
|
203
|
user.setFirstName("Joe");
|
230
|
user.setFirstName("Joe");
|
204
|
user.setLastName("Downs");
|
231
|
user.setLastName("Downs");
|
205
|
-
|
232
|
+
|
206
|
doPost("/api/user", user)
|
233
|
doPost("/api/user", user)
|
207
|
- .andExpect(status().isBadRequest())
|
|
|
208
|
- .andExpect(statusReason(containsString("User with email '" + email + "' already present in database")));
|
|
|
209
|
-
|
|
|
210
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
211
|
- .andExpect(status().isOk());
|
234
|
+ .andExpect(status().isBadRequest())
|
|
|
235
|
+ .andExpect(statusReason(containsString("User with email '" + email + "' already present in database")));
|
|
|
236
|
+
|
|
|
237
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
238
|
+ .andExpect(status().isOk());
|
212
|
}
|
239
|
}
|
213
|
-
|
240
|
+
|
214
|
@Test
|
241
|
@Test
|
215
|
public void testSaveUserWithInvalidEmail() throws Exception {
|
242
|
public void testSaveUserWithInvalidEmail() throws Exception {
|
216
|
loginSysAdmin();
|
243
|
loginSysAdmin();
|
217
|
-
|
244
|
+
|
218
|
Tenant tenant = new Tenant();
|
245
|
Tenant tenant = new Tenant();
|
219
|
tenant.setTitle("My tenant");
|
246
|
tenant.setTitle("My tenant");
|
220
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
247
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
221
|
Assert.assertNotNull(savedTenant);
|
248
|
Assert.assertNotNull(savedTenant);
|
222
|
-
|
249
|
+
|
223
|
String email = "tenant_thingsboard.org";
|
250
|
String email = "tenant_thingsboard.org";
|
224
|
User user = new User();
|
251
|
User user = new User();
|
225
|
user.setAuthority(Authority.TENANT_ADMIN);
|
252
|
user.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -227,62 +254,62 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -227,62 +254,62 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
227
|
user.setEmail(email);
|
254
|
user.setEmail(email);
|
228
|
user.setFirstName("Joe");
|
255
|
user.setFirstName("Joe");
|
229
|
user.setLastName("Downs");
|
256
|
user.setLastName("Downs");
|
230
|
-
|
257
|
+
|
231
|
doPost("/api/user", user)
|
258
|
doPost("/api/user", user)
|
232
|
- .andExpect(status().isBadRequest())
|
|
|
233
|
- .andExpect(statusReason(containsString("Invalid email address format '" + email + "'")));
|
|
|
234
|
-
|
|
|
235
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
236
|
- .andExpect(status().isOk());
|
259
|
+ .andExpect(status().isBadRequest())
|
|
|
260
|
+ .andExpect(statusReason(containsString("Invalid email address format '" + email + "'")));
|
|
|
261
|
+
|
|
|
262
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
263
|
+ .andExpect(status().isOk());
|
237
|
}
|
264
|
}
|
238
|
-
|
265
|
+
|
239
|
@Test
|
266
|
@Test
|
240
|
public void testSaveUserWithEmptyEmail() throws Exception {
|
267
|
public void testSaveUserWithEmptyEmail() throws Exception {
|
241
|
loginSysAdmin();
|
268
|
loginSysAdmin();
|
242
|
-
|
269
|
+
|
243
|
Tenant tenant = new Tenant();
|
270
|
Tenant tenant = new Tenant();
|
244
|
tenant.setTitle("My tenant");
|
271
|
tenant.setTitle("My tenant");
|
245
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
272
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
246
|
Assert.assertNotNull(savedTenant);
|
273
|
Assert.assertNotNull(savedTenant);
|
247
|
-
|
274
|
+
|
248
|
User user = new User();
|
275
|
User user = new User();
|
249
|
user.setAuthority(Authority.TENANT_ADMIN);
|
276
|
user.setAuthority(Authority.TENANT_ADMIN);
|
250
|
user.setTenantId(savedTenant.getId());
|
277
|
user.setTenantId(savedTenant.getId());
|
251
|
user.setFirstName("Joe");
|
278
|
user.setFirstName("Joe");
|
252
|
user.setLastName("Downs");
|
279
|
user.setLastName("Downs");
|
253
|
-
|
280
|
+
|
254
|
doPost("/api/user", user)
|
281
|
doPost("/api/user", user)
|
255
|
- .andExpect(status().isBadRequest())
|
|
|
256
|
- .andExpect(statusReason(containsString("User email should be specified")));
|
|
|
257
|
-
|
|
|
258
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
259
|
- .andExpect(status().isOk());
|
282
|
+ .andExpect(status().isBadRequest())
|
|
|
283
|
+ .andExpect(statusReason(containsString("User email should be specified")));
|
|
|
284
|
+
|
|
|
285
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
286
|
+ .andExpect(status().isOk());
|
260
|
}
|
287
|
}
|
261
|
-
|
288
|
+
|
262
|
@Test
|
289
|
@Test
|
263
|
public void testSaveUserWithoutTenant() throws Exception {
|
290
|
public void testSaveUserWithoutTenant() throws Exception {
|
264
|
loginSysAdmin();
|
291
|
loginSysAdmin();
|
265
|
-
|
292
|
+
|
266
|
User user = new User();
|
293
|
User user = new User();
|
267
|
user.setAuthority(Authority.TENANT_ADMIN);
|
294
|
user.setAuthority(Authority.TENANT_ADMIN);
|
268
|
user.setEmail("tenant2@thingsboard.org");
|
295
|
user.setEmail("tenant2@thingsboard.org");
|
269
|
user.setFirstName("Joe");
|
296
|
user.setFirstName("Joe");
|
270
|
user.setLastName("Downs");
|
297
|
user.setLastName("Downs");
|
271
|
-
|
298
|
+
|
272
|
doPost("/api/user", user)
|
299
|
doPost("/api/user", user)
|
273
|
- .andExpect(status().isBadRequest())
|
|
|
274
|
- .andExpect(statusReason(containsString("Tenant administrator should be assigned to tenant")));
|
300
|
+ .andExpect(status().isBadRequest())
|
|
|
301
|
+ .andExpect(statusReason(containsString("Tenant administrator should be assigned to tenant")));
|
275
|
}
|
302
|
}
|
276
|
-
|
303
|
+
|
277
|
@Test
|
304
|
@Test
|
278
|
public void testDeleteUser() throws Exception {
|
305
|
public void testDeleteUser() throws Exception {
|
279
|
loginSysAdmin();
|
306
|
loginSysAdmin();
|
280
|
-
|
307
|
+
|
281
|
Tenant tenant = new Tenant();
|
308
|
Tenant tenant = new Tenant();
|
282
|
tenant.setTitle("My tenant");
|
309
|
tenant.setTitle("My tenant");
|
283
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
310
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
284
|
Assert.assertNotNull(savedTenant);
|
311
|
Assert.assertNotNull(savedTenant);
|
285
|
-
|
312
|
+
|
286
|
String email = "tenant2@thingsboard.org";
|
313
|
String email = "tenant2@thingsboard.org";
|
287
|
User user = new User();
|
314
|
User user = new User();
|
288
|
user.setAuthority(Authority.TENANT_ADMIN);
|
315
|
user.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -290,176 +317,182 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -290,176 +317,182 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
290
|
user.setEmail(email);
|
317
|
user.setEmail(email);
|
291
|
user.setFirstName("Joe");
|
318
|
user.setFirstName("Joe");
|
292
|
user.setLastName("Downs");
|
319
|
user.setLastName("Downs");
|
293
|
-
|
320
|
+
|
294
|
User savedUser = doPost("/api/user", user, User.class);
|
321
|
User savedUser = doPost("/api/user", user, User.class);
|
295
|
- User foundUser = doGet("/api/user/"+savedUser.getId().getId().toString(), User.class);
|
322
|
+ User foundUser = doGet("/api/user/" + savedUser.getId().getId().toString(), User.class);
|
296
|
Assert.assertNotNull(foundUser);
|
323
|
Assert.assertNotNull(foundUser);
|
297
|
-
|
|
|
298
|
- doDelete("/api/user/"+savedUser.getId().getId().toString())
|
|
|
299
|
- .andExpect(status().isOk());
|
|
|
300
|
-
|
|
|
301
|
- doGet("/api/user/"+savedUser.getId().getId().toString())
|
|
|
302
|
- .andExpect(status().isNotFound());
|
|
|
303
|
-
|
|
|
304
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
305
|
- .andExpect(status().isOk());
|
324
|
+
|
|
|
325
|
+ doDelete("/api/user/" + savedUser.getId().getId().toString())
|
|
|
326
|
+ .andExpect(status().isOk());
|
|
|
327
|
+
|
|
|
328
|
+ doGet("/api/user/" + savedUser.getId().getId().toString())
|
|
|
329
|
+ .andExpect(status().isNotFound());
|
|
|
330
|
+
|
|
|
331
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
332
|
+ .andExpect(status().isOk());
|
306
|
}
|
333
|
}
|
307
|
-
|
334
|
+
|
308
|
@Test
|
335
|
@Test
|
309
|
public void testFindTenantAdmins() throws Exception {
|
336
|
public void testFindTenantAdmins() throws Exception {
|
310
|
loginSysAdmin();
|
337
|
loginSysAdmin();
|
311
|
-
|
338
|
+
|
312
|
Tenant tenant = new Tenant();
|
339
|
Tenant tenant = new Tenant();
|
313
|
tenant.setTitle("My tenant");
|
340
|
tenant.setTitle("My tenant");
|
314
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
341
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
315
|
Assert.assertNotNull(savedTenant);
|
342
|
Assert.assertNotNull(savedTenant);
|
316
|
-
|
343
|
+
|
317
|
TenantId tenantId = savedTenant.getId();
|
344
|
TenantId tenantId = savedTenant.getId();
|
318
|
-
|
345
|
+
|
319
|
List<User> tenantAdmins = new ArrayList<>();
|
346
|
List<User> tenantAdmins = new ArrayList<>();
|
320
|
- for (int i=0;i<64;i++) {
|
347
|
+ for (int i = 0; i < 64; i++) {
|
321
|
User user = new User();
|
348
|
User user = new User();
|
322
|
user.setAuthority(Authority.TENANT_ADMIN);
|
349
|
user.setAuthority(Authority.TENANT_ADMIN);
|
323
|
user.setTenantId(tenantId);
|
350
|
user.setTenantId(tenantId);
|
324
|
user.setEmail("testTenant" + i + "@thingsboard.org");
|
351
|
user.setEmail("testTenant" + i + "@thingsboard.org");
|
325
|
tenantAdmins.add(doPost("/api/user", user, User.class));
|
352
|
tenantAdmins.add(doPost("/api/user", user, User.class));
|
326
|
}
|
353
|
}
|
327
|
-
|
354
|
+
|
328
|
List<User> loadedTenantAdmins = new ArrayList<>();
|
355
|
List<User> loadedTenantAdmins = new ArrayList<>();
|
329
|
TextPageLink pageLink = new TextPageLink(33);
|
356
|
TextPageLink pageLink = new TextPageLink(33);
|
330
|
TextPageData<User> pageData = null;
|
357
|
TextPageData<User> pageData = null;
|
331
|
do {
|
358
|
do {
|
332
|
- pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
333
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
359
|
+ pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
360
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
361
|
+ }, pageLink);
|
334
|
loadedTenantAdmins.addAll(pageData.getData());
|
362
|
loadedTenantAdmins.addAll(pageData.getData());
|
335
|
if (pageData.hasNext()) {
|
363
|
if (pageData.hasNext()) {
|
336
|
pageLink = pageData.getNextPageLink();
|
364
|
pageLink = pageData.getNextPageLink();
|
337
|
}
|
365
|
}
|
338
|
} while (pageData.hasNext());
|
366
|
} while (pageData.hasNext());
|
339
|
-
|
367
|
+
|
340
|
Collections.sort(tenantAdmins, idComparator);
|
368
|
Collections.sort(tenantAdmins, idComparator);
|
341
|
Collections.sort(loadedTenantAdmins, idComparator);
|
369
|
Collections.sort(loadedTenantAdmins, idComparator);
|
342
|
-
|
370
|
+
|
343
|
Assert.assertEquals(tenantAdmins, loadedTenantAdmins);
|
371
|
Assert.assertEquals(tenantAdmins, loadedTenantAdmins);
|
344
|
-
|
|
|
345
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
346
|
- .andExpect(status().isOk());
|
|
|
347
|
-
|
372
|
+
|
|
|
373
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
374
|
+ .andExpect(status().isOk());
|
|
|
375
|
+
|
348
|
pageLink = new TextPageLink(33);
|
376
|
pageLink = new TextPageLink(33);
|
349
|
- pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
350
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
377
|
+ pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
378
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
379
|
+ }, pageLink);
|
351
|
Assert.assertFalse(pageData.hasNext());
|
380
|
Assert.assertFalse(pageData.hasNext());
|
352
|
Assert.assertTrue(pageData.getData().isEmpty());
|
381
|
Assert.assertTrue(pageData.getData().isEmpty());
|
353
|
}
|
382
|
}
|
354
|
-
|
383
|
+
|
355
|
@Test
|
384
|
@Test
|
356
|
public void testFindTenantAdminsByEmail() throws Exception {
|
385
|
public void testFindTenantAdminsByEmail() throws Exception {
|
357
|
-
|
386
|
+
|
358
|
loginSysAdmin();
|
387
|
loginSysAdmin();
|
359
|
-
|
388
|
+
|
360
|
Tenant tenant = new Tenant();
|
389
|
Tenant tenant = new Tenant();
|
361
|
tenant.setTitle("My tenant");
|
390
|
tenant.setTitle("My tenant");
|
362
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
391
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
363
|
Assert.assertNotNull(savedTenant);
|
392
|
Assert.assertNotNull(savedTenant);
|
364
|
-
|
393
|
+
|
365
|
TenantId tenantId = savedTenant.getId();
|
394
|
TenantId tenantId = savedTenant.getId();
|
366
|
-
|
|
|
367
|
- String email1 = "testEmail1";
|
395
|
+
|
|
|
396
|
+ String email1 = "testEmail1";
|
368
|
List<User> tenantAdminsEmail1 = new ArrayList<>();
|
397
|
List<User> tenantAdminsEmail1 = new ArrayList<>();
|
369
|
-
|
|
|
370
|
- for (int i=0;i<124;i++) {
|
398
|
+
|
|
|
399
|
+ for (int i = 0; i < 124; i++) {
|
371
|
User user = new User();
|
400
|
User user = new User();
|
372
|
user.setAuthority(Authority.TENANT_ADMIN);
|
401
|
user.setAuthority(Authority.TENANT_ADMIN);
|
373
|
user.setTenantId(tenantId);
|
402
|
user.setTenantId(tenantId);
|
374
|
- String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10));
|
|
|
375
|
- String email = email1+suffix+ "@thingsboard.org";
|
403
|
+ String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10));
|
|
|
404
|
+ String email = email1 + suffix + "@thingsboard.org";
|
376
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
405
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
377
|
user.setEmail(email);
|
406
|
user.setEmail(email);
|
378
|
tenantAdminsEmail1.add(doPost("/api/user", user, User.class));
|
407
|
tenantAdminsEmail1.add(doPost("/api/user", user, User.class));
|
379
|
}
|
408
|
}
|
380
|
-
|
|
|
381
|
- String email2 = "testEmail2";
|
409
|
+
|
|
|
410
|
+ String email2 = "testEmail2";
|
382
|
List<User> tenantAdminsEmail2 = new ArrayList<>();
|
411
|
List<User> tenantAdminsEmail2 = new ArrayList<>();
|
383
|
-
|
|
|
384
|
- for (int i=0;i<112;i++) {
|
412
|
+
|
|
|
413
|
+ for (int i = 0; i < 112; i++) {
|
385
|
User user = new User();
|
414
|
User user = new User();
|
386
|
user.setAuthority(Authority.TENANT_ADMIN);
|
415
|
user.setAuthority(Authority.TENANT_ADMIN);
|
387
|
user.setTenantId(tenantId);
|
416
|
user.setTenantId(tenantId);
|
388
|
- String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10));
|
|
|
389
|
- String email = email2+suffix+ "@thingsboard.org";
|
417
|
+ String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10));
|
|
|
418
|
+ String email = email2 + suffix + "@thingsboard.org";
|
390
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
419
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
391
|
user.setEmail(email);
|
420
|
user.setEmail(email);
|
392
|
tenantAdminsEmail2.add(doPost("/api/user", user, User.class));
|
421
|
tenantAdminsEmail2.add(doPost("/api/user", user, User.class));
|
393
|
}
|
422
|
}
|
394
|
-
|
423
|
+
|
395
|
List<User> loadedTenantAdminsEmail1 = new ArrayList<>();
|
424
|
List<User> loadedTenantAdminsEmail1 = new ArrayList<>();
|
396
|
TextPageLink pageLink = new TextPageLink(33, email1);
|
425
|
TextPageLink pageLink = new TextPageLink(33, email1);
|
397
|
TextPageData<User> pageData = null;
|
426
|
TextPageData<User> pageData = null;
|
398
|
do {
|
427
|
do {
|
399
|
- pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
400
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
428
|
+ pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
429
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
430
|
+ }, pageLink);
|
401
|
loadedTenantAdminsEmail1.addAll(pageData.getData());
|
431
|
loadedTenantAdminsEmail1.addAll(pageData.getData());
|
402
|
if (pageData.hasNext()) {
|
432
|
if (pageData.hasNext()) {
|
403
|
pageLink = pageData.getNextPageLink();
|
433
|
pageLink = pageData.getNextPageLink();
|
404
|
}
|
434
|
}
|
405
|
} while (pageData.hasNext());
|
435
|
} while (pageData.hasNext());
|
406
|
-
|
436
|
+
|
407
|
Collections.sort(tenantAdminsEmail1, idComparator);
|
437
|
Collections.sort(tenantAdminsEmail1, idComparator);
|
408
|
Collections.sort(loadedTenantAdminsEmail1, idComparator);
|
438
|
Collections.sort(loadedTenantAdminsEmail1, idComparator);
|
409
|
-
|
439
|
+
|
410
|
Assert.assertEquals(tenantAdminsEmail1, loadedTenantAdminsEmail1);
|
440
|
Assert.assertEquals(tenantAdminsEmail1, loadedTenantAdminsEmail1);
|
411
|
-
|
441
|
+
|
412
|
List<User> loadedTenantAdminsEmail2 = new ArrayList<>();
|
442
|
List<User> loadedTenantAdminsEmail2 = new ArrayList<>();
|
413
|
pageLink = new TextPageLink(16, email2);
|
443
|
pageLink = new TextPageLink(16, email2);
|
414
|
do {
|
444
|
do {
|
415
|
- pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
416
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
445
|
+ pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
446
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
447
|
+ }, pageLink);
|
417
|
loadedTenantAdminsEmail2.addAll(pageData.getData());
|
448
|
loadedTenantAdminsEmail2.addAll(pageData.getData());
|
418
|
if (pageData.hasNext()) {
|
449
|
if (pageData.hasNext()) {
|
419
|
pageLink = pageData.getNextPageLink();
|
450
|
pageLink = pageData.getNextPageLink();
|
420
|
}
|
451
|
}
|
421
|
} while (pageData.hasNext());
|
452
|
} while (pageData.hasNext());
|
422
|
-
|
453
|
+
|
423
|
Collections.sort(tenantAdminsEmail2, idComparator);
|
454
|
Collections.sort(tenantAdminsEmail2, idComparator);
|
424
|
Collections.sort(loadedTenantAdminsEmail2, idComparator);
|
455
|
Collections.sort(loadedTenantAdminsEmail2, idComparator);
|
425
|
-
|
456
|
+
|
426
|
Assert.assertEquals(tenantAdminsEmail2, loadedTenantAdminsEmail2);
|
457
|
Assert.assertEquals(tenantAdminsEmail2, loadedTenantAdminsEmail2);
|
427
|
-
|
458
|
+
|
428
|
for (User user : loadedTenantAdminsEmail1) {
|
459
|
for (User user : loadedTenantAdminsEmail1) {
|
429
|
- doDelete("/api/user/"+user.getId().getId().toString())
|
|
|
430
|
- .andExpect(status().isOk());
|
460
|
+ doDelete("/api/user/" + user.getId().getId().toString())
|
|
|
461
|
+ .andExpect(status().isOk());
|
431
|
}
|
462
|
}
|
432
|
-
|
463
|
+
|
433
|
pageLink = new TextPageLink(4, email1);
|
464
|
pageLink = new TextPageLink(4, email1);
|
434
|
- pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
435
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
465
|
+ pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
466
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
467
|
+ }, pageLink);
|
436
|
Assert.assertFalse(pageData.hasNext());
|
468
|
Assert.assertFalse(pageData.hasNext());
|
437
|
Assert.assertEquals(0, pageData.getData().size());
|
469
|
Assert.assertEquals(0, pageData.getData().size());
|
438
|
-
|
470
|
+
|
439
|
for (User user : loadedTenantAdminsEmail2) {
|
471
|
for (User user : loadedTenantAdminsEmail2) {
|
440
|
- doDelete("/api/user/"+user.getId().getId().toString())
|
|
|
441
|
- .andExpect(status().isOk());
|
472
|
+ doDelete("/api/user/" + user.getId().getId().toString())
|
|
|
473
|
+ .andExpect(status().isOk());
|
442
|
}
|
474
|
}
|
443
|
-
|
475
|
+
|
444
|
pageLink = new TextPageLink(4, email2);
|
476
|
pageLink = new TextPageLink(4, email2);
|
445
|
- pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
446
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
477
|
+ pageData = doGetTypedWithPageLink("/api/tenant/" + tenantId.getId().toString() + "/users?",
|
|
|
478
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
479
|
+ }, pageLink);
|
447
|
Assert.assertFalse(pageData.hasNext());
|
480
|
Assert.assertFalse(pageData.hasNext());
|
448
|
Assert.assertEquals(0, pageData.getData().size());
|
481
|
Assert.assertEquals(0, pageData.getData().size());
|
449
|
-
|
|
|
450
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
451
|
- .andExpect(status().isOk());
|
482
|
+
|
|
|
483
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
484
|
+ .andExpect(status().isOk());
|
452
|
}
|
485
|
}
|
453
|
-
|
486
|
+
|
454
|
@Test
|
487
|
@Test
|
455
|
public void testFindCustomerUsers() throws Exception {
|
488
|
public void testFindCustomerUsers() throws Exception {
|
456
|
-
|
489
|
+
|
457
|
loginSysAdmin();
|
490
|
loginSysAdmin();
|
458
|
Tenant tenant = new Tenant();
|
491
|
Tenant tenant = new Tenant();
|
459
|
tenant.setTitle("My tenant");
|
492
|
tenant.setTitle("My tenant");
|
460
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
493
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
461
|
Assert.assertNotNull(savedTenant);
|
494
|
Assert.assertNotNull(savedTenant);
|
462
|
-
|
495
|
+
|
463
|
TenantId tenantId = savedTenant.getId();
|
496
|
TenantId tenantId = savedTenant.getId();
|
464
|
User tenantAdmin = new User();
|
497
|
User tenantAdmin = new User();
|
465
|
tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
498
|
tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -467,59 +500,60 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -467,59 +500,60 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
467
|
tenantAdmin.setEmail("tenant2@thingsboard.org");
|
500
|
tenantAdmin.setEmail("tenant2@thingsboard.org");
|
468
|
tenantAdmin.setFirstName("Joe");
|
501
|
tenantAdmin.setFirstName("Joe");
|
469
|
tenantAdmin.setLastName("Downs");
|
502
|
tenantAdmin.setLastName("Downs");
|
470
|
-
|
503
|
+
|
471
|
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
504
|
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
472
|
-
|
505
|
+
|
473
|
Customer customer = new Customer();
|
506
|
Customer customer = new Customer();
|
474
|
customer.setTitle("My customer");
|
507
|
customer.setTitle("My customer");
|
475
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
508
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
476
|
|
509
|
|
477
|
CustomerId customerId = savedCustomer.getId();
|
510
|
CustomerId customerId = savedCustomer.getId();
|
478
|
-
|
511
|
+
|
479
|
List<User> customerUsers = new ArrayList<>();
|
512
|
List<User> customerUsers = new ArrayList<>();
|
480
|
- for (int i=0;i<56;i++) {
|
513
|
+ for (int i = 0; i < 56; i++) {
|
481
|
User user = new User();
|
514
|
User user = new User();
|
482
|
user.setAuthority(Authority.CUSTOMER_USER);
|
515
|
user.setAuthority(Authority.CUSTOMER_USER);
|
483
|
user.setCustomerId(customerId);
|
516
|
user.setCustomerId(customerId);
|
484
|
user.setEmail("testCustomer" + i + "@thingsboard.org");
|
517
|
user.setEmail("testCustomer" + i + "@thingsboard.org");
|
485
|
customerUsers.add(doPost("/api/user", user, User.class));
|
518
|
customerUsers.add(doPost("/api/user", user, User.class));
|
486
|
}
|
519
|
}
|
487
|
-
|
520
|
+
|
488
|
List<User> loadedCustomerUsers = new ArrayList<>();
|
521
|
List<User> loadedCustomerUsers = new ArrayList<>();
|
489
|
TextPageLink pageLink = new TextPageLink(33);
|
522
|
TextPageLink pageLink = new TextPageLink(33);
|
490
|
TextPageData<User> pageData = null;
|
523
|
TextPageData<User> pageData = null;
|
491
|
do {
|
524
|
do {
|
492
|
- pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
493
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
525
|
+ pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
526
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
527
|
+ }, pageLink);
|
494
|
loadedCustomerUsers.addAll(pageData.getData());
|
528
|
loadedCustomerUsers.addAll(pageData.getData());
|
495
|
if (pageData.hasNext()) {
|
529
|
if (pageData.hasNext()) {
|
496
|
pageLink = pageData.getNextPageLink();
|
530
|
pageLink = pageData.getNextPageLink();
|
497
|
}
|
531
|
}
|
498
|
} while (pageData.hasNext());
|
532
|
} while (pageData.hasNext());
|
499
|
-
|
533
|
+
|
500
|
Collections.sort(customerUsers, idComparator);
|
534
|
Collections.sort(customerUsers, idComparator);
|
501
|
Collections.sort(loadedCustomerUsers, idComparator);
|
535
|
Collections.sort(loadedCustomerUsers, idComparator);
|
502
|
-
|
536
|
+
|
503
|
Assert.assertEquals(customerUsers, loadedCustomerUsers);
|
537
|
Assert.assertEquals(customerUsers, loadedCustomerUsers);
|
504
|
-
|
|
|
505
|
- doDelete("/api/customer/"+customerId.getId().toString())
|
|
|
506
|
- .andExpect(status().isOk());
|
|
|
507
|
-
|
538
|
+
|
|
|
539
|
+ doDelete("/api/customer/" + customerId.getId().toString())
|
|
|
540
|
+ .andExpect(status().isOk());
|
|
|
541
|
+
|
508
|
loginSysAdmin();
|
542
|
loginSysAdmin();
|
509
|
-
|
|
|
510
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
511
|
- .andExpect(status().isOk());
|
543
|
+
|
|
|
544
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
545
|
+ .andExpect(status().isOk());
|
512
|
}
|
546
|
}
|
513
|
-
|
547
|
+
|
514
|
@Test
|
548
|
@Test
|
515
|
public void testFindCustomerUsersByEmail() throws Exception {
|
549
|
public void testFindCustomerUsersByEmail() throws Exception {
|
516
|
-
|
550
|
+
|
517
|
loginSysAdmin();
|
551
|
loginSysAdmin();
|
518
|
Tenant tenant = new Tenant();
|
552
|
Tenant tenant = new Tenant();
|
519
|
tenant.setTitle("My tenant");
|
553
|
tenant.setTitle("My tenant");
|
520
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
554
|
Tenant savedTenant = doPost("/api/tenant", tenant, Tenant.class);
|
521
|
Assert.assertNotNull(savedTenant);
|
555
|
Assert.assertNotNull(savedTenant);
|
522
|
-
|
556
|
+
|
523
|
TenantId tenantId = savedTenant.getId();
|
557
|
TenantId tenantId = savedTenant.getId();
|
524
|
User tenantAdmin = new User();
|
558
|
User tenantAdmin = new User();
|
525
|
tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
559
|
tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
|
|
@@ -527,105 +561,109 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
|
@@ -527,105 +561,109 @@ public abstract class BaseUserControllerTest extends AbstractControllerTest { |
527
|
tenantAdmin.setEmail("tenant2@thingsboard.org");
|
561
|
tenantAdmin.setEmail("tenant2@thingsboard.org");
|
528
|
tenantAdmin.setFirstName("Joe");
|
562
|
tenantAdmin.setFirstName("Joe");
|
529
|
tenantAdmin.setLastName("Downs");
|
563
|
tenantAdmin.setLastName("Downs");
|
530
|
-
|
564
|
+
|
531
|
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
565
|
tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
|
532
|
-
|
566
|
+
|
533
|
Customer customer = new Customer();
|
567
|
Customer customer = new Customer();
|
534
|
customer.setTitle("My customer");
|
568
|
customer.setTitle("My customer");
|
535
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
569
|
Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
|
536
|
|
570
|
|
537
|
CustomerId customerId = savedCustomer.getId();
|
571
|
CustomerId customerId = savedCustomer.getId();
|
538
|
-
|
|
|
539
|
- String email1 = "testEmail1";
|
572
|
+
|
|
|
573
|
+ String email1 = "testEmail1";
|
540
|
List<User> customerUsersEmail1 = new ArrayList<>();
|
574
|
List<User> customerUsersEmail1 = new ArrayList<>();
|
541
|
-
|
|
|
542
|
- for (int i=0;i<74;i++) {
|
575
|
+
|
|
|
576
|
+ for (int i = 0; i < 74; i++) {
|
543
|
User user = new User();
|
577
|
User user = new User();
|
544
|
user.setAuthority(Authority.CUSTOMER_USER);
|
578
|
user.setAuthority(Authority.CUSTOMER_USER);
|
545
|
user.setCustomerId(customerId);
|
579
|
user.setCustomerId(customerId);
|
546
|
- String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10));
|
|
|
547
|
- String email = email1+suffix+ "@thingsboard.org";
|
580
|
+ String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10));
|
|
|
581
|
+ String email = email1 + suffix + "@thingsboard.org";
|
548
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
582
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
549
|
user.setEmail(email);
|
583
|
user.setEmail(email);
|
550
|
customerUsersEmail1.add(doPost("/api/user", user, User.class));
|
584
|
customerUsersEmail1.add(doPost("/api/user", user, User.class));
|
551
|
}
|
585
|
}
|
552
|
-
|
|
|
553
|
- String email2 = "testEmail2";
|
586
|
+
|
|
|
587
|
+ String email2 = "testEmail2";
|
554
|
List<User> customerUsersEmail2 = new ArrayList<>();
|
588
|
List<User> customerUsersEmail2 = new ArrayList<>();
|
555
|
-
|
|
|
556
|
- for (int i=0;i<92;i++) {
|
589
|
+
|
|
|
590
|
+ for (int i = 0; i < 92; i++) {
|
557
|
User user = new User();
|
591
|
User user = new User();
|
558
|
user.setAuthority(Authority.CUSTOMER_USER);
|
592
|
user.setAuthority(Authority.CUSTOMER_USER);
|
559
|
user.setCustomerId(customerId);
|
593
|
user.setCustomerId(customerId);
|
560
|
- String suffix = RandomStringUtils.randomAlphanumeric((int)(5 + Math.random()*10));
|
|
|
561
|
- String email = email2+suffix+ "@thingsboard.org";
|
594
|
+ String suffix = RandomStringUtils.randomAlphanumeric((int) (5 + Math.random() * 10));
|
|
|
595
|
+ String email = email2 + suffix + "@thingsboard.org";
|
562
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
596
|
email = i % 2 == 0 ? email.toLowerCase() : email.toUpperCase();
|
563
|
user.setEmail(email);
|
597
|
user.setEmail(email);
|
564
|
customerUsersEmail2.add(doPost("/api/user", user, User.class));
|
598
|
customerUsersEmail2.add(doPost("/api/user", user, User.class));
|
565
|
}
|
599
|
}
|
566
|
-
|
600
|
+
|
567
|
List<User> loadedCustomerUsersEmail1 = new ArrayList<>();
|
601
|
List<User> loadedCustomerUsersEmail1 = new ArrayList<>();
|
568
|
TextPageLink pageLink = new TextPageLink(33, email1);
|
602
|
TextPageLink pageLink = new TextPageLink(33, email1);
|
569
|
TextPageData<User> pageData = null;
|
603
|
TextPageData<User> pageData = null;
|
570
|
do {
|
604
|
do {
|
571
|
- pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
572
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
605
|
+ pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
606
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
607
|
+ }, pageLink);
|
573
|
loadedCustomerUsersEmail1.addAll(pageData.getData());
|
608
|
loadedCustomerUsersEmail1.addAll(pageData.getData());
|
574
|
if (pageData.hasNext()) {
|
609
|
if (pageData.hasNext()) {
|
575
|
pageLink = pageData.getNextPageLink();
|
610
|
pageLink = pageData.getNextPageLink();
|
576
|
}
|
611
|
}
|
577
|
} while (pageData.hasNext());
|
612
|
} while (pageData.hasNext());
|
578
|
-
|
613
|
+
|
579
|
Collections.sort(customerUsersEmail1, idComparator);
|
614
|
Collections.sort(customerUsersEmail1, idComparator);
|
580
|
Collections.sort(loadedCustomerUsersEmail1, idComparator);
|
615
|
Collections.sort(loadedCustomerUsersEmail1, idComparator);
|
581
|
-
|
616
|
+
|
582
|
Assert.assertEquals(customerUsersEmail1, loadedCustomerUsersEmail1);
|
617
|
Assert.assertEquals(customerUsersEmail1, loadedCustomerUsersEmail1);
|
583
|
-
|
618
|
+
|
584
|
List<User> loadedCustomerUsersEmail2 = new ArrayList<>();
|
619
|
List<User> loadedCustomerUsersEmail2 = new ArrayList<>();
|
585
|
pageLink = new TextPageLink(16, email2);
|
620
|
pageLink = new TextPageLink(16, email2);
|
586
|
do {
|
621
|
do {
|
587
|
- pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
588
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
622
|
+ pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
623
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
624
|
+ }, pageLink);
|
589
|
loadedCustomerUsersEmail2.addAll(pageData.getData());
|
625
|
loadedCustomerUsersEmail2.addAll(pageData.getData());
|
590
|
if (pageData.hasNext()) {
|
626
|
if (pageData.hasNext()) {
|
591
|
pageLink = pageData.getNextPageLink();
|
627
|
pageLink = pageData.getNextPageLink();
|
592
|
}
|
628
|
}
|
593
|
} while (pageData.hasNext());
|
629
|
} while (pageData.hasNext());
|
594
|
-
|
630
|
+
|
595
|
Collections.sort(customerUsersEmail2, idComparator);
|
631
|
Collections.sort(customerUsersEmail2, idComparator);
|
596
|
Collections.sort(loadedCustomerUsersEmail2, idComparator);
|
632
|
Collections.sort(loadedCustomerUsersEmail2, idComparator);
|
597
|
-
|
633
|
+
|
598
|
Assert.assertEquals(customerUsersEmail2, loadedCustomerUsersEmail2);
|
634
|
Assert.assertEquals(customerUsersEmail2, loadedCustomerUsersEmail2);
|
599
|
-
|
635
|
+
|
600
|
for (User user : loadedCustomerUsersEmail1) {
|
636
|
for (User user : loadedCustomerUsersEmail1) {
|
601
|
- doDelete("/api/user/"+user.getId().getId().toString())
|
|
|
602
|
- .andExpect(status().isOk());
|
637
|
+ doDelete("/api/user/" + user.getId().getId().toString())
|
|
|
638
|
+ .andExpect(status().isOk());
|
603
|
}
|
639
|
}
|
604
|
-
|
640
|
+
|
605
|
pageLink = new TextPageLink(4, email1);
|
641
|
pageLink = new TextPageLink(4, email1);
|
606
|
- pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
607
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
642
|
+ pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
643
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
644
|
+ }, pageLink);
|
608
|
Assert.assertFalse(pageData.hasNext());
|
645
|
Assert.assertFalse(pageData.hasNext());
|
609
|
Assert.assertEquals(0, pageData.getData().size());
|
646
|
Assert.assertEquals(0, pageData.getData().size());
|
610
|
-
|
647
|
+
|
611
|
for (User user : loadedCustomerUsersEmail2) {
|
648
|
for (User user : loadedCustomerUsersEmail2) {
|
612
|
- doDelete("/api/user/"+user.getId().getId().toString())
|
|
|
613
|
- .andExpect(status().isOk());
|
649
|
+ doDelete("/api/user/" + user.getId().getId().toString())
|
|
|
650
|
+ .andExpect(status().isOk());
|
614
|
}
|
651
|
}
|
615
|
-
|
652
|
+
|
616
|
pageLink = new TextPageLink(4, email2);
|
653
|
pageLink = new TextPageLink(4, email2);
|
617
|
- pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
618
|
- new TypeReference<TextPageData<User>>(){}, pageLink);
|
654
|
+ pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/users?",
|
|
|
655
|
+ new TypeReference<TextPageData<User>>() {
|
|
|
656
|
+ }, pageLink);
|
619
|
Assert.assertFalse(pageData.hasNext());
|
657
|
Assert.assertFalse(pageData.hasNext());
|
620
|
Assert.assertEquals(0, pageData.getData().size());
|
658
|
Assert.assertEquals(0, pageData.getData().size());
|
621
|
-
|
|
|
622
|
- doDelete("/api/customer/"+customerId.getId().toString())
|
|
|
623
|
- .andExpect(status().isOk());
|
|
|
624
|
-
|
659
|
+
|
|
|
660
|
+ doDelete("/api/customer/" + customerId.getId().toString())
|
|
|
661
|
+ .andExpect(status().isOk());
|
|
|
662
|
+
|
625
|
loginSysAdmin();
|
663
|
loginSysAdmin();
|
626
|
-
|
|
|
627
|
- doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
|
|
628
|
- .andExpect(status().isOk());
|
664
|
+
|
|
|
665
|
+ doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
|
|
666
|
+ .andExpect(status().isOk());
|
629
|
}
|
667
|
}
|
630
|
-
|
668
|
+
|
631
|
} |
669
|
} |