committed by
GitHub
4 changed files with 301 additions and 28 deletions
@ -0,0 +1,230 @@ |
|||
/** |
|||
* Copyright © 2016-2022 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.controller; |
|||
|
|||
import org.junit.After; |
|||
import org.junit.Assert; |
|||
import org.junit.Before; |
|||
import org.junit.Test; |
|||
import org.thingsboard.server.common.data.Device; |
|||
import org.thingsboard.server.common.data.alarm.Alarm; |
|||
import org.thingsboard.server.common.data.alarm.AlarmSeverity; |
|||
import org.thingsboard.server.common.data.alarm.AlarmStatus; |
|||
|
|||
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; |
|||
|
|||
public abstract class BaseAlarmControllerTest extends AbstractControllerTest { |
|||
|
|||
public static final String TEST_ALARM_TYPE = "Test"; |
|||
|
|||
protected Device customerDevice; |
|||
|
|||
@Before |
|||
public void setup() throws Exception { |
|||
loginTenantAdmin(); |
|||
|
|||
Device device = new Device(); |
|||
device.setTenantId(tenantId); |
|||
device.setName("Test device"); |
|||
device.setLabel("Label"); |
|||
device.setType("Type"); |
|||
device.setCustomerId(customerId); |
|||
customerDevice = doPost("/api/device", device, Device.class); |
|||
|
|||
logout(); |
|||
} |
|||
|
|||
@After |
|||
public void teardown() throws Exception { |
|||
loginSysAdmin(); |
|||
deleteDifferentTenant(); |
|||
} |
|||
|
|||
@Test |
|||
public void testCreateAlarmViaCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
createAlarm(TEST_ALARM_TYPE); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testCreateAlarmViaTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
createAlarm(TEST_ALARM_TYPE); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testUpdateAlarmViaCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
alarm.setSeverity(AlarmSeverity.MAJOR); |
|||
Alarm updatedAlarm = doPost("/api/alarm", alarm, Alarm.class); |
|||
Assert.assertNotNull(updatedAlarm); |
|||
Assert.assertEquals(AlarmSeverity.MAJOR, updatedAlarm.getSeverity()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testUpdateAlarmViaTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
alarm.setSeverity(AlarmSeverity.MAJOR); |
|||
Alarm updatedAlarm = doPost("/api/alarm", alarm, Alarm.class); |
|||
Assert.assertNotNull(updatedAlarm); |
|||
Assert.assertEquals(AlarmSeverity.MAJOR, updatedAlarm.getSeverity()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testUpdateAlarmViaDifferentTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
alarm.setSeverity(AlarmSeverity.MAJOR); |
|||
loginDifferentTenant(); |
|||
doPost("/api/alarm", alarm).andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testUpdateAlarmViaDifferentCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
loginDifferentCustomer(); |
|||
alarm.setSeverity(AlarmSeverity.MAJOR); |
|||
doPost("/api/alarm", alarm).andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testDeleteAlarmViaCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
doDelete("/api/alarm/" + alarm.getId()).andExpect(status().isOk()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testDeleteAlarmViaTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
doDelete("/api/alarm/" + alarm.getId()).andExpect(status().isOk()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testDeleteAlarmViaDifferentTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
loginDifferentTenant(); |
|||
doDelete("/api/alarm/" + alarm.getId()).andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testDeleteAlarmViaAnotherCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
loginDifferentCustomer(); |
|||
doDelete("/api/alarm/" + alarm.getId()).andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testClearAlarmViaCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
doPost("/api/alarm/" + alarm.getId() + "/clear").andExpect(status().isOk()); |
|||
Alarm foundAlarm = doGet("/api/alarm/" + alarm.getId(), Alarm.class); |
|||
Assert.assertNotNull(foundAlarm); |
|||
Assert.assertEquals(AlarmStatus.CLEARED_UNACK, foundAlarm.getStatus()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testClearAlarmViaTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
doPost("/api/alarm/" + alarm.getId() + "/clear").andExpect(status().isOk()); |
|||
Alarm foundAlarm = doGet("/api/alarm/" + alarm.getId(), Alarm.class); |
|||
Assert.assertNotNull(foundAlarm); |
|||
Assert.assertEquals(AlarmStatus.CLEARED_UNACK, foundAlarm.getStatus()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testAcknowledgeAlarmViaCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
doPost("/api/alarm/" + alarm.getId() + "/ack").andExpect(status().isOk()); |
|||
Alarm foundAlarm = doGet("/api/alarm/" + alarm.getId(), Alarm.class); |
|||
Assert.assertNotNull(foundAlarm); |
|||
Assert.assertEquals(AlarmStatus.ACTIVE_ACK, foundAlarm.getStatus()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testClearAlarmViaDifferentCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
loginDifferentCustomer(); |
|||
doPost("/api/alarm/" + alarm.getId() + "/clear").andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testClearAlarmViaDifferentTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
loginDifferentTenant(); |
|||
doPost("/api/alarm/" + alarm.getId() + "/clear").andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testAcknowledgeAlarmViaDifferentCustomer() throws Exception { |
|||
loginCustomerUser(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
loginDifferentCustomer(); |
|||
doPost("/api/alarm/" + alarm.getId() + "/ack").andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
@Test |
|||
public void testAcknowledgeAlarmViaDifferentTenant() throws Exception { |
|||
loginTenantAdmin(); |
|||
Alarm alarm = createAlarm(TEST_ALARM_TYPE); |
|||
loginDifferentTenant(); |
|||
doPost("/api/alarm/" + alarm.getId() + "/ack").andExpect(status().isForbidden()); |
|||
logout(); |
|||
} |
|||
|
|||
private Alarm createAlarm(String type) throws Exception { |
|||
Alarm alarm = Alarm.builder() |
|||
.tenantId(tenantId) |
|||
.customerId(customerId) |
|||
.originator(customerDevice.getId()) |
|||
.status(AlarmStatus.ACTIVE_UNACK) |
|||
.severity(AlarmSeverity.CRITICAL) |
|||
.type(type) |
|||
.build(); |
|||
|
|||
alarm = doPost("/api/alarm", alarm, Alarm.class); |
|||
Assert.assertNotNull(alarm); |
|||
|
|||
return alarm; |
|||
} |
|||
} |
|||
@ -0,0 +1,23 @@ |
|||
/** |
|||
* Copyright © 2016-2022 The Thingsboard Authors |
|||
* |
|||
* Licensed under the Apache License, Version 2.0 (the "License"); |
|||
* you may not use this file except in compliance with the License. |
|||
* You may obtain a copy of the License at |
|||
* |
|||
* http://www.apache.org/licenses/LICENSE-2.0
|
|||
* |
|||
* Unless required by applicable law or agreed to in writing, software |
|||
* distributed under the License is distributed on an "AS IS" BASIS, |
|||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|||
* See the License for the specific language governing permissions and |
|||
* limitations under the License. |
|||
*/ |
|||
package org.thingsboard.server.controller.sql; |
|||
|
|||
import org.thingsboard.server.controller.BaseAlarmControllerTest; |
|||
import org.thingsboard.server.dao.service.DaoSqlTest; |
|||
|
|||
@DaoSqlTest |
|||
public class AlarmControllerSqlTest extends BaseAlarmControllerTest { |
|||
} |
|||
Loading…
Reference in new issue