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 {
try {
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());
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 {
mutex.unlock();
......@@ -93,11 +101,18 @@ public class ActionRepository implements IActionRepo {
@Override
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;
}
cosmosStore.deleteItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getActionContainerName(), id, dpsHeaders.getPartitionId());
return true;
}
......@@ -113,10 +128,6 @@ public class ActionRepository implements IActionRepo {
.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){
Action action = new Action();
action.setId(doc.getId());
......
......@@ -61,13 +61,21 @@ public class DdmsRepository implements IDdmsRepository {
try {
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());
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 {
mutex.unlock();
......@@ -107,18 +115,21 @@ public class DdmsRepository implements IDdmsRepository {
@Override
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;
}
cosmosStore.deleteItem(dpsHeaders.getPartitionId(), azureBootstrapConfig.getCosmosDBName(), cosmosContainerConfig.getDdmsContainerName(), id, dpsHeaders.getPartitionId());
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){
Ddms ddms= new Ddms();
ddms.setId(doc.getId());
......
......@@ -30,7 +30,6 @@ import org.opengroup.osdu.register.provider.azure.di.AzureBootstrapConfig;
import org.opengroup.osdu.register.provider.azure.di.CosmosContainerConfig;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -43,6 +42,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
......@@ -70,9 +70,6 @@ public class ActionRepositoryTest {
@Mock
private JaxRsDpsLog logger;
@Mock
private Map<String, String> logHeaders;
@InjectMocks
private ActionRepository repo;
......@@ -101,9 +98,7 @@ public class ActionRepositoryTest {
@Test
public void createActionThrows409WhenIdExists() {
Action action = createAction();
Optional<ActionDoc> cosmosItem = Optional.of(new ActionDoc(action, dataPartitionId));
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId), any());
doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), any());
AppException exception = assertThrows(AppException.class, () -> {
repo.createAction(action);
......@@ -112,7 +107,6 @@ public class ActionRepositoryTest {
assertEquals(409, exception.getError().getCode());
assertEquals("Conflict", exception.getError().getReason());
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(logger, times(1)).error(String.format("An action already exists with the id: %s", action.getId()));
}
......@@ -120,18 +114,14 @@ public class ActionRepositoryTest {
@Test
public void createActionDocumentInsertedSuccessfully() {
Action action = createAction();
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());
doNothing().when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), any());
Action output = repo.createAction(action);
assertEquals(action, output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, actionContainer, actionId, dataPartitionId, ActionDoc.class);
verify(azureBootstrapConfig, times(2)).getCosmosDBName();
verify(cosmosContainerConfig, times(2)).getActionContainerName();
verify(dpsHeaders, times(4)).getPartitionId();
verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(1)).getActionContainerName();
verify(dpsHeaders, times(2)).getPartitionId();
}
@Test
......@@ -172,34 +162,30 @@ public class ActionRepositoryTest {
@Test
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);
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(cosmosContainerConfig, times(1)).getActionContainerName();
verify(dpsHeaders, times(2)).getPartitionId();
verify(logger, times(1)).error("Action with id id-1 does not exist.");
}
@Test
public void deleteActionReturnsTrueWhenDeletedSuccessfully() {
Action action = createAction();
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());
doNothing().when(cosmosStore).deleteItem(eq(dataPartitionId), eq(cosmosDatabase), eq(actionContainer), eq(actionId), eq(dataPartitionId));
boolean output = repo.delete(actionId);
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(azureBootstrapConfig, times(2)).getCosmosDBName();
verify(cosmosContainerConfig, times(2)).getActionContainerName();
verify(dpsHeaders, times(4)).getPartitionId();
verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(1)).getActionContainerName();
verify(dpsHeaders, times(2)).getPartitionId();
}
@Test
......
......@@ -31,7 +31,6 @@ import org.opengroup.osdu.register.provider.azure.di.CosmosContainerConfig;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
......@@ -44,6 +43,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.lenient;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
......@@ -71,9 +71,6 @@ public class DdmsRepositoryTest {
@Mock
private JaxRsDpsLog logger;
@Mock
private Map<String, String> logHeaders;
@InjectMocks
private DdmsRepository repo;
......@@ -87,9 +84,7 @@ public class DdmsRepositoryTest {
@Test
public void createDdmsThrows409WhenIdExists() {
Ddms ddms = createDdms();
Optional<DdmsDoc> cosmosItem = Optional.of(new DdmsDoc());
doReturn(cosmosItem).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId), any());
doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), any());
AppException exception = assertThrows(AppException.class, () -> {
repo.create(ddms);
......@@ -98,7 +93,6 @@ public class DdmsRepositoryTest {
assertEquals(409, exception.getError().getCode());
assertEquals("Conflict", exception.getError().getReason());
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(dpsHeaders, times(2)).getPartitionId();
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 {
@Test
public void createDdmsDocumentInsertedSuccessfully() {
Ddms ddms = createDdms();
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());
doNothing().when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), any());
Ddms output = repo.create(ddms);
assertEquals(ddms, output);
verify(cosmosStore, times(1)).findItem(dataPartitionId, cosmosDatabase, ddmsContainer, ddmsId, dataPartitionId, DdmsDoc.class);
verify(azureBootstrapConfig, times(2)).getCosmosDBName();
verify(cosmosContainerConfig, times(2)).getDdmsContainerName();
verify(dpsHeaders, times(4)).getPartitionId();
verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(1)).getDdmsContainerName();
verify(dpsHeaders, times(2)).getPartitionId();
}
@Test
......@@ -160,34 +150,30 @@ public class DdmsRepositoryTest {
@Test
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);
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(cosmosContainerConfig, times(1)).getDdmsContainerName();
verify(dpsHeaders, times(2)).getPartitionId();
verify(logger, times(1)).error(String.format("DDMS with id %s does not exist.", ddmsId));
}
@Test
public void deleteDdmsReturnsTrueWhenDeletedSuccessfully() {
Ddms ddms = createDdms();
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());
doNothing().when(cosmosStore).deleteItem(eq(dataPartitionId), eq(cosmosDatabase), eq(ddmsContainer), eq(ddmsId), eq(dataPartitionId));
boolean output = repo.delete(ddmsId);
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(azureBootstrapConfig, times(2)).getCosmosDBName();
verify(cosmosContainerConfig, times(2)).getDdmsContainerName();
verify(dpsHeaders, times(4)).getPartitionId();
verify(azureBootstrapConfig, times(1)).getCosmosDBName();
verify(cosmosContainerConfig, times(1)).getDdmsContainerName();
verify(dpsHeaders, times(2)).getPartitionId();
}
@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