Commit b8b078e590dda599b8a1e518fc7eb5da0caa9920

Authored by Volodymyr Babak
1 parent 62caeefb

Fixed controller tests

1   --Xmx6G -Xms1024m
\ No newline at end of file
... ... @@ -80,7 +80,6 @@ import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppC
80 80 @ActiveProfiles("test")
81 81 @RunWith(SpringRunner.class)
82 82 @ContextConfiguration(classes = AbstractControllerTest.class, loader = SpringBootContextLoader.class)
83   -@TestPropertySource(locations = {"classpath:cassandra-test.properties", "classpath:application-test.properties", "classpath:nosql-test.properties"})
84 83 @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
85 84 @Configuration
86 85 @ComponentScan({"org.thingsboard.server"})
... ...
1   -/**
2   - * Copyright © 2016-2017 The Thingsboard Authors
3   - *
4   - * Licensed under the Apache License, Version 2.0 (the "License");
5   - * you may not use this file except in compliance with the License.
6   - * You may obtain a copy of the License at
7   - *
8   - * http://www.apache.org/licenses/LICENSE-2.0
9   - *
10   - * Unless required by applicable law or agreed to in writing, software
11   - * distributed under the License is distributed on an "AS IS" BASIS,
12   - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   - * See the License for the specific language governing permissions and
14   - * limitations under the License.
15   - */
16   -package org.thingsboard.server.controller;
17   -
18   -import static org.hamcrest.Matchers.containsString;
19   -import static org.hamcrest.Matchers.is;
20   -import static org.hamcrest.Matchers.notNullValue;
21   -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
22   -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
23   -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
24   -
25   -import org.thingsboard.server.common.data.AdminSettings;
26   -import org.junit.Test;
27   -
28   -import com.fasterxml.jackson.databind.JsonNode;
29   -import com.fasterxml.jackson.databind.ObjectMapper;
30   -import com.fasterxml.jackson.databind.node.ObjectNode;
31   -
32   -public class AdminControllerTest extends AbstractControllerTest {
33   -
34   - @Test
35   - public void testFindAdminSettingsByKey() throws Exception {
36   - loginSysAdmin();
37   - doGet("/api/admin/settings/general")
38   - .andExpect(status().isOk())
39   - .andExpect(content().contentType(contentType))
40   - .andExpect(jsonPath("$.id", notNullValue()))
41   - .andExpect(jsonPath("$.key", is("general")))
42   - .andExpect(jsonPath("$.jsonValue.baseUrl", is("http://localhost:8080")));
43   -
44   - doGet("/api/admin/settings/mail")
45   - .andExpect(status().isOk())
46   - .andExpect(content().contentType(contentType))
47   - .andExpect(jsonPath("$.id", notNullValue()))
48   - .andExpect(jsonPath("$.key", is("mail")))
49   - .andExpect(jsonPath("$.jsonValue.smtpProtocol", is("smtp")))
50   - .andExpect(jsonPath("$.jsonValue.smtpHost", is("localhost")))
51   - .andExpect(jsonPath("$.jsonValue.smtpPort", is("25")));
52   -
53   - doGet("/api/admin/settings/unknown")
54   - .andExpect(status().isNotFound());
55   -
56   - }
57   -
58   - @Test
59   - public void testSaveAdminSettings() throws Exception {
60   - loginSysAdmin();
61   - AdminSettings adminSettings = doGet("/api/admin/settings/general", AdminSettings.class);
62   -
63   - JsonNode jsonValue = adminSettings.getJsonValue();
64   - ((ObjectNode) jsonValue).put("baseUrl", "http://myhost.org");
65   - adminSettings.setJsonValue(jsonValue);
66   -
67   - doPost("/api/admin/settings", adminSettings).andExpect(status().isOk());
68   -
69   - doGet("/api/admin/settings/general")
70   - .andExpect(status().isOk())
71   - .andExpect(content().contentType(contentType))
72   - .andExpect(jsonPath("$.jsonValue.baseUrl", is("http://myhost.org")));
73   -
74   - ((ObjectNode) jsonValue).put("baseUrl", "http://localhost:8080");
75   - adminSettings.setJsonValue(jsonValue);
76   -
77   - doPost("/api/admin/settings", adminSettings)
78   - .andExpect(status().isOk());
79   - }
80   -
81   - @Test
82   - public void testSaveAdminSettingsWithEmptyKey() throws Exception {
83   - loginSysAdmin();
84   - AdminSettings adminSettings = doGet("/api/admin/settings/mail", AdminSettings.class);
85   - adminSettings.setKey(null);
86   - doPost("/api/admin/settings", adminSettings)
87   - .andExpect(status().isBadRequest())
88   - .andExpect(statusReason(containsString("Key should be specified")));
89   - }
90   -
91   - @Test
92   - public void testChangeAdminSettingsKey() throws Exception {
93   - loginSysAdmin();
94   - AdminSettings adminSettings = doGet("/api/admin/settings/mail", AdminSettings.class);
95   - adminSettings.setKey("newKey");
96   - doPost("/api/admin/settings", adminSettings)
97   - .andExpect(status().isBadRequest())
98   - .andExpect(statusReason(containsString("is prohibited")));
99   - }
100   -
101   - @Test
102   - public void testSaveAdminSettingsWithNewJsonStructure() throws Exception {
103   - loginSysAdmin();
104   - AdminSettings adminSettings = doGet("/api/admin/settings/mail", AdminSettings.class);
105   - JsonNode json = adminSettings.getJsonValue();
106   - ((ObjectNode) json).put("newKey", "my new value");
107   - adminSettings.setJsonValue(json);
108   - doPost("/api/admin/settings", adminSettings)
109   - .andExpect(status().isBadRequest())
110   - .andExpect(statusReason(containsString("Provided json structure is different")));
111   - }
112   -
113   - @Test
114   - public void testSaveAdminSettingsWithNonTextValue() throws Exception {
115   - loginSysAdmin();
116   - AdminSettings adminSettings = doGet("/api/admin/settings/mail", AdminSettings.class);
117   - JsonNode json = adminSettings.getJsonValue();
118   - ((ObjectNode) json).put("timeout", 10000L);
119   - adminSettings.setJsonValue(json);
120   - doPost("/api/admin/settings", adminSettings)
121   - .andExpect(status().isBadRequest())
122   - .andExpect(statusReason(containsString("Provided json structure can't contain non-text values")));
123   - }
124   -
125   - @Test
126   - public void testSendTestMail() throws Exception {
127   - loginSysAdmin();
128   - AdminSettings adminSettings = doGet("/api/admin/settings/mail", AdminSettings.class);
129   - doPost("/api/admin/settings/testMail", adminSettings)
130   - .andExpect(status().isOk());
131   - }
132   -
133   -}
1   -/**
2   - * Copyright © 2016-2017 The Thingsboard Authors
3   - *
4   - * Licensed under the Apache License, Version 2.0 (the "License");
5   - * you may not use this file except in compliance with the License.
6   - * You may obtain a copy of the License at
7   - *
8   - * http://www.apache.org/licenses/LICENSE-2.0
9   - *
10   - * Unless required by applicable law or agreed to in writing, software
11   - * distributed under the License is distributed on an "AS IS" BASIS,
12   - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   - * See the License for the specific language governing permissions and
14   - * limitations under the License.
15   - */
16   -package org.thingsboard.server.controller;
17   -
18   -import static org.hamcrest.Matchers.containsString;
19   -import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
20   -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
21   -
22   -import java.util.ArrayList;
23   -import java.util.Collections;
24   -import java.util.List;
25   -
26   -import org.apache.commons.lang3.RandomStringUtils;
27   -import org.thingsboard.server.common.data.*;
28   -import org.thingsboard.server.common.data.asset.Asset;
29   -import org.thingsboard.server.common.data.asset.TenantAssetType;
30   -import org.thingsboard.server.common.data.id.CustomerId;
31   -import org.thingsboard.server.common.data.page.TextPageData;
32   -import org.thingsboard.server.common.data.page.TextPageLink;
33   -import org.thingsboard.server.common.data.security.Authority;
34   -import org.thingsboard.server.dao.model.ModelConstants;
35   -import org.junit.After;
36   -import org.junit.Assert;
37   -import org.junit.Before;
38   -import org.junit.Test;
39   -
40   -import com.datastax.driver.core.utils.UUIDs;
41   -import com.fasterxml.jackson.core.type.TypeReference;
42   -
43   -public class AssetControllerTest extends AbstractControllerTest {
44   -
45   - private IdComparator<Asset> idComparator = new IdComparator<>();
46   -
47   - private Tenant savedTenant;
48   - private User tenantAdmin;
49   -
50   - @Before
51   - public void beforeTest() throws Exception {
52   - loginSysAdmin();
53   -
54   - Tenant tenant = new Tenant();
55   - tenant.setTitle("My tenant");
56   - savedTenant = doPost("/api/tenant", tenant, Tenant.class);
57   - Assert.assertNotNull(savedTenant);
58   -
59   - tenantAdmin = new User();
60   - tenantAdmin.setAuthority(Authority.TENANT_ADMIN);
61   - tenantAdmin.setTenantId(savedTenant.getId());
62   - tenantAdmin.setEmail("tenant2@thingsboard.org");
63   - tenantAdmin.setFirstName("Joe");
64   - tenantAdmin.setLastName("Downs");
65   -
66   - tenantAdmin = createUserAndLogin(tenantAdmin, "testPassword1");
67   - }
68   -
69   - @After
70   - public void afterTest() throws Exception {
71   - loginSysAdmin();
72   -
73   - doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
74   - .andExpect(status().isOk());
75   - }
76   -
77   - @Test
78   - public void testSaveAsset() throws Exception {
79   - Asset asset = new Asset();
80   - asset.setName("My asset");
81   - asset.setType("default");
82   - Asset savedAsset = doPost("/api/asset", asset, Asset.class);
83   -
84   - Assert.assertNotNull(savedAsset);
85   - Assert.assertNotNull(savedAsset.getId());
86   - Assert.assertTrue(savedAsset.getCreatedTime() > 0);
87   - Assert.assertEquals(savedTenant.getId(), savedAsset.getTenantId());
88   - Assert.assertNotNull(savedAsset.getCustomerId());
89   - Assert.assertEquals(NULL_UUID, savedAsset.getCustomerId().getId());
90   - Assert.assertEquals(asset.getName(), savedAsset.getName());
91   -
92   - savedAsset.setName("My new asset");
93   - doPost("/api/asset", savedAsset, Asset.class);
94   -
95   - Asset foundAsset = doGet("/api/asset/" + savedAsset.getId().getId().toString(), Asset.class);
96   - Assert.assertEquals(foundAsset.getName(), savedAsset.getName());
97   - }
98   -
99   - @Test
100   - public void testFindAssetById() throws Exception {
101   - Asset asset = new Asset();
102   - asset.setName("My asset");
103   - asset.setType("default");
104   - Asset savedAsset = doPost("/api/asset", asset, Asset.class);
105   - Asset foundAsset = doGet("/api/asset/" + savedAsset.getId().getId().toString(), Asset.class);
106   - Assert.assertNotNull(foundAsset);
107   - Assert.assertEquals(savedAsset, foundAsset);
108   - }
109   -
110   - @Test
111   - public void testFindAssetTypesByTenantId() throws Exception {
112   - List<Asset> assets = new ArrayList<>();
113   - for (int i=0;i<3;i++) {
114   - Asset asset = new Asset();
115   - asset.setName("My asset B"+i);
116   - asset.setType("typeB");
117   - assets.add(doPost("/api/asset", asset, Asset.class));
118   - }
119   - for (int i=0;i<7;i++) {
120   - Asset asset = new Asset();
121   - asset.setName("My asset C"+i);
122   - asset.setType("typeC");
123   - assets.add(doPost("/api/asset", asset, Asset.class));
124   - }
125   - for (int i=0;i<9;i++) {
126   - Asset asset = new Asset();
127   - asset.setName("My asset A"+i);
128   - asset.setType("typeA");
129   - assets.add(doPost("/api/asset", asset, Asset.class));
130   - }
131   - List<TenantAssetType> assetTypes = doGetTyped("/api/asset/types",
132   - new TypeReference<List<TenantAssetType>>(){});
133   -
134   - Assert.assertNotNull(assetTypes);
135   - Assert.assertEquals(3, assetTypes.size());
136   - Assert.assertEquals("typeA", assetTypes.get(0).getType());
137   - Assert.assertEquals("typeB", assetTypes.get(1).getType());
138   - Assert.assertEquals("typeC", assetTypes.get(2).getType());
139   - }
140   -
141   - @Test
142   - public void testDeleteAsset() throws Exception {
143   - Asset asset = new Asset();
144   - asset.setName("My asset");
145   - asset.setType("default");
146   - Asset savedAsset = doPost("/api/asset", asset, Asset.class);
147   -
148   - doDelete("/api/asset/"+savedAsset.getId().getId().toString())
149   - .andExpect(status().isOk());
150   -
151   - doGet("/api/asset/"+savedAsset.getId().getId().toString())
152   - .andExpect(status().isNotFound());
153   - }
154   -
155   - @Test
156   - public void testSaveAssetWithEmptyType() throws Exception {
157   - Asset asset = new Asset();
158   - asset.setName("My asset");
159   - doPost("/api/asset", asset)
160   - .andExpect(status().isBadRequest())
161   - .andExpect(statusReason(containsString("Asset type should be specified")));
162   - }
163   -
164   - @Test
165   - public void testSaveAssetWithEmptyName() throws Exception {
166   - Asset asset = new Asset();
167   - asset.setType("default");
168   - doPost("/api/asset", asset)
169   - .andExpect(status().isBadRequest())
170   - .andExpect(statusReason(containsString("Asset name should be specified")));
171   - }
172   -
173   - @Test
174   - public void testAssignUnassignAssetToCustomer() throws Exception {
175   - Asset asset = new Asset();
176   - asset.setName("My asset");
177   - asset.setType("default");
178   - Asset savedAsset = doPost("/api/asset", asset, Asset.class);
179   -
180   - Customer customer = new Customer();
181   - customer.setTitle("My customer");
182   - Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
183   -
184   - Asset assignedAsset = doPost("/api/customer/" + savedCustomer.getId().getId().toString()
185   - + "/asset/" + savedAsset.getId().getId().toString(), Asset.class);
186   - Assert.assertEquals(savedCustomer.getId(), assignedAsset.getCustomerId());
187   -
188   - Asset foundAsset = doGet("/api/asset/" + savedAsset.getId().getId().toString(), Asset.class);
189   - Assert.assertEquals(savedCustomer.getId(), foundAsset.getCustomerId());
190   -
191   - Asset unassignedAsset =
192   - doDelete("/api/customer/asset/" + savedAsset.getId().getId().toString(), Asset.class);
193   - Assert.assertEquals(ModelConstants.NULL_UUID, unassignedAsset.getCustomerId().getId());
194   -
195   - foundAsset = doGet("/api/asset/" + savedAsset.getId().getId().toString(), Asset.class);
196   - Assert.assertEquals(ModelConstants.NULL_UUID, foundAsset.getCustomerId().getId());
197   - }
198   -
199   - @Test
200   - public void testAssignAssetToNonExistentCustomer() throws Exception {
201   - Asset asset = new Asset();
202   - asset.setName("My asset");
203   - asset.setType("default");
204   - Asset savedAsset = doPost("/api/asset", asset, Asset.class);
205   -
206   - doPost("/api/customer/" + UUIDs.timeBased().toString()
207   - + "/asset/" + savedAsset.getId().getId().toString())
208   - .andExpect(status().isNotFound());
209   - }
210   -
211   - @Test
212   - public void testAssignAssetToCustomerFromDifferentTenant() throws Exception {
213   - loginSysAdmin();
214   -
215   - Tenant tenant2 = new Tenant();
216   - tenant2.setTitle("Different tenant");
217   - Tenant savedTenant2 = doPost("/api/tenant", tenant2, Tenant.class);
218   - Assert.assertNotNull(savedTenant2);
219   -
220   - User tenantAdmin2 = new User();
221   - tenantAdmin2.setAuthority(Authority.TENANT_ADMIN);
222   - tenantAdmin2.setTenantId(savedTenant2.getId());
223   - tenantAdmin2.setEmail("tenant3@thingsboard.org");
224   - tenantAdmin2.setFirstName("Joe");
225   - tenantAdmin2.setLastName("Downs");
226   -
227   - tenantAdmin2 = createUserAndLogin(tenantAdmin2, "testPassword1");
228   -
229   - Customer customer = new Customer();
230   - customer.setTitle("Different customer");
231   - Customer savedCustomer = doPost("/api/customer", customer, Customer.class);
232   -
233   - login(tenantAdmin.getEmail(), "testPassword1");
234   -
235   - Asset asset = new Asset();
236   - asset.setName("My asset");
237   - asset.setType("default");
238   - Asset savedAsset = doPost("/api/asset", asset, Asset.class);
239   -
240   - doPost("/api/customer/" + savedCustomer.getId().getId().toString()
241   - + "/asset/" + savedAsset.getId().getId().toString())
242   - .andExpect(status().isForbidden());
243   -
244   - loginSysAdmin();
245   -
246   - doDelete("/api/tenant/"+savedTenant2.getId().getId().toString())
247   - .andExpect(status().isOk());
248   - }
249   -
250   - @Test
251   - public void testFindTenantAssets() throws Exception {
252   - List<Asset> assets = new ArrayList<>();
253   - for (int i=0;i<178;i++) {
254   - Asset asset = new Asset();
255   - asset.setName("Asset"+i);
256   - asset.setType("default");
257   - assets.add(doPost("/api/asset", asset, Asset.class));
258   - }
259   - List<Asset> loadedAssets = new ArrayList<>();
260   - TextPageLink pageLink = new TextPageLink(23);
261   - TextPageData<Asset> pageData = null;
262   - do {
263   - pageData = doGetTypedWithPageLink("/api/tenant/assets?",
264   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
265   - loadedAssets.addAll(pageData.getData());
266   - if (pageData.hasNext()) {
267   - pageLink = pageData.getNextPageLink();
268   - }
269   - } while (pageData.hasNext());
270   -
271   - Collections.sort(assets, idComparator);
272   - Collections.sort(loadedAssets, idComparator);
273   -
274   - Assert.assertEquals(assets, loadedAssets);
275   - }
276   -
277   - @Test
278   - public void testFindTenantAssetsByName() throws Exception {
279   - String title1 = "Asset title 1";
280   - List<Asset> assetsTitle1 = new ArrayList<>();
281   - for (int i=0;i<143;i++) {
282   - Asset asset = new Asset();
283   - String suffix = RandomStringUtils.randomAlphanumeric(15);
284   - String name = title1+suffix;
285   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
286   - asset.setName(name);
287   - asset.setType("default");
288   - assetsTitle1.add(doPost("/api/asset", asset, Asset.class));
289   - }
290   - String title2 = "Asset title 2";
291   - List<Asset> assetsTitle2 = new ArrayList<>();
292   - for (int i=0;i<75;i++) {
293   - Asset asset = new Asset();
294   - String suffix = RandomStringUtils.randomAlphanumeric(15);
295   - String name = title2+suffix;
296   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
297   - asset.setName(name);
298   - asset.setType("default");
299   - assetsTitle2.add(doPost("/api/asset", asset, Asset.class));
300   - }
301   -
302   - List<Asset> loadedAssetsTitle1 = new ArrayList<>();
303   - TextPageLink pageLink = new TextPageLink(15, title1);
304   - TextPageData<Asset> pageData = null;
305   - do {
306   - pageData = doGetTypedWithPageLink("/api/tenant/assets?",
307   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
308   - loadedAssetsTitle1.addAll(pageData.getData());
309   - if (pageData.hasNext()) {
310   - pageLink = pageData.getNextPageLink();
311   - }
312   - } while (pageData.hasNext());
313   -
314   - Collections.sort(assetsTitle1, idComparator);
315   - Collections.sort(loadedAssetsTitle1, idComparator);
316   -
317   - Assert.assertEquals(assetsTitle1, loadedAssetsTitle1);
318   -
319   - List<Asset> loadedAssetsTitle2 = new ArrayList<>();
320   - pageLink = new TextPageLink(4, title2);
321   - do {
322   - pageData = doGetTypedWithPageLink("/api/tenant/assets?",
323   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
324   - loadedAssetsTitle2.addAll(pageData.getData());
325   - if (pageData.hasNext()) {
326   - pageLink = pageData.getNextPageLink();
327   - }
328   - } while (pageData.hasNext());
329   -
330   - Collections.sort(assetsTitle2, idComparator);
331   - Collections.sort(loadedAssetsTitle2, idComparator);
332   -
333   - Assert.assertEquals(assetsTitle2, loadedAssetsTitle2);
334   -
335   - for (Asset asset : loadedAssetsTitle1) {
336   - doDelete("/api/asset/"+asset.getId().getId().toString())
337   - .andExpect(status().isOk());
338   - }
339   -
340   - pageLink = new TextPageLink(4, title1);
341   - pageData = doGetTypedWithPageLink("/api/tenant/assets?",
342   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
343   - Assert.assertFalse(pageData.hasNext());
344   - Assert.assertEquals(0, pageData.getData().size());
345   -
346   - for (Asset asset : loadedAssetsTitle2) {
347   - doDelete("/api/asset/"+asset.getId().getId().toString())
348   - .andExpect(status().isOk());
349   - }
350   -
351   - pageLink = new TextPageLink(4, title2);
352   - pageData = doGetTypedWithPageLink("/api/tenant/assets?",
353   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
354   - Assert.assertFalse(pageData.hasNext());
355   - Assert.assertEquals(0, pageData.getData().size());
356   - }
357   -
358   - @Test
359   - public void testFindTenantAssetsByType() throws Exception {
360   - String title1 = "Asset title 1";
361   - String type1 = "typeA";
362   - List<Asset> assetsType1 = new ArrayList<>();
363   - for (int i=0;i<143;i++) {
364   - Asset asset = new Asset();
365   - String suffix = RandomStringUtils.randomAlphanumeric(15);
366   - String name = title1+suffix;
367   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
368   - asset.setName(name);
369   - asset.setType(type1);
370   - assetsType1.add(doPost("/api/asset", asset, Asset.class));
371   - }
372   - String title2 = "Asset title 2";
373   - String type2 = "typeB";
374   - List<Asset> assetsType2 = new ArrayList<>();
375   - for (int i=0;i<75;i++) {
376   - Asset asset = new Asset();
377   - String suffix = RandomStringUtils.randomAlphanumeric(15);
378   - String name = title2+suffix;
379   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
380   - asset.setName(name);
381   - asset.setType(type2);
382   - assetsType2.add(doPost("/api/asset", asset, Asset.class));
383   - }
384   -
385   - List<Asset> loadedAssetsType1 = new ArrayList<>();
386   - TextPageLink pageLink = new TextPageLink(15);
387   - TextPageData<Asset> pageData = null;
388   - do {
389   - pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
390   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
391   - loadedAssetsType1.addAll(pageData.getData());
392   - if (pageData.hasNext()) {
393   - pageLink = pageData.getNextPageLink();
394   - }
395   - } while (pageData.hasNext());
396   -
397   - Collections.sort(assetsType1, idComparator);
398   - Collections.sort(loadedAssetsType1, idComparator);
399   -
400   - Assert.assertEquals(assetsType1, loadedAssetsType1);
401   -
402   - List<Asset> loadedAssetsType2 = new ArrayList<>();
403   - pageLink = new TextPageLink(4);
404   - do {
405   - pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
406   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
407   - loadedAssetsType2.addAll(pageData.getData());
408   - if (pageData.hasNext()) {
409   - pageLink = pageData.getNextPageLink();
410   - }
411   - } while (pageData.hasNext());
412   -
413   - Collections.sort(assetsType2, idComparator);
414   - Collections.sort(loadedAssetsType2, idComparator);
415   -
416   - Assert.assertEquals(assetsType2, loadedAssetsType2);
417   -
418   - for (Asset asset : loadedAssetsType1) {
419   - doDelete("/api/asset/"+asset.getId().getId().toString())
420   - .andExpect(status().isOk());
421   - }
422   -
423   - pageLink = new TextPageLink(4);
424   - pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
425   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
426   - Assert.assertFalse(pageData.hasNext());
427   - Assert.assertEquals(0, pageData.getData().size());
428   -
429   - for (Asset asset : loadedAssetsType2) {
430   - doDelete("/api/asset/"+asset.getId().getId().toString())
431   - .andExpect(status().isOk());
432   - }
433   -
434   - pageLink = new TextPageLink(4);
435   - pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
436   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
437   - Assert.assertFalse(pageData.hasNext());
438   - Assert.assertEquals(0, pageData.getData().size());
439   - }
440   -
441   - @Test
442   - public void testFindCustomerAssets() throws Exception {
443   - Customer customer = new Customer();
444   - customer.setTitle("Test customer");
445   - customer = doPost("/api/customer", customer, Customer.class);
446   - CustomerId customerId = customer.getId();
447   -
448   - List<Asset> assets = new ArrayList<>();
449   - for (int i=0;i<128;i++) {
450   - Asset asset = new Asset();
451   - asset.setName("Asset"+i);
452   - asset.setType("default");
453   - asset = doPost("/api/asset", asset, Asset.class);
454   - assets.add(doPost("/api/customer/" + customerId.getId().toString()
455   - + "/asset/" + asset.getId().getId().toString(), Asset.class));
456   - }
457   -
458   - List<Asset> loadedAssets = new ArrayList<>();
459   - TextPageLink pageLink = new TextPageLink(23);
460   - TextPageData<Asset> pageData = null;
461   - do {
462   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
463   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
464   - loadedAssets.addAll(pageData.getData());
465   - if (pageData.hasNext()) {
466   - pageLink = pageData.getNextPageLink();
467   - }
468   - } while (pageData.hasNext());
469   -
470   - Collections.sort(assets, idComparator);
471   - Collections.sort(loadedAssets, idComparator);
472   -
473   - Assert.assertEquals(assets, loadedAssets);
474   - }
475   -
476   - @Test
477   - public void testFindCustomerAssetsByName() throws Exception {
478   - Customer customer = new Customer();
479   - customer.setTitle("Test customer");
480   - customer = doPost("/api/customer", customer, Customer.class);
481   - CustomerId customerId = customer.getId();
482   -
483   - String title1 = "Asset title 1";
484   - List<Asset> assetsTitle1 = new ArrayList<>();
485   - for (int i=0;i<125;i++) {
486   - Asset asset = new Asset();
487   - String suffix = RandomStringUtils.randomAlphanumeric(15);
488   - String name = title1+suffix;
489   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
490   - asset.setName(name);
491   - asset.setType("default");
492   - asset = doPost("/api/asset", asset, Asset.class);
493   - assetsTitle1.add(doPost("/api/customer/" + customerId.getId().toString()
494   - + "/asset/" + asset.getId().getId().toString(), Asset.class));
495   - }
496   - String title2 = "Asset title 2";
497   - List<Asset> assetsTitle2 = new ArrayList<>();
498   - for (int i=0;i<143;i++) {
499   - Asset asset = new Asset();
500   - String suffix = RandomStringUtils.randomAlphanumeric(15);
501   - String name = title2+suffix;
502   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
503   - asset.setName(name);
504   - asset.setType("default");
505   - asset = doPost("/api/asset", asset, Asset.class);
506   - assetsTitle2.add(doPost("/api/customer/" + customerId.getId().toString()
507   - + "/asset/" + asset.getId().getId().toString(), Asset.class));
508   - }
509   -
510   - List<Asset> loadedAssetsTitle1 = new ArrayList<>();
511   - TextPageLink pageLink = new TextPageLink(15, title1);
512   - TextPageData<Asset> pageData = null;
513   - do {
514   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
515   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
516   - loadedAssetsTitle1.addAll(pageData.getData());
517   - if (pageData.hasNext()) {
518   - pageLink = pageData.getNextPageLink();
519   - }
520   - } while (pageData.hasNext());
521   -
522   - Collections.sort(assetsTitle1, idComparator);
523   - Collections.sort(loadedAssetsTitle1, idComparator);
524   -
525   - Assert.assertEquals(assetsTitle1, loadedAssetsTitle1);
526   -
527   - List<Asset> loadedAssetsTitle2 = new ArrayList<>();
528   - pageLink = new TextPageLink(4, title2);
529   - do {
530   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
531   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
532   - loadedAssetsTitle2.addAll(pageData.getData());
533   - if (pageData.hasNext()) {
534   - pageLink = pageData.getNextPageLink();
535   - }
536   - } while (pageData.hasNext());
537   -
538   - Collections.sort(assetsTitle2, idComparator);
539   - Collections.sort(loadedAssetsTitle2, idComparator);
540   -
541   - Assert.assertEquals(assetsTitle2, loadedAssetsTitle2);
542   -
543   - for (Asset asset : loadedAssetsTitle1) {
544   - doDelete("/api/customer/asset/" + asset.getId().getId().toString())
545   - .andExpect(status().isOk());
546   - }
547   -
548   - pageLink = new TextPageLink(4, title1);
549   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
550   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
551   - Assert.assertFalse(pageData.hasNext());
552   - Assert.assertEquals(0, pageData.getData().size());
553   -
554   - for (Asset asset : loadedAssetsTitle2) {
555   - doDelete("/api/customer/asset/" + asset.getId().getId().toString())
556   - .andExpect(status().isOk());
557   - }
558   -
559   - pageLink = new TextPageLink(4, title2);
560   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
561   - new TypeReference<TextPageData<Asset>>(){}, pageLink);
562   - Assert.assertFalse(pageData.hasNext());
563   - Assert.assertEquals(0, pageData.getData().size());
564   - }
565   -
566   - @Test
567   - public void testFindCustomerAssetsByType() throws Exception {
568   - Customer customer = new Customer();
569   - customer.setTitle("Test customer");
570   - customer = doPost("/api/customer", customer, Customer.class);
571   - CustomerId customerId = customer.getId();
572   -
573   - String title1 = "Asset title 1";
574   - String type1 = "typeC";
575   - List<Asset> assetsType1 = new ArrayList<>();
576   - for (int i=0;i<125;i++) {
577   - Asset asset = new Asset();
578   - String suffix = RandomStringUtils.randomAlphanumeric(15);
579   - String name = title1+suffix;
580   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
581   - asset.setName(name);
582   - asset.setType(type1);
583   - asset = doPost("/api/asset", asset, Asset.class);
584   - assetsType1.add(doPost("/api/customer/" + customerId.getId().toString()
585   - + "/asset/" + asset.getId().getId().toString(), Asset.class));
586   - }
587   - String title2 = "Asset title 2";
588   - String type2 = "typeD";
589   - List<Asset> assetsType2 = new ArrayList<>();
590   - for (int i=0;i<143;i++) {
591   - Asset asset = new Asset();
592   - String suffix = RandomStringUtils.randomAlphanumeric(15);
593   - String name = title2+suffix;
594   - name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
595   - asset.setName(name);
596   - asset.setType(type2);
597   - asset = doPost("/api/asset", asset, Asset.class);
598   - assetsType2.add(doPost("/api/customer/" + customerId.getId().toString()
599   - + "/asset/" + asset.getId().getId().toString(), Asset.class));
600   - }
601   -
602   - List<Asset> loadedAssetsType1 = new ArrayList<>();
603   - TextPageLink pageLink = new TextPageLink(15);
604   - TextPageData<Asset> pageData = null;
605   - do {
606   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
607   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
608   - loadedAssetsType1.addAll(pageData.getData());
609   - if (pageData.hasNext()) {
610   - pageLink = pageData.getNextPageLink();
611   - }
612   - } while (pageData.hasNext());
613   -
614   - Collections.sort(assetsType1, idComparator);
615   - Collections.sort(loadedAssetsType1, idComparator);
616   -
617   - Assert.assertEquals(assetsType1, loadedAssetsType1);
618   -
619   - List<Asset> loadedAssetsType2 = new ArrayList<>();
620   - pageLink = new TextPageLink(4);
621   - do {
622   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
623   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
624   - loadedAssetsType2.addAll(pageData.getData());
625   - if (pageData.hasNext()) {
626   - pageLink = pageData.getNextPageLink();
627   - }
628   - } while (pageData.hasNext());
629   -
630   - Collections.sort(assetsType2, idComparator);
631   - Collections.sort(loadedAssetsType2, idComparator);
632   -
633   - Assert.assertEquals(assetsType2, loadedAssetsType2);
634   -
635   - for (Asset asset : loadedAssetsType1) {
636   - doDelete("/api/customer/asset/" + asset.getId().getId().toString())
637   - .andExpect(status().isOk());
638   - }
639   -
640   - pageLink = new TextPageLink(4);
641   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
642   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
643   - Assert.assertFalse(pageData.hasNext());
644   - Assert.assertEquals(0, pageData.getData().size());
645   -
646   - for (Asset asset : loadedAssetsType2) {
647   - doDelete("/api/customer/asset/" + asset.getId().getId().toString())
648   - .andExpect(status().isOk());
649   - }
650   -
651   - pageLink = new TextPageLink(4);
652   - pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
653   - new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
654   - Assert.assertFalse(pageData.hasNext());
655   - Assert.assertEquals(0, pageData.getData().size());
656   - }
657   -
658   -}
... ... @@ -79,19 +79,6 @@ public abstract class BaseAdminControllerTest extends AbstractControllerTest {
79 79 }
80 80
81 81 @Test
82   - public void testCreateAdminSettings() throws Exception {
83   - loginSysAdmin();
84   -
85   - AdminSettings adminSettings = new AdminSettings();
86   - adminSettings.setKey("someKey");
87   - adminSettings.setJsonValue(new ObjectMapper().readValue("{ \"someKey\": \"someValue\" }", JsonNode.class));
88   -
89   - doPost("/api/admin/settings", adminSettings)
90   - .andExpect(status().isBadRequest())
91   - .andExpect(statusReason(containsString("is prohibited")));
92   - }
93   -
94   - @Test
95 82 public void testSaveAdminSettingsWithEmptyKey() throws Exception {
96 83 loginSysAdmin();
97 84 AdminSettings adminSettings = doGet("/api/admin/settings/mail", AdminSettings.class);
... ...
... ... @@ -31,7 +31,7 @@ import org.junit.Test;
31 31
32 32 import com.fasterxml.jackson.core.type.TypeReference;
33 33
34   -public class BaseTenantControllerTest extends AbstractControllerTest {
  34 +public abstract class BaseTenantControllerTest extends AbstractControllerTest {
35 35
36 36 private IdComparator<Tenant> idComparator = new IdComparator<>();
37 37
... ...
... ... @@ -15,12 +15,10 @@
15 15 */
16 16 package org.thingsboard.server.controller;
17 17
18   -import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
19 18 import org.junit.ClassRule;
20 19 import org.junit.extensions.cpsuite.ClasspathSuite;
21 20 import org.junit.runner.RunWith;
22   -import org.thingsboard.server.dao.CustomCassandraCQLUnit;
23   -import org.thingsboard.server.dao.CustomPostgresUnit;
  21 +import org.thingsboard.server.dao.CustomSqlUnit;
24 22
25 23 import java.util.Arrays;
26 24
... ... @@ -31,7 +29,8 @@ import java.util.Arrays;
31 29 public class ControllerSqlTestSuite {
32 30
33 31 @ClassRule
34   - public static CustomPostgresUnit postgresUnit = new CustomPostgresUnit(
35   - Arrays.asList("postgres/schema.sql", "postgres/system-data.sql"),
36   - "postgres-embedded-test.properties");
  32 + public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
  33 + Arrays.asList("sql/schema.sql", "sql/system-data.sql"),
  34 + "sql/drop-all-tables.sql",
  35 + "sql-test.properties");
37 36 }
... ...
... ... @@ -33,8 +33,7 @@ public class SystemSqlTestSuite {
33 33 public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
34 34 Arrays.asList("sql/schema.sql", "sql/system-data.sql"),
35 35 "sql/drop-all-tables.sql",
36   - "sql-test.properties"
37   - );
  36 + "sql-test.properties");
38 37
39 38
40 39 }
... ...