Skip to content
Snippets Groups Projects
Commit 7c4ecf13 authored by harshit aggarwal's avatar harshit aggarwal
Browse files

changing delete api call in action and ddms repo

parent 635e4184
No related branches found
No related tags found
1 merge request!14Removing exists method to call createItem and deleteItem in CosmosStore
Pipeline #6322 passed
...@@ -64,13 +64,21 @@ public class ActionRepository implements IActionRepo { ...@@ -64,13 +64,21 @@ public class ActionRepository implements IActionRepo {
try { try {
mutex.lock(); mutex.lock();
if (exists(action.getId())) {
logger.error(String.format("An action already exists with the id: %s", action.getId()));
throw new AppException(409, "Conflict", String.format("An action already exists with the id: %s", action.getId()));
}
ActionDoc doc = new ActionDoc(action, dpsHeaders.getPartitionId()); ActionDoc doc = new ActionDoc(action, dpsHeaders.getPartitionId());
cosmosStore.upsertItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getActionContainerName(), doc);
try {
cosmosStore.createItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getActionContainerName(), doc);
}
catch (AppException e) {
if(e.getError().getCode() == 409) {
logger.error(String.format("An action already exists with the id: %s", action.getId()));
throw new AppException(409, "Conflict", String.format("An action already exists with the id: %s", action.getId()));
}
else {
logger.error(e.getMessage());
throw new AppException(e.getError().getCode(), e.getError().getReason(), e.getMessage());
}
}
} finally { } finally {
mutex.unlock(); mutex.unlock();
...@@ -93,11 +101,18 @@ public class ActionRepository implements IActionRepo { ...@@ -93,11 +101,18 @@ public class ActionRepository implements IActionRepo {
@Override @Override
public boolean delete(String id) { public boolean delete(String id) {
if(!exists(id)){ try {
cosmosStore.deleteItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getActionContainerName(), id, dpsHeaders.getPartitionId());
}
catch (AppException e) {
if(e.getError().getCode() == 404) {
logger.error(String.format("Action with id %s does not exist.", id));
}
else {
logger.error(e.getMessage());
}
return false; return false;
} }
cosmosStore.deleteItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getActionContainerName(), id, dpsHeaders.getPartitionId());
return true; return true;
} }
...@@ -113,10 +128,6 @@ public class ActionRepository implements IActionRepo { ...@@ -113,10 +128,6 @@ public class ActionRepository implements IActionRepo {
.stream().map(this::convertToActionClass).collect(Collectors.toList()); .stream().map(this::convertToActionClass).collect(Collectors.toList());
} }
private boolean exists(String id) {
return cosmosStore.findItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getActionContainerName(), id, dpsHeaders.getPartitionId(), ActionDoc.class).isPresent();
}
private Action convertToActionClass(ActionDoc doc){ private Action convertToActionClass(ActionDoc doc){
Action action = new Action(); Action action = new Action();
action.setId(doc.getId()); action.setId(doc.getId());
......
...@@ -61,13 +61,21 @@ public class DdmsRepository implements IDdmsRepository { ...@@ -61,13 +61,21 @@ public class DdmsRepository implements IDdmsRepository {
try { try {
mutex.lock(); mutex.lock();
if(exists(ddms.getId())){
logger.error(String.format("A DDMS already exists with the same id: %s", ddms.getId()));
throw new AppException(409, "Conflict", String.format("A DDMS already exists with the same id: %s", ddms.getId()));
}
DdmsDoc doc = new DdmsDoc(ddms, dpsHeaders.getPartitionId()); DdmsDoc doc = new DdmsDoc(ddms, dpsHeaders.getPartitionId());
cosmosStore.upsertItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getDdmsContainerName(), doc);
try {
cosmosStore.createItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getDdmsContainerName(), doc);
}
catch (AppException e) {
if(e.getError().getCode() == 409) {
logger.error(String.format("A DDMS already exists with the same id: %s", ddms.getId()));
throw new AppException(409, "Conflict", String.format("A DDMS already exists with the same id: %s", ddms.getId()));
}
else {
logger.error(e.getMessage());
throw new AppException(e.getError().getCode(), e.getError().getReason(), e.getMessage());
}
}
} finally { } finally {
mutex.unlock(); mutex.unlock();
...@@ -107,18 +115,21 @@ public class DdmsRepository implements IDdmsRepository { ...@@ -107,18 +115,21 @@ public class DdmsRepository implements IDdmsRepository {
@Override @Override
public boolean delete(String id) { public boolean delete(String id) {
if(!exists(id)){ try {
cosmosStore.deleteItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getDdmsContainerName(), id, dpsHeaders.getPartitionId());
}
catch (AppException e) {
if(e.getError().getCode() == 404) {
logger.error(String.format("DDMS with id %s does not exist.", id));
}
else {
logger.error(e.getMessage());
}
return false; return false;
} }
cosmosStore.deleteItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getDdmsContainerName(), id, dpsHeaders.getPartitionId());
return true; return true;
} }
private boolean exists(String id) {
return cosmosStore.findItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getDdmsContainerName(), id, dpsHeaders.getPartitionId(), DdmsDoc.class).isPresent();
}
private Ddms ConvertToDdmsClass(DdmsDoc doc){ private Ddms ConvertToDdmsClass(DdmsDoc doc){
Ddms ddms= new Ddms(); Ddms ddms= new Ddms();
ddms.setId(doc.getId()); ddms.setId(doc.getId());
......
...@@ -30,7 +30,6 @@ import org.opengroup.osdu.register.provider.azure.di.AzureBootstrapConfig; ...@@ -30,7 +30,6 @@ import org.opengroup.osdu.register.provider.azure.di.AzureBootstrapConfig;
import org.opengroup.osdu.register.provider.azure.di.CosmosContainerConfig; import org.opengroup.osdu.register.provider.azure.di.CosmosContainerConfig;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -43,6 +42,7 @@ import static org.mockito.ArgumentMatchers.any; ...@@ -43,6 +42,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
...@@ -70,9 +70,6 @@ public class ActionRepositoryTest { ...@@ -70,9 +70,6 @@ public class ActionRepositoryTest {
@Mock @Mock
private JaxRsDpsLog logger; private JaxRsDpsLog logger;
@Mock
private Map<String, String> logHeaders;
@InjectMocks @InjectMocks
private ActionRepository repo; private ActionRepository repo;
...@@ -101,9 +98,7 @@ public class ActionRepositoryTest { ...@@ -101,9 +98,7 @@ public class ActionRepositoryTest {
@Test @Test
public void createActionThrows409WhenIdExists() { public void createActionThrows409WhenIdExists() {
Action action = createAction(); Action action = createAction();
Optional<ActionDoc> cosmosItem = Optional.of(new ActionDoc(action, dataPartitionId)); doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), any());
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId), any());
AppException exception = assertThrows(AppException.class, () -> { AppException exception = assertThrows(AppException.class, () -> {
repo.createAction(action); repo.createAction(action);
...@@ -112,7 +107,6 @@ public class ActionRepositoryTest { ...@@ -112,7 +107,6 @@ public class ActionRepositoryTest {
assertEquals(409, exception.getError().getCode()); assertEquals(409, exception.getError().getCode());
assertEquals("Conflict", exception.getError().getReason()); assertEquals("Conflict", exception.getError().getReason());
assertEquals(String.format("An action already exists with the id: %s", action.getId()), exception.getError().getMessage()); assertEquals(String.format("An action already exists with the id: %s", action.getId()), exception.getError().getMessage());
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId, ActionDoc.class);
verify(dpsHeaders, times(2)).getPartitionId(); verify(dpsHeaders, times(2)).getPartitionId();
verify(logger, times(1)).error(String.format("An action already exists with the id: %s", action.getId())); verify(logger, times(1)).error(String.format("An action already exists with the id: %s", action.getId()));
} }
...@@ -120,18 +114,14 @@ public class ActionRepositoryTest { ...@@ -120,18 +114,14 @@ public class ActionRepositoryTest {
@Test @Test
public void createActionDocumentInsertedSuccessfully() { public void createActionDocumentInsertedSuccessfully() {
Action action = createAction(); Action action = createAction();
doNothing().when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), any());
Optional<ActionDoc> cosmosItem = Optional.empty();
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId), any());
doNothing().when(cosmosStore).upsertItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), any());
Action output = repo.createAction(action); Action output = repo.createAction(action);
assertEquals(action, output); assertEquals(action, output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId, ActionDoc.class); verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(azureBootstrapConfig, times(2)).getCosmosDBName(); verify(cosmosContainerConfig, times(1)).getActionContainerName();
verify(cosmosContainerConfig, times(2)).getActionContainerName(); verify(dpsHeaders, times(2)).getPartitionId();
verify(dpsHeaders, times(4)).getPartitionId();
} }
@Test @Test
...@@ -172,34 +162,30 @@ public class ActionRepositoryTest { ...@@ -172,34 +162,30 @@ public class ActionRepositoryTest {
@Test @Test
public void deleteActionReturnsFalseWhenIdNotFound() { public void deleteActionReturnsFalseWhenIdNotFound() {
doReturn(Optional.empty()).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId), any()); doThrow(new AppException(404, "Reason", "Message")).when(cosmosStore).deleteItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId));
boolean output = repo.delete(actionId); boolean output = repo.delete(actionId);
assertFalse(output); assertFalse(output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId, ActionDoc.class); verify(cosmosStore, times(1)).deleteItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId);
verify(azureBootstrapConfig, times(1)).getCosmosDBName(); verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(1)).getActionContainerName(); verify(cosmosContainerConfig, times(1)).getActionContainerName();
verify(dpsHeaders, times(2)).getPartitionId(); verify(dpsHeaders, times(2)).getPartitionId();
verify(logger, times(1)).error("Action with id id-1 does not exist.");
} }
@Test @Test
public void deleteActionReturnsTrueWhenDeletedSuccessfully() { public void deleteActionReturnsTrueWhenDeletedSuccessfully() {
Action action = createAction(); doNothing().when(cosmosStore).deleteItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId));
ActionDoc doc = new ActionDoc(action, dataPartitionId);
Optional<ActionDoc> cosmosItem = Optional.of(doc);
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId), any());
boolean output = repo.delete(actionId); boolean output = repo.delete(actionId);
assertTrue(output); assertTrue(output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId, ActionDoc.class);
verify(cosmosStore, times(1)).deleteItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId); verify(cosmosStore, times(1)).deleteItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId);
verify(azureBootstrapConfig, times(2)).getCosmosDBName(); verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(2)).getActionContainerName(); verify(cosmosContainerConfig, times(1)).getActionContainerName();
verify(dpsHeaders, times(4)).getPartitionId(); verify(dpsHeaders, times(2)).getPartitionId();
} }
@Test @Test
......
...@@ -31,7 +31,6 @@ import org.opengroup.osdu.register.provider.azure.di.CosmosContainerConfig; ...@@ -31,7 +31,6 @@ import org.opengroup.osdu.register.provider.azure.di.CosmosContainerConfig;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Optional; import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
...@@ -44,6 +43,7 @@ import static org.mockito.ArgumentMatchers.any; ...@@ -44,6 +43,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.times; import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
...@@ -71,9 +71,6 @@ public class DdmsRepositoryTest { ...@@ -71,9 +71,6 @@ public class DdmsRepositoryTest {
@Mock @Mock
private JaxRsDpsLog logger; private JaxRsDpsLog logger;
@Mock
private Map<String, String> logHeaders;
@InjectMocks @InjectMocks
private DdmsRepository repo; private DdmsRepository repo;
...@@ -87,9 +84,7 @@ public class DdmsRepositoryTest { ...@@ -87,9 +84,7 @@ public class DdmsRepositoryTest {
@Test @Test
public void createDdmsThrows409WhenIdExists() { public void createDdmsThrows409WhenIdExists() {
Ddms ddms = createDdms(); Ddms ddms = createDdms();
Optional<DdmsDoc> cosmosItem = Optional.of(new DdmsDoc()); doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), any());
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId), any());
AppException exception = assertThrows(AppException.class, () -> { AppException exception = assertThrows(AppException.class, () -> {
repo.create(ddms); repo.create(ddms);
...@@ -98,7 +93,6 @@ public class DdmsRepositoryTest { ...@@ -98,7 +93,6 @@ public class DdmsRepositoryTest {
assertEquals(409, exception.getError().getCode()); assertEquals(409, exception.getError().getCode());
assertEquals("Conflict", exception.getError().getReason()); assertEquals("Conflict", exception.getError().getReason());
assertEquals(String.format("A DDMS already exists with the same id: %s", ddms.getId()), exception.getError().getMessage()); assertEquals(String.format("A DDMS already exists with the same id: %s", ddms.getId()), exception.getError().getMessage());
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId, DdmsDoc.class);
verify(cosmosContainerConfig, times(1)).getDdmsContainerName(); verify(cosmosContainerConfig, times(1)).getDdmsContainerName();
verify(dpsHeaders, times(2)).getPartitionId(); verify(dpsHeaders, times(2)).getPartitionId();
verify(logger, times(1)).error(String.format("A DDMS already exists with the same id: %s", ddms.getId())); verify(logger, times(1)).error(String.format("A DDMS already exists with the same id: %s", ddms.getId()));
...@@ -107,18 +101,14 @@ public class DdmsRepositoryTest { ...@@ -107,18 +101,14 @@ public class DdmsRepositoryTest {
@Test @Test
public void createDdmsDocumentInsertedSuccessfully() { public void createDdmsDocumentInsertedSuccessfully() {
Ddms ddms = createDdms(); Ddms ddms = createDdms();
doNothing().when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), any());
Optional<DdmsDoc> cosmosItem = Optional.empty();
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId), any());
doNothing().when(cosmosStore).upsertItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), any());
Ddms output = repo.create(ddms); Ddms output = repo.create(ddms);
assertEquals(ddms, output); assertEquals(ddms, output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId, DdmsDoc.class); verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(azureBootstrapConfig, times(2)).getCosmosDBName(); verify(cosmosContainerConfig, times(1)).getDdmsContainerName();
verify(cosmosContainerConfig, times(2)).getDdmsContainerName(); verify(dpsHeaders, times(2)).getPartitionId();
verify(dpsHeaders, times(4)).getPartitionId();
} }
@Test @Test
...@@ -160,34 +150,30 @@ public class DdmsRepositoryTest { ...@@ -160,34 +150,30 @@ public class DdmsRepositoryTest {
@Test @Test
public void deleteDdmsReturnsFalseWhenIdNotFound() { public void deleteDdmsReturnsFalseWhenIdNotFound() {
doReturn(Optional.empty()).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId), any()); doThrow(new AppException(404, "Reason", "Message")).when(cosmosStore).deleteItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId));
boolean output = repo.delete(ddmsId); boolean output = repo.delete(ddmsId);
assertFalse(output); assertFalse(output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId, DdmsDoc.class); verify(cosmosStore, times(1)).deleteItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId);
verify(azureBootstrapConfig, times(1)).getCosmosDBName(); verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(1)).getDdmsContainerName(); verify(cosmosContainerConfig, times(1)).getDdmsContainerName();
verify(dpsHeaders, times(2)).getPartitionId(); verify(dpsHeaders, times(2)).getPartitionId();
verify(logger, times(1)).error(String.format("DDMS with id %s does not exist.", ddmsId));
} }
@Test @Test
public void deleteDdmsReturnsTrueWhenDeletedSuccessfully() { public void deleteDdmsReturnsTrueWhenDeletedSuccessfully() {
Ddms ddms = createDdms(); doNothing().when(cosmosStore).deleteItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId));
DdmsDoc doc = new DdmsDoc(ddms, dataPartitionId);
Optional<DdmsDoc> cosmosItem = Optional.of(doc);
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId), any());
boolean output = repo.delete(ddmsId); boolean output = repo.delete(ddmsId);
assertTrue(output); assertTrue(output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId, DdmsDoc.class);
verify(cosmosStore, times(1)).deleteItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId); verify(cosmosStore, times(1)).deleteItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId);
verify(azureBootstrapConfig, times(2)).getCosmosDBName(); verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(2)).getDdmsContainerName(); verify(cosmosContainerConfig, times(1)).getDdmsContainerName();
verify(dpsHeaders, times(4)).getPartitionId(); verify(dpsHeaders, times(2)).getPartitionId();
} }
@Test @Test
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment