@Test(expected = RequiredFieldException.class) public void create_id_inputParamValidation() { ProviderRestService tested = getTested(); // case - invalid id parameter Map<String, Object> m = new HashMap<String, Object>(); m.put(ProviderService.NAME, "myname"); TestUtils.assertResponseStatus(tested.create(null, m), Status.BAD_REQUEST); TestUtils.assertResponseStatus(tested.create("", m), Status.BAD_REQUEST); }
@Test(expected = RuntimeException.class) public void create_noid_exceptionFromService() { ProviderRestService tested = getTested(); Mockito.reset(tested.providerService); Map<String, Object> m = new HashMap<String, Object>(); m.put(ProviderService.NAME, "myname"); Mockito.doThrow(new RuntimeException("my exception")) .when(tested.providerService) .create("myname", m); tested.create(m); }
@SuppressWarnings("unchecked") @Test public void create_noid() { ProviderRestService tested = getTested(); // case - invalid name field in input data { Map<String, Object> m = new HashMap<String, Object>(); TestUtils.assertResponseStatus(tested.create(m), Status.BAD_REQUEST); m.put(ProviderService.NAME, ""); TestUtils.assertResponseStatus(tested.create(m), Status.BAD_REQUEST); } // case - OK, no previously existing entity so new pwd hash used { Map<String, Object> m = new HashMap<String, Object>(); m.put(ProviderService.NAME, "myname"); m.put(ProviderService.PASSWORD_HASH, "pwhs"); Mockito.when(tested.entityService.get("myname")).thenReturn(null); Map<String, Object> ret = (Map<String, Object>) tested.create(m); Assert.assertEquals("myname", ret.get("id")); Assert.assertEquals("pwhs", m.get(ProviderService.PASSWORD_HASH)); Assert.assertEquals("myname", m.get(ProviderService.NAME)); Mockito.verify(tested.providerService).create("myname", m); Mockito.verify(tested.providerService).get("myname"); Mockito.verifyNoMoreInteractions(tested.entityService); } // case - OK, previously existing entity without pwd hash, so new pwd hash used { Mockito.reset(tested.providerService); Map<String, Object> m = new HashMap<String, Object>(); m.put(ProviderService.NAME, "myname"); m.put(ProviderService.PASSWORD_HASH, "pwhs"); Mockito.when(tested.entityService.get("12")).thenReturn(new HashMap<String, Object>()); Map<String, Object> ret = (Map<String, Object>) tested.create(m); Assert.assertEquals("myname", ret.get("id")); Assert.assertEquals("pwhs", m.get(ProviderService.PASSWORD_HASH)); Assert.assertEquals("myname", m.get(ProviderService.NAME)); Mockito.verify(tested.providerService).create("myname", m); Mockito.verify(tested.providerService).get("myname"); Mockito.verifyNoMoreInteractions(tested.entityService); } // case - OK, previously existing entity with pwd hash, so old pwd hash preserved { Mockito.reset(tested.providerService); Map<String, Object> m = new HashMap<String, Object>(); m.put(ProviderService.NAME, "myname"); m.put(ProviderService.PASSWORD_HASH, "pwhs"); Map<String, Object> entityOld = new HashMap<String, Object>(); entityOld.put(ProviderService.PASSWORD_HASH, "pwhsold"); entityOld.put(ProviderService.NAME, "myname"); Mockito.when(tested.providerService.get("myname")).thenReturn(entityOld); Map<String, Object> ret = (Map<String, Object>) tested.create(m); Assert.assertEquals("myname", ret.get("id")); Assert.assertEquals("pwhsold", m.get(ProviderService.PASSWORD_HASH)); Assert.assertEquals("myname", m.get(ProviderService.NAME)); Mockito.verify(tested.providerService).create("myname", m); Mockito.verify(tested.providerService).get("myname"); Mockito.verifyNoMoreInteractions(tested.entityService); } // case - OK, previously existing entity with pwd hash, so old pwd hash preserved. new entity // without pwd hash { Mockito.reset(tested.providerService); Map<String, Object> m = new HashMap<String, Object>(); m.put(ProviderService.NAME, "myname"); Map<String, Object> entityOld = new HashMap<String, Object>(); entityOld.put(ProviderService.PASSWORD_HASH, "pwhsold"); entityOld.put(ProviderService.NAME, "myname"); Mockito.when(tested.providerService.get("myname")).thenReturn(entityOld); Map<String, Object> ret = (Map<String, Object>) tested.create(m); Assert.assertEquals("myname", ret.get("id")); Assert.assertEquals("pwhsold", m.get(ProviderService.PASSWORD_HASH)); Assert.assertEquals("myname", m.get(ProviderService.NAME)); Mockito.verify(tested.providerService).create("myname", m); Mockito.verify(tested.providerService).get("myname"); Mockito.verifyNoMoreInteractions(tested.providerService); } }