From 987b68a4a1383712164b02d9b77b0ce8452f1d76 Mon Sep 17 00:00:00 2001 From: Vitaliy Pavlenko Date: Thu, 20 Jul 2017 14:34:06 +0300 Subject: [PATCH] [SECIOTSRK-298] Improve UnitTest coverage --- .../dsm/repository/DeviceRepositoryTest.java | 2 +- .../samsung/dsm/repository/UserRepositoryTest.java | 7 +- servermq/pom.xml | 7 ++ .../samsung/servermq/service/AgentServiceTest.java | 20 ++++- .../servermq/service/DeviceServiceTest.java | 56 +++++++++++-- .../servermq/service/IoTCloudServiceTest.java | 98 ++++++++++++++++++++++ .../samsung/servermq/service/UserServiceTest.java | 4 +- servermq/src/test/resources/sql/init.sql | 1 + 8 files changed, 177 insertions(+), 18 deletions(-) create mode 100644 servermq/src/test/java/com/samsung/servermq/service/IoTCloudServiceTest.java diff --git a/server/src/test/java/com/samsung/dsm/repository/DeviceRepositoryTest.java b/server/src/test/java/com/samsung/dsm/repository/DeviceRepositoryTest.java index defef3e..e746857 100644 --- a/server/src/test/java/com/samsung/dsm/repository/DeviceRepositoryTest.java +++ b/server/src/test/java/com/samsung/dsm/repository/DeviceRepositoryTest.java @@ -30,7 +30,7 @@ import com.samsung.dsm.domain.policy.Policy; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration -@ContextConfiguration(locations = {"classpath:root-context.xml"}) +@ContextConfiguration(locations = { "classpath:root-context.xml" }) public class DeviceRepositoryTest { @Autowired private DeviceRepository deviceRepository; diff --git a/server/src/test/java/com/samsung/dsm/repository/UserRepositoryTest.java b/server/src/test/java/com/samsung/dsm/repository/UserRepositoryTest.java index 8a70bd3..e5dc659 100644 --- a/server/src/test/java/com/samsung/dsm/repository/UserRepositoryTest.java +++ b/server/src/test/java/com/samsung/dsm/repository/UserRepositoryTest.java @@ -16,7 +16,7 @@ import static org.junit.Assert.assertNull; @RunWith(SpringJUnit4ClassRunner.class) @WebAppConfiguration -@ContextConfiguration(locations = {"classpath:root-context.xml"}) +@ContextConfiguration(locations = { "classpath:root-context.xml" }) public class UserRepositoryTest { @Autowired @@ -24,9 +24,8 @@ public class UserRepositoryTest { @Autowired RoleRepository roleRepository; - @Test - public void addUser(){ + public void addUser() { User user = new User(); user.setEmail("test@text.com"); user.setUsername("testUser"); @@ -37,7 +36,7 @@ public class UserRepositoryTest { } @Test - public void removeUser(){ + public void removeUser() { User user = new User(); user.setEmail("test@text.com"); user.setUsername("testUser"); diff --git a/servermq/pom.xml b/servermq/pom.xml index ba10162..25e90a9 100644 --- a/servermq/pom.xml +++ b/servermq/pom.xml @@ -101,6 +101,13 @@ ${spring-framework-version} + + org.mockito + mockito-core + 1.10.19 + test + + org.hibernate hibernate-core diff --git a/servermq/src/test/java/com/samsung/servermq/service/AgentServiceTest.java b/servermq/src/test/java/com/samsung/servermq/service/AgentServiceTest.java index 53a055c..ed6cbba 100644 --- a/servermq/src/test/java/com/samsung/servermq/service/AgentServiceTest.java +++ b/servermq/src/test/java/com/samsung/servermq/service/AgentServiceTest.java @@ -14,10 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ImportResource; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.context.web.WebAppConfiguration; import com.samsung.servermq.domain.Agent; import com.samsung.servermq.domain.Policy; @@ -154,4 +151,21 @@ public class AgentServiceTest { agentService.remove(initedAgent); } } + + @Test(expected = Exception.class) + public void testInitWithEmptyFields() throws Exception { + agentService.init("", ""); + } + + @Test(expected = Exception.class) + public void testInitWithEmptyName() throws Exception { + String initUuid = "inituuid"; + agentService.init("", initUuid); + } + + @Test(expected = Exception.class) + public void testInitWithEmptyID() throws Exception { + agentService.init("initname", ""); + } + } diff --git a/servermq/src/test/java/com/samsung/servermq/service/DeviceServiceTest.java b/servermq/src/test/java/com/samsung/servermq/service/DeviceServiceTest.java index 83e2a79..a533bb6 100644 --- a/servermq/src/test/java/com/samsung/servermq/service/DeviceServiceTest.java +++ b/servermq/src/test/java/com/samsung/servermq/service/DeviceServiceTest.java @@ -15,10 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.ImportResource; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.test.context.web.WebAppConfiguration; import com.samsung.servermq.domain.Agent; import com.samsung.servermq.domain.Device; @@ -26,6 +23,7 @@ import com.samsung.servermq.domain.Policy; import com.samsung.servermq.domain.User; import com.samsung.servermq.service.exception.AgentsNotFound; import com.samsung.servermq.service.exception.DeviceNotFoundByUuid; +import com.samsung.servermq.service.exception.DevicesNotFound; /** * @author Mail to: Andriy Petrov, @@ -67,7 +65,8 @@ public class DeviceServiceTest { device.setAgents(createAgents(device)); deviceService.save(device); - deviceService.save(new Device(DEVICE_UUID_WITHOUT_AGENTS, "name2", "type", "model", 1, policyService.initPolicy(), user)); + deviceService.save( + new Device(DEVICE_UUID_WITHOUT_AGENTS, "name2", "type", "model", 1, policyService.initPolicy(), user)); } private List createAgents(Device device) { @@ -89,8 +88,7 @@ public class DeviceServiceTest { } /** - * Test method for - * {@link com.samsung.dsm.service.DeviceService#getAll()}. + * Test method for {@link com.samsung.dsm.service.DeviceService#getAll()}. */ @Test public void testGetAll() { @@ -126,8 +124,8 @@ public class DeviceServiceTest { } /** - * Test method for - * {@link com.samsung.dsm.service.CommonService#findById(Long)} (java.lang.Long)}. + * Test method for {@link com.samsung.dsm.service.CommonService#findById(Long)} + * (java.lang.Long)}. */ @Test public void testFindByUUID() { @@ -188,4 +186,46 @@ public class DeviceServiceTest { deviceService.remove(initedDevice); } } + + @Test + public void testFindByUserCorrectCase() throws Exception { + User user = userService.getUserByEmail("admin@samsung.com"); + List devices = deviceService.findByUser(user); + assertEquals(devices.size(), 2); + } + + @Test(expected = DevicesNotFound.class) + public void testFindByUserForUserWithoutDevices() throws Exception { + User user = userService.getUserByEmail("user@samsung.com"); + deviceService.findByUser(user); + } + + @Test(expected = Exception.class) + public void testInitWithEmptyID() throws Exception { + deviceService.init("", "initname", "inittype", "initmodel", 0, user); + } + + @Test(expected = Exception.class) + public void testInitWithEmptyType() throws Exception { + String initUuid = "inituuid"; + deviceService.init(initUuid, "initname", "", "initmodel", 0, user); + } + + @Test(expected = Exception.class) + public void testInitWithEmptyName() throws Exception { + String initUuid = "inituuid"; + deviceService.init(initUuid, "", "inittype", "initmodel", 0, user); + } + + @Test(expected = Exception.class) + public void testInitWithEmptyModel() throws Exception { + String initUuid = "inituuid"; + deviceService.init(initUuid, "initname", "inittype", "", 0, user); + } + + @Test(expected = DeviceNotFoundByUuid.class) + public void testFindByUUIDWithIncorrectID() { + deviceService.findByUUID("wrongID"); + } + } \ No newline at end of file diff --git a/servermq/src/test/java/com/samsung/servermq/service/IoTCloudServiceTest.java b/servermq/src/test/java/com/samsung/servermq/service/IoTCloudServiceTest.java new file mode 100644 index 0000000..5e2232f --- /dev/null +++ b/servermq/src/test/java/com/samsung/servermq/service/IoTCloudServiceTest.java @@ -0,0 +1,98 @@ +/** + * @author Mail to: Andriy Petrov, an.petrov@samsung.com + * @version 1.0 + * @file UserServiceTest.java + * @brief UT for UserService + * @date Created : 23/07/16 + * @date Modified: 23/07/16 + * @copyright In Samsung Ukraine R&D Center (SRK under a contract between) + * @par LLC "Samsung Electronics Co", Ltd (Seoul, Republic of Korea) + * @par Copyright: (c) Samsung Electronics Co, Ltd 2016. All rights reserved. + */ + +package com.samsung.servermq.service; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.annotation.ImportResource; +import org.springframework.test.context.junit4.SpringRunner; + +import com.samsung.servermq.dao.UserRepository; +import com.samsung.servermq.domain.IotCloudUser; +import com.samsung.servermq.domain.User; +import com.samsung.servermq.service.exception.IotCloudUserNotExists; + +@RunWith(SpringRunner.class) +@SpringBootTest +@ImportResource("classpath:root-context.xml") +@EnableAutoConfiguration +public class IoTCloudServiceTest { + + + @Autowired + private IotCloudService iotCloudService; + + @Autowired + private UserRepository userRepository; + + private final String adminEmail = "admin@samsung.com"; + private final String userEmail = "user@samsung.com"; + private final String wrongUserEmail = "wronguser@samsung.com"; + + private static final Long dbUserID = (long) 1; + private static final String dbUUID = "1234567890"; + private static final String userUUID = "uuid"; + private static final String adminUUID = "auid"; + + + @Before + public void init() { + rollBackDBChanges(); + } + + @Test + public void testCreateAndSaveUser() { + IotCloudUser iotCloudUser = iotCloudService.createAndSaveUser(userEmail, userUUID); + assertNotNull(iotCloudUser); + assertEquals(iotCloudService.usersCount(), 2); + } + + @Test + public void testDeleteAllUsers() { + iotCloudService.createAndSaveUser(adminEmail, adminUUID); + iotCloudService.createAndSaveUser(userEmail, userUUID); + assertEquals(iotCloudService.usersCount(), 3); + iotCloudService.deleteAllUsers(); + assertEquals(iotCloudService.usersCount(), 0); + } + + @Test(expected = IotCloudUserNotExists.class) + public void testCreateAndSaveUserWithWrongUserEmail() { + iotCloudService.createAndSaveUser(wrongUserEmail, userUUID); + } + + @Test + public void testFindAssociatedUserByUuid() { + User user = iotCloudService.findAssociatedUserByUuid(dbUUID); + assertNotNull(user); + } + + @Test(expected = IotCloudUserNotExists.class) + public void testFindAssociatedUserByUuidWithWongUuid() { + iotCloudService.findAssociatedUserByUuid(""); + } + + private void rollBackDBChanges() { + iotCloudService.deleteAllUsers(); + User user = userRepository.findOne(dbUserID); + iotCloudService.createAndSaveUser(user.getEmail(), dbUUID); + } + +} diff --git a/servermq/src/test/java/com/samsung/servermq/service/UserServiceTest.java b/servermq/src/test/java/com/samsung/servermq/service/UserServiceTest.java index b39a768..071f2f7 100644 --- a/servermq/src/test/java/com/samsung/servermq/service/UserServiceTest.java +++ b/servermq/src/test/java/com/samsung/servermq/service/UserServiceTest.java @@ -143,7 +143,7 @@ public class UserServiceTest { @Test public void testGetAll() { List userList = userService.getAll(true); - assertEquals(1, userList.size()); // hardcoded in init.sql file + assertEquals(2, userList.size()); // hardcoded in init.sql file } /** @@ -419,7 +419,7 @@ public class UserServiceTest { @Test public void testCount() { // there is only one row predefined in USERS - assertEquals(1, userService.count()); + assertEquals(2, userService.count()); } } diff --git a/servermq/src/test/resources/sql/init.sql b/servermq/src/test/resources/sql/init.sql index dc595a1..46f710a 100644 --- a/servermq/src/test/resources/sql/init.sql +++ b/servermq/src/test/resources/sql/init.sql @@ -12,5 +12,6 @@ INSERT INTO report_type (id, type) VALUES (nextval('report_type_id_seq'), 'wbs') -- login: admin@samsung.com -- password: 111111 INSERT INTO users(id, username, email, locked, date, role_id) VALUES (nextval('users_id_seq'), 'admin', 'admin@samsung.com', false, now(), 1); +INSERT INTO users(id, username, email, locked, date, role_id) VALUES (nextval('users_id_seq'), 'user', 'user@samsung.com', false, now(), 1); INSERT INTO user_details(id, password, restore_password_link, user_id) VALUES (nextval('user_details_id_seq'), '$2a$12$hrhsmzoFyO24LmyOaBgLnu4wZv1QS18oOv/vTRpo7upTlpPK9IS3a', 'link', 1); INSERT INTO iot_cloud_user(id, uuid, user_id) VALUES (nextval('iot_cloud_user_id_seq'), '1234567890', 1); \ No newline at end of file -- 2.7.4