Commit f1216c97204967ffc9f297623c4678b64108b8c9
1 parent
633ab7d3
Url validation for Ota Package and tests
Showing
6 changed files
with
77 additions
and
34 deletions
@@ -34,10 +34,10 @@ import org.thingsboard.server.common.data.OtaPackage; | @@ -34,10 +34,10 @@ import org.thingsboard.server.common.data.OtaPackage; | ||
34 | import org.thingsboard.server.common.data.OtaPackageInfo; | 34 | import org.thingsboard.server.common.data.OtaPackageInfo; |
35 | import org.thingsboard.server.common.data.audit.ActionType; | 35 | import org.thingsboard.server.common.data.audit.ActionType; |
36 | import org.thingsboard.server.common.data.exception.ThingsboardException; | 36 | import org.thingsboard.server.common.data.exception.ThingsboardException; |
37 | -import org.thingsboard.server.common.data.ota.ChecksumAlgorithm; | ||
38 | -import org.thingsboard.server.common.data.ota.OtaPackageType; | ||
39 | import org.thingsboard.server.common.data.id.DeviceProfileId; | 37 | import org.thingsboard.server.common.data.id.DeviceProfileId; |
40 | import org.thingsboard.server.common.data.id.OtaPackageId; | 38 | import org.thingsboard.server.common.data.id.OtaPackageId; |
39 | +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm; | ||
40 | +import org.thingsboard.server.common.data.ota.OtaPackageType; | ||
41 | import org.thingsboard.server.common.data.page.PageData; | 41 | import org.thingsboard.server.common.data.page.PageData; |
42 | import org.thingsboard.server.common.data.page.PageLink; | 42 | import org.thingsboard.server.common.data.page.PageLink; |
43 | import org.thingsboard.server.queue.util.TbCoreComponent; | 43 | import org.thingsboard.server.queue.util.TbCoreComponent; |
@@ -109,12 +109,12 @@ public class OtaPackageController extends BaseController { | @@ -109,12 +109,12 @@ public class OtaPackageController extends BaseController { | ||
109 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") | 109 | @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") |
110 | @RequestMapping(value = "/otaPackage", method = RequestMethod.POST) | 110 | @RequestMapping(value = "/otaPackage", method = RequestMethod.POST) |
111 | @ResponseBody | 111 | @ResponseBody |
112 | - public OtaPackageInfo saveOtaPackageInfo(@RequestBody OtaPackageInfo otaPackageInfo) throws ThingsboardException { | 112 | + public OtaPackageInfo saveOtaPackageInfo(@RequestBody OtaPackageInfo otaPackageInfo, @RequestParam boolean isUrl) throws ThingsboardException { |
113 | boolean created = otaPackageInfo.getId() == null; | 113 | boolean created = otaPackageInfo.getId() == null; |
114 | try { | 114 | try { |
115 | otaPackageInfo.setTenantId(getTenantId()); | 115 | otaPackageInfo.setTenantId(getTenantId()); |
116 | checkEntity(otaPackageInfo.getId(), otaPackageInfo, Resource.OTA_PACKAGE); | 116 | checkEntity(otaPackageInfo.getId(), otaPackageInfo, Resource.OTA_PACKAGE); |
117 | - OtaPackageInfo savedOtaPackageInfo = otaPackageService.saveOtaPackageInfo(otaPackageInfo); | 117 | + OtaPackageInfo savedOtaPackageInfo = otaPackageService.saveOtaPackageInfo(otaPackageInfo, isUrl); |
118 | logEntityAction(savedOtaPackageInfo.getId(), savedOtaPackageInfo, | 118 | logEntityAction(savedOtaPackageInfo.getId(), savedOtaPackageInfo, |
119 | null, created ? ActionType.ADDED : ActionType.UPDATED, null); | 119 | null, created ? ActionType.ADDED : ActionType.UPDATED, null); |
120 | return savedOtaPackageInfo; | 120 | return savedOtaPackageInfo; |
@@ -98,7 +98,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -98,7 +98,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
98 | firmwareInfo.setTitle(TITLE); | 98 | firmwareInfo.setTitle(TITLE); |
99 | firmwareInfo.setVersion(VERSION); | 99 | firmwareInfo.setVersion(VERSION); |
100 | 100 | ||
101 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 101 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
102 | 102 | ||
103 | Assert.assertNotNull(savedFirmwareInfo); | 103 | Assert.assertNotNull(savedFirmwareInfo); |
104 | Assert.assertNotNull(savedFirmwareInfo.getId()); | 104 | Assert.assertNotNull(savedFirmwareInfo.getId()); |
@@ -109,7 +109,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -109,7 +109,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
109 | 109 | ||
110 | savedFirmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode()); | 110 | savedFirmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode()); |
111 | 111 | ||
112 | - save(savedFirmwareInfo); | 112 | + save(savedFirmwareInfo, false); |
113 | 113 | ||
114 | OtaPackageInfo foundFirmwareInfo = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class); | 114 | OtaPackageInfo foundFirmwareInfo = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class); |
115 | Assert.assertEquals(foundFirmwareInfo.getTitle(), savedFirmwareInfo.getTitle()); | 115 | Assert.assertEquals(foundFirmwareInfo.getTitle(), savedFirmwareInfo.getTitle()); |
@@ -123,7 +123,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -123,7 +123,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
123 | firmwareInfo.setTitle(TITLE); | 123 | firmwareInfo.setTitle(TITLE); |
124 | firmwareInfo.setVersion(VERSION); | 124 | firmwareInfo.setVersion(VERSION); |
125 | 125 | ||
126 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 126 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
127 | 127 | ||
128 | Assert.assertNotNull(savedFirmwareInfo); | 128 | Assert.assertNotNull(savedFirmwareInfo); |
129 | Assert.assertNotNull(savedFirmwareInfo.getId()); | 129 | Assert.assertNotNull(savedFirmwareInfo.getId()); |
@@ -134,7 +134,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -134,7 +134,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
134 | 134 | ||
135 | savedFirmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode()); | 135 | savedFirmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode()); |
136 | 136 | ||
137 | - save(savedFirmwareInfo); | 137 | + save(savedFirmwareInfo, false); |
138 | 138 | ||
139 | OtaPackageInfo foundFirmwareInfo = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class); | 139 | OtaPackageInfo foundFirmwareInfo = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class); |
140 | Assert.assertEquals(foundFirmwareInfo.getTitle(), savedFirmwareInfo.getTitle()); | 140 | Assert.assertEquals(foundFirmwareInfo.getTitle(), savedFirmwareInfo.getTitle()); |
@@ -157,10 +157,10 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -157,10 +157,10 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
157 | firmwareInfo.setTitle(TITLE); | 157 | firmwareInfo.setTitle(TITLE); |
158 | firmwareInfo.setVersion(VERSION); | 158 | firmwareInfo.setVersion(VERSION); |
159 | 159 | ||
160 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 160 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
161 | 161 | ||
162 | loginDifferentTenant(); | 162 | loginDifferentTenant(); |
163 | - doPost("/api/otaPackage", savedFirmwareInfo, OtaPackageInfo.class, status().isForbidden()); | 163 | + doPost("/api/otaPackage?isUrl=false", savedFirmwareInfo, OtaPackageInfo.class, status().isForbidden()); |
164 | deleteDifferentTenant(); | 164 | deleteDifferentTenant(); |
165 | } | 165 | } |
166 | 166 | ||
@@ -172,7 +172,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -172,7 +172,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
172 | firmwareInfo.setTitle(TITLE); | 172 | firmwareInfo.setTitle(TITLE); |
173 | firmwareInfo.setVersion(VERSION); | 173 | firmwareInfo.setVersion(VERSION); |
174 | 174 | ||
175 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 175 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
176 | 176 | ||
177 | OtaPackageInfo foundFirmware = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class); | 177 | OtaPackageInfo foundFirmware = doGet("/api/otaPackage/info/" + savedFirmwareInfo.getId().getId().toString(), OtaPackageInfo.class); |
178 | Assert.assertNotNull(foundFirmware); | 178 | Assert.assertNotNull(foundFirmware); |
@@ -187,7 +187,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -187,7 +187,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
187 | firmwareInfo.setTitle(TITLE); | 187 | firmwareInfo.setTitle(TITLE); |
188 | firmwareInfo.setVersion(VERSION); | 188 | firmwareInfo.setVersion(VERSION); |
189 | 189 | ||
190 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 190 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
191 | 191 | ||
192 | MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array()); | 192 | MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array()); |
193 | 193 | ||
@@ -207,7 +207,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -207,7 +207,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
207 | firmwareInfo.setTitle(TITLE); | 207 | firmwareInfo.setTitle(TITLE); |
208 | firmwareInfo.setVersion(VERSION); | 208 | firmwareInfo.setVersion(VERSION); |
209 | 209 | ||
210 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 210 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
211 | 211 | ||
212 | doDelete("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString()) | 212 | doDelete("/api/otaPackage/" + savedFirmwareInfo.getId().getId().toString()) |
213 | .andExpect(status().isOk()); | 213 | .andExpect(status().isOk()); |
@@ -226,7 +226,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -226,7 +226,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
226 | firmwareInfo.setTitle(TITLE); | 226 | firmwareInfo.setTitle(TITLE); |
227 | firmwareInfo.setVersion(VERSION + i); | 227 | firmwareInfo.setVersion(VERSION + i); |
228 | 228 | ||
229 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 229 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
230 | 230 | ||
231 | if (i > 100) { | 231 | if (i > 100) { |
232 | MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array()); | 232 | MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array()); |
@@ -269,7 +269,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -269,7 +269,7 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
269 | firmwareInfo.setTitle(TITLE); | 269 | firmwareInfo.setTitle(TITLE); |
270 | firmwareInfo.setVersion(VERSION + i); | 270 | firmwareInfo.setVersion(VERSION + i); |
271 | 271 | ||
272 | - OtaPackageInfo savedFirmwareInfo = save(firmwareInfo); | 272 | + OtaPackageInfo savedFirmwareInfo = save(firmwareInfo, false); |
273 | 273 | ||
274 | if (i > 100) { | 274 | if (i > 100) { |
275 | MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array()); | 275 | MockMultipartFile testData = new MockMultipartFile("file", FILE_NAME, CONTENT_TYPE, DATA.array()); |
@@ -316,9 +316,8 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | @@ -316,9 +316,8 @@ public abstract class BaseOtaPackageControllerTest extends AbstractControllerTes | ||
316 | Assert.assertEquals(allOtaPackages, allLoadedOtaPackages); | 316 | Assert.assertEquals(allOtaPackages, allLoadedOtaPackages); |
317 | } | 317 | } |
318 | 318 | ||
319 | - | ||
320 | - private OtaPackageInfo save(OtaPackageInfo firmwareInfo) throws Exception { | ||
321 | - return doPost("/api/otaPackage", firmwareInfo, OtaPackageInfo.class); | 319 | + private OtaPackageInfo save(OtaPackageInfo firmwareInfo, boolean isUrl) throws Exception { |
320 | + return doPost("/api/otaPackage?isUrl=" + isUrl, firmwareInfo, OtaPackageInfo.class); | ||
322 | } | 321 | } |
323 | 322 | ||
324 | protected OtaPackageInfo savaData(String urlTemplate, MockMultipartFile content, String... params) throws Exception { | 323 | protected OtaPackageInfo savaData(String urlTemplate, MockMultipartFile content, String... params) throws Exception { |
@@ -18,11 +18,11 @@ package org.thingsboard.server.dao.ota; | @@ -18,11 +18,11 @@ package org.thingsboard.server.dao.ota; | ||
18 | import com.google.common.util.concurrent.ListenableFuture; | 18 | import com.google.common.util.concurrent.ListenableFuture; |
19 | import org.thingsboard.server.common.data.OtaPackage; | 19 | import org.thingsboard.server.common.data.OtaPackage; |
20 | import org.thingsboard.server.common.data.OtaPackageInfo; | 20 | import org.thingsboard.server.common.data.OtaPackageInfo; |
21 | -import org.thingsboard.server.common.data.ota.ChecksumAlgorithm; | ||
22 | -import org.thingsboard.server.common.data.ota.OtaPackageType; | ||
23 | import org.thingsboard.server.common.data.id.DeviceProfileId; | 21 | import org.thingsboard.server.common.data.id.DeviceProfileId; |
24 | import org.thingsboard.server.common.data.id.OtaPackageId; | 22 | import org.thingsboard.server.common.data.id.OtaPackageId; |
25 | import org.thingsboard.server.common.data.id.TenantId; | 23 | import org.thingsboard.server.common.data.id.TenantId; |
24 | +import org.thingsboard.server.common.data.ota.ChecksumAlgorithm; | ||
25 | +import org.thingsboard.server.common.data.ota.OtaPackageType; | ||
26 | import org.thingsboard.server.common.data.page.PageData; | 26 | import org.thingsboard.server.common.data.page.PageData; |
27 | import org.thingsboard.server.common.data.page.PageLink; | 27 | import org.thingsboard.server.common.data.page.PageLink; |
28 | 28 | ||
@@ -30,7 +30,7 @@ import java.nio.ByteBuffer; | @@ -30,7 +30,7 @@ import java.nio.ByteBuffer; | ||
30 | 30 | ||
31 | public interface OtaPackageService { | 31 | public interface OtaPackageService { |
32 | 32 | ||
33 | - OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo); | 33 | + OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo, boolean isUrl); |
34 | 34 | ||
35 | OtaPackage saveOtaPackage(OtaPackage otaPackage); | 35 | OtaPackage saveOtaPackage(OtaPackage otaPackage); |
36 | 36 |
@@ -77,8 +77,11 @@ public class BaseOtaPackageService implements OtaPackageService { | @@ -77,8 +77,11 @@ public class BaseOtaPackageService implements OtaPackageService { | ||
77 | private TbTenantProfileCache tenantProfileCache; | 77 | private TbTenantProfileCache tenantProfileCache; |
78 | 78 | ||
79 | @Override | 79 | @Override |
80 | - public OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo) { | 80 | + public OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo, boolean isUrl) { |
81 | log.trace("Executing saveOtaPackageInfo [{}]", otaPackageInfo); | 81 | log.trace("Executing saveOtaPackageInfo [{}]", otaPackageInfo); |
82 | + if(isUrl && (StringUtils.isEmpty(otaPackageInfo.getUrl()) || otaPackageInfo.getUrl().trim().length() == 0)) { | ||
83 | + throw new DataValidationException("Ota package URL should be specified!"); | ||
84 | + } | ||
82 | otaPackageInfoValidator.validate(otaPackageInfo, OtaPackageInfo::getTenantId); | 85 | otaPackageInfoValidator.validate(otaPackageInfo, OtaPackageInfo::getTenantId); |
83 | try { | 86 | try { |
84 | OtaPackageId otaPackageId = otaPackageInfo.getId(); | 87 | OtaPackageId otaPackageId = otaPackageInfo.getId(); |
@@ -277,7 +280,9 @@ public class BaseOtaPackageService implements OtaPackageService { | @@ -277,7 +280,9 @@ public class BaseOtaPackageService implements OtaPackageService { | ||
277 | throw new DataValidationException("Wrong otaPackage file!"); | 280 | throw new DataValidationException("Wrong otaPackage file!"); |
278 | } | 281 | } |
279 | } else { | 282 | } else { |
280 | - //TODO: validate url | 283 | + if(otaPackage.getData() != null) { |
284 | + throw new DataValidationException("File can't be saved if URL present!"); | ||
285 | + } | ||
281 | } | 286 | } |
282 | } | 287 | } |
283 | 288 | ||
@@ -336,6 +341,9 @@ public class BaseOtaPackageService implements OtaPackageService { | @@ -336,6 +341,9 @@ public class BaseOtaPackageService implements OtaPackageService { | ||
336 | if (otaPackageOld.getDataSize() != null && !otaPackageOld.getDataSize().equals(otaPackage.getDataSize())) { | 341 | if (otaPackageOld.getDataSize() != null && !otaPackageOld.getDataSize().equals(otaPackage.getDataSize())) { |
337 | throw new DataValidationException("Updating otaPackage data size is prohibited!"); | 342 | throw new DataValidationException("Updating otaPackage data size is prohibited!"); |
338 | } | 343 | } |
344 | + if(otaPackageOld.getUrl() != null && !otaPackageOld.getUrl().equals(otaPackage.getUrl())) { | ||
345 | + throw new DataValidationException("Updating otaPackage URL is prohibited!"); | ||
346 | + } | ||
339 | } | 347 | } |
340 | 348 | ||
341 | private void validateImpl(OtaPackageInfo otaPackageInfo) { | 349 | private void validateImpl(OtaPackageInfo otaPackageInfo) { |
@@ -163,7 +163,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -163,7 +163,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
163 | firmware.setVersion(VERSION); | 163 | firmware.setVersion(VERSION); |
164 | firmware.setUrl(URL); | 164 | firmware.setUrl(URL); |
165 | firmware.setDataSize(0L); | 165 | firmware.setDataSize(0L); |
166 | - OtaPackageInfo savedFirmware = otaPackageService.saveOtaPackageInfo(firmware); | 166 | + OtaPackageInfo savedFirmware = otaPackageService.saveOtaPackageInfo(firmware, true); |
167 | 167 | ||
168 | Assert.assertNotNull(savedFirmware); | 168 | Assert.assertNotNull(savedFirmware); |
169 | Assert.assertNotNull(savedFirmware.getId()); | 169 | Assert.assertNotNull(savedFirmware.getId()); |
@@ -174,7 +174,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -174,7 +174,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
174 | Assert.assertEquals(firmware.getContentType(), savedFirmware.getContentType()); | 174 | Assert.assertEquals(firmware.getContentType(), savedFirmware.getContentType()); |
175 | 175 | ||
176 | savedFirmware.setAdditionalInfo(JacksonUtil.newObjectNode()); | 176 | savedFirmware.setAdditionalInfo(JacksonUtil.newObjectNode()); |
177 | - otaPackageService.saveOtaPackageInfo(savedFirmware); | 177 | + otaPackageService.saveOtaPackageInfo(savedFirmware, true); |
178 | 178 | ||
179 | OtaPackage foundFirmware = otaPackageService.findOtaPackageById(tenantId, savedFirmware.getId()); | 179 | OtaPackage foundFirmware = otaPackageService.findOtaPackageById(tenantId, savedFirmware.getId()); |
180 | Assert.assertEquals(foundFirmware.getTitle(), savedFirmware.getTitle()); | 180 | Assert.assertEquals(foundFirmware.getTitle(), savedFirmware.getTitle()); |
@@ -190,7 +190,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -190,7 +190,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
190 | firmwareInfo.setType(FIRMWARE); | 190 | firmwareInfo.setType(FIRMWARE); |
191 | firmwareInfo.setTitle(TITLE); | 191 | firmwareInfo.setTitle(TITLE); |
192 | firmwareInfo.setVersion(VERSION); | 192 | firmwareInfo.setVersion(VERSION); |
193 | - OtaPackageInfo savedFirmwareInfo = otaPackageService.saveOtaPackageInfo(firmwareInfo); | 193 | + OtaPackageInfo savedFirmwareInfo = otaPackageService.saveOtaPackageInfo(firmwareInfo, false); |
194 | 194 | ||
195 | Assert.assertNotNull(savedFirmwareInfo); | 195 | Assert.assertNotNull(savedFirmwareInfo); |
196 | Assert.assertNotNull(savedFirmwareInfo.getId()); | 196 | Assert.assertNotNull(savedFirmwareInfo.getId()); |
@@ -216,7 +216,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -216,7 +216,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
216 | 216 | ||
217 | savedFirmwareInfo = otaPackageService.findOtaPackageInfoById(tenantId, savedFirmwareInfo.getId()); | 217 | savedFirmwareInfo = otaPackageService.findOtaPackageInfoById(tenantId, savedFirmwareInfo.getId()); |
218 | savedFirmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode()); | 218 | savedFirmwareInfo.setAdditionalInfo(JacksonUtil.newObjectNode()); |
219 | - otaPackageService.saveOtaPackageInfo(savedFirmwareInfo); | 219 | + otaPackageService.saveOtaPackageInfo(savedFirmwareInfo, false); |
220 | 220 | ||
221 | OtaPackage foundFirmware = otaPackageService.findOtaPackageById(tenantId, firmware.getId()); | 221 | OtaPackage foundFirmware = otaPackageService.findOtaPackageById(tenantId, firmware.getId()); |
222 | firmware.setAdditionalInfo(JacksonUtil.newObjectNode()); | 222 | firmware.setAdditionalInfo(JacksonUtil.newObjectNode()); |
@@ -399,7 +399,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -399,7 +399,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
399 | firmwareInfo.setType(FIRMWARE); | 399 | firmwareInfo.setType(FIRMWARE); |
400 | firmwareInfo.setTitle(TITLE); | 400 | firmwareInfo.setTitle(TITLE); |
401 | firmwareInfo.setVersion(VERSION); | 401 | firmwareInfo.setVersion(VERSION); |
402 | - otaPackageService.saveOtaPackageInfo(firmwareInfo); | 402 | + otaPackageService.saveOtaPackageInfo(firmwareInfo, false); |
403 | 403 | ||
404 | OtaPackageInfo newFirmwareInfo = new OtaPackageInfo(); | 404 | OtaPackageInfo newFirmwareInfo = new OtaPackageInfo(); |
405 | newFirmwareInfo.setTenantId(tenantId); | 405 | newFirmwareInfo.setTenantId(tenantId); |
@@ -410,7 +410,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -410,7 +410,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
410 | 410 | ||
411 | thrown.expect(DataValidationException.class); | 411 | thrown.expect(DataValidationException.class); |
412 | thrown.expectMessage("OtaPackage with such title and version already exists!"); | 412 | thrown.expectMessage("OtaPackage with such title and version already exists!"); |
413 | - otaPackageService.saveOtaPackageInfo(newFirmwareInfo); | 413 | + otaPackageService.saveOtaPackageInfo(newFirmwareInfo, false); |
414 | } | 414 | } |
415 | 415 | ||
416 | @Test | 416 | @Test |
@@ -506,7 +506,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -506,7 +506,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
506 | firmware.setType(FIRMWARE); | 506 | firmware.setType(FIRMWARE); |
507 | firmware.setTitle(TITLE); | 507 | firmware.setTitle(TITLE); |
508 | firmware.setVersion(VERSION); | 508 | firmware.setVersion(VERSION); |
509 | - OtaPackageInfo savedFirmware = otaPackageService.saveOtaPackageInfo(firmware); | 509 | + OtaPackageInfo savedFirmware = otaPackageService.saveOtaPackageInfo(firmware, false); |
510 | 510 | ||
511 | OtaPackageInfo foundFirmware = otaPackageService.findOtaPackageInfoById(tenantId, savedFirmware.getId()); | 511 | OtaPackageInfo foundFirmware = otaPackageService.findOtaPackageInfoById(tenantId, savedFirmware.getId()); |
512 | Assert.assertNotNull(foundFirmware); | 512 | Assert.assertNotNull(foundFirmware); |
@@ -543,7 +543,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -543,7 +543,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
543 | firmwareWithUrl.setUrl(URL); | 543 | firmwareWithUrl.setUrl(URL); |
544 | firmwareWithUrl.setDataSize(0L); | 544 | firmwareWithUrl.setDataSize(0L); |
545 | 545 | ||
546 | - OtaPackageInfo savedFwWithUrl = otaPackageService.saveOtaPackageInfo(firmwareWithUrl); | 546 | + OtaPackageInfo savedFwWithUrl = otaPackageService.saveOtaPackageInfo(firmwareWithUrl, true); |
547 | savedFwWithUrl.setHasData(true); | 547 | savedFwWithUrl.setHasData(true); |
548 | 548 | ||
549 | firmwares.add(savedFwWithUrl); | 549 | firmwares.add(savedFwWithUrl); |
@@ -588,7 +588,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -588,7 +588,7 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
588 | firmwareWithUrl.setUrl(URL); | 588 | firmwareWithUrl.setUrl(URL); |
589 | firmwareWithUrl.setDataSize(0L); | 589 | firmwareWithUrl.setDataSize(0L); |
590 | 590 | ||
591 | - OtaPackageInfo savedFwWithUrl = otaPackageService.saveOtaPackageInfo(firmwareWithUrl); | 591 | + OtaPackageInfo savedFwWithUrl = otaPackageService.saveOtaPackageInfo(firmwareWithUrl, true); |
592 | savedFwWithUrl.setHasData(true); | 592 | savedFwWithUrl.setHasData(true); |
593 | 593 | ||
594 | firmwares.add(savedFwWithUrl); | 594 | firmwares.add(savedFwWithUrl); |
@@ -627,6 +627,40 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | @@ -627,6 +627,40 @@ public abstract class BaseOtaPackageServiceTest extends AbstractServiceTest { | ||
627 | Assert.assertTrue(pageData.getData().isEmpty()); | 627 | Assert.assertTrue(pageData.getData().isEmpty()); |
628 | } | 628 | } |
629 | 629 | ||
630 | + @Test | ||
631 | + public void testSaveOtaPackageInfoWithBlankAndEmptyUrl() { | ||
632 | + OtaPackageInfo firmwareInfo = new OtaPackageInfo(); | ||
633 | + firmwareInfo.setDeviceProfileId(deviceProfileId); | ||
634 | + firmwareInfo.setType(FIRMWARE); | ||
635 | + firmwareInfo.setTitle(TITLE); | ||
636 | + firmwareInfo.setVersion(VERSION); | ||
637 | + firmwareInfo.setUrl(" "); | ||
638 | + thrown.expect(DataValidationException.class); | ||
639 | + thrown.expectMessage("Ota package URL should be specified!"); | ||
640 | + otaPackageService.saveOtaPackageInfo(firmwareInfo, true); | ||
641 | + firmwareInfo.setUrl(""); | ||
642 | + otaPackageService.saveOtaPackageInfo(firmwareInfo, true); | ||
643 | + } | ||
644 | + | ||
645 | + @Test | ||
646 | + public void testSaveOtaPackageUrlCantBeUpdated() { | ||
647 | + OtaPackageInfo firmwareInfo = new OtaPackageInfo(); | ||
648 | + firmwareInfo.setDeviceProfileId(deviceProfileId); | ||
649 | + firmwareInfo.setType(FIRMWARE); | ||
650 | + firmwareInfo.setTitle(TITLE); | ||
651 | + firmwareInfo.setVersion(VERSION); | ||
652 | + firmwareInfo.setUrl(URL); | ||
653 | + firmwareInfo.setTenantId(tenantId); | ||
654 | + | ||
655 | + OtaPackageInfo savedFirmwareInfo = otaPackageService.saveOtaPackageInfo(firmwareInfo, true); | ||
656 | + | ||
657 | + thrown.expect(DataValidationException.class); | ||
658 | + thrown.expectMessage("Updating otaPackage URL is prohibited!"); | ||
659 | + | ||
660 | + savedFirmwareInfo.setUrl("https://newurl.com"); | ||
661 | + otaPackageService.saveOtaPackageInfo(savedFirmwareInfo, true); | ||
662 | + } | ||
663 | + | ||
630 | private OtaPackage createFirmware(TenantId tenantId, String version) { | 664 | private OtaPackage createFirmware(TenantId tenantId, String version) { |
631 | OtaPackage firmware = new OtaPackage(); | 665 | OtaPackage firmware = new OtaPackage(); |
632 | firmware.setTenantId(tenantId); | 666 | firmware.setTenantId(tenantId); |
@@ -2967,8 +2967,10 @@ public class RestClient implements ClientHttpRequestInterceptor, Closeable { | @@ -2967,8 +2967,10 @@ public class RestClient implements ClientHttpRequestInterceptor, Closeable { | ||
2967 | ).getBody(); | 2967 | ).getBody(); |
2968 | } | 2968 | } |
2969 | 2969 | ||
2970 | - public OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo) { | ||
2971 | - return restTemplate.postForEntity(baseURL + "/api/otaPackage", otaPackageInfo, OtaPackageInfo.class).getBody(); | 2970 | + public OtaPackageInfo saveOtaPackageInfo(OtaPackageInfo otaPackageInfo, boolean isUrl) { |
2971 | + Map<String, String> params = new HashMap<>(); | ||
2972 | + params.put("isUrl", Boolean.toString(isUrl)); | ||
2973 | + return restTemplate.postForEntity(baseURL + "/api/otaPackage?isUrl={isUrl}", otaPackageInfo, OtaPackageInfo.class, params).getBody(); | ||
2972 | } | 2974 | } |
2973 | 2975 | ||
2974 | public OtaPackageInfo saveOtaPackageData(OtaPackageId otaPackageId, String checkSum, ChecksumAlgorithm checksumAlgorithm, MultipartFile file) throws Exception { | 2976 | public OtaPackageInfo saveOtaPackageData(OtaPackageId otaPackageId, String checkSum, ChecksumAlgorithm checksumAlgorithm, MultipartFile file) throws Exception { |