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

Minor fix

parent 8515852e
No related branches found
No related tags found
1 merge request!16Adding logic to handle failure scenario during Create Subscription
Pipeline #6634 passed
......@@ -72,7 +72,7 @@ public class PushSubscription {
}
}
public void getPushSubscription(String subscriptionId, String topicName) {
public void checkIfPushSubscriptionExists(String subscriptionId, String topicName) {
String scope = String.format("/subscriptions/%s/resourceGroups/%s/providers/Microsoft.EventGrid/topics/%s", azureBootstrapConfig.getAzureSubscriptionId(), azureBootstrapConfig.getResourceGroupName(), topicName);
AtomicReference<Throwable> error = new AtomicReference<>();
eventGridManager.eventSubscriptions().getAsync(scope, subscriptionId)
......
......@@ -236,7 +236,7 @@ public class SubscriptionRepository implements ISubscriptionRepository {
// We will check if Push Subscription does not exist then we should try creating it again since
// the corresponding record in the Cosmos Db is already present
pushSubscription.getPushSubscription(input.getNotificationId(), input.getTopic());
pushSubscription.checkIfPushSubscriptionExists(input.getNotificationId(), input.getTopic());
logger.error("A subscriber already exists with the same topic and endpoint combination");
throw new AppException(409, "Conflict", "A subscriber already exists with the same topic and endpoint combination");
}
......
......@@ -196,7 +196,7 @@ public class PushSubscriptionTest {
when(eventSubscriptions.getAsync(scope, subscriptionId)).thenReturn(observableGetSubscription);
pushSubscription.getPushSubscription(subscriptionId, topicName);
pushSubscription.checkIfPushSubscriptionExists(subscriptionId, topicName);
verify(azureBootstrapConfig, times(1)).getResourceGroupName();
verify(azureBootstrapConfig, times(1)).getAzureSubscriptionId();
......@@ -210,7 +210,7 @@ public class PushSubscriptionTest {
when(eventSubscriptions.getAsync(scope, subscriptionId)).thenReturn(observableErrorNullPointerExceptionGetSubscription);
AppException exception = assertThrows(AppException.class, () -> {
pushSubscription.getPushSubscription(subscriptionId, topicName);
pushSubscription.checkIfPushSubscriptionExists(subscriptionId, topicName);
});
assertNotNull(exception);
......@@ -229,7 +229,7 @@ public class PushSubscriptionTest {
when(eventSubscriptions.getAsync(scope, subscriptionId)).thenReturn(observableError500ExceptionGetSubscription);
AppException exception = assertThrows(AppException.class, () -> {
pushSubscription.getPushSubscription(subscriptionId, topicName);
pushSubscription.checkIfPushSubscriptionExists(subscriptionId, topicName);
});
assertNotNull(exception);
......
......@@ -117,7 +117,7 @@ public class SubscriptionRepositoryTest {
doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
doReturn(Optional.of(subscriptionDoc)).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), eq(subscriptionId), eq(dataPartitionId), any());
doNothing().when(pushSubscription).getPushSubscription(subscriptionId, topicName);
doNothing().when(pushSubscription).checkIfPushSubscriptionExists(subscriptionId, topicName);
AppException exception = assertThrows(AppException.class, () -> {
repo.create(subscription);
});
......@@ -190,7 +190,7 @@ public class SubscriptionRepositoryTest {
public void createSubscriptionSubscriptionCreatedSuccessfullyIfRecordExistsInCosmosDbButPushSubscriptionIsNotPresent() throws Exception {
doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
doThrow(new AppException(404, "Reason", "Message")).when(pushSubscription).getPushSubscription(subscriptionId, topicName);
doThrow(new AppException(404, "Reason", "Message")).when(pushSubscription).checkIfPushSubscriptionExists(subscriptionId, topicName);
doReturn(Optional.of(subscriptionDoc)).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), eq(subscriptionId), eq(dataPartitionId), any());
doReturn(true).when(pushSubscription).createPushSubscription(subscriptionId, topicName);
doNothing().when(cosmosStore).upsertItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
......@@ -209,7 +209,7 @@ public class SubscriptionRepositoryTest {
verify(cryptographyUtil, times(1)).getKeyName();
verify(cryptographyUtil, times(1)).getKeyVersion();
verify(pushSubscription, times(1)).createPushSubscription(subscriptionId, topicName);
verify(pushSubscription, times(1)).getPushSubscription(subscriptionId, topicName);
verify(pushSubscription, times(1)).checkIfPushSubscriptionExists(subscriptionId, topicName);
verifyCallsToSubscriptionMock();
}
......@@ -217,7 +217,7 @@ public class SubscriptionRepositoryTest {
public void createSubscriptionShouldThrow500ExceptionIfRecordExistsInCosmosDbButFailedToCreatePushSubscription() {
doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
doThrow(new AppException(404, "Reason", "Message")).when(pushSubscription).getPushSubscription(subscriptionId, topicName);
doThrow(new AppException(404, "Reason", "Message")).when(pushSubscription).checkIfPushSubscriptionExists(subscriptionId, topicName);
doReturn(Optional.of(subscriptionDoc)).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), eq(subscriptionId), eq(dataPartitionId), any());
doReturn(false).when(pushSubscription).createPushSubscription(subscriptionId, topicName);
doNothing().when(cosmosStore).upsertItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
......@@ -241,7 +241,7 @@ public class SubscriptionRepositoryTest {
verify(cryptographyUtil, times(1)).getKeyName();
verify(cryptographyUtil, times(1)).getKeyVersion();
verify(pushSubscription, times(1)).createPushSubscription(subscriptionId, topicName);
verify(pushSubscription, times(1)).getPushSubscription(subscriptionId, topicName);
verify(pushSubscription, times(1)).checkIfPushSubscriptionExists(subscriptionId, topicName);
verify(logger, times(1)).error("Unexpected error creating subscription");
verifyCallsToSubscriptionMock();
}
......@@ -250,7 +250,7 @@ public class SubscriptionRepositoryTest {
public void createSubscriptionShouldThrow500ExceptionIfRecordExistsInCosmosDbButUpsertOperationFailed() {
doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
doThrow(new AppException(404, "Reason", "Message")).when(pushSubscription).getPushSubscription(subscriptionId, topicName);
doThrow(new AppException(404, "Reason", "Message")).when(pushSubscription).checkIfPushSubscriptionExists(subscriptionId, topicName);
doThrow(new AppException(500, "Reason", "Message")).when(cosmosStore).upsertItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
doReturn(Optional.of(subscriptionDoc)).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), eq(subscriptionId), eq(dataPartitionId), any());
when(cryptographyUtil.encryptData(secretValue)).thenReturn("some-string");
......@@ -272,7 +272,7 @@ public class SubscriptionRepositoryTest {
verify(cryptographyUtil, times(1)).encryptData(secretValue);
verify(cryptographyUtil, times(1)).getKeyName();
verify(cryptographyUtil, times(1)).getKeyVersion();
verify(pushSubscription, times(1)).getPushSubscription(subscriptionId, topicName);
verify(pushSubscription, times(1)).checkIfPushSubscriptionExists(subscriptionId, topicName);
verify(logger, times(1)).error("Message");
verifyCallsToSubscriptionMock();
}
......@@ -282,7 +282,7 @@ public class SubscriptionRepositoryTest {
doThrow(new AppException(409, "Reason", "Message")).when(cosmosStore).createItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), any());
doReturn(Optional.of(subscriptionDoc)).when(cosmosStore).findItem(eq(dataPartitionId), eq(cosmosDatabase), eq(subscriptionContainer), eq(subscriptionId), eq(dataPartitionId), any());
doThrow(new AppException(500, "Reason", "Message")).when(pushSubscription).getPushSubscription(subscriptionId, topicName);
doThrow(new AppException(500, "Reason", "Message")).when(pushSubscription).checkIfPushSubscriptionExists(subscriptionId, topicName);
when(cryptographyUtil.encryptData(secretValue)).thenReturn("some-string");
AppException exception = assertThrows(AppException.class, () -> {
......@@ -302,7 +302,7 @@ public class SubscriptionRepositoryTest {
verify(cryptographyUtil, times(1)).encryptData(secretValue);
verify(cryptographyUtil, times(1)).getKeyName();
verify(cryptographyUtil, times(1)).getKeyVersion();
verify(pushSubscription, times(1)).getPushSubscription(subscriptionId, topicName);
verify(pushSubscription, times(1)).checkIfPushSubscriptionExists(subscriptionId, topicName);
verify(logger, times(1)).error("Unexpected error creating subscription");
verifyCallsToSubscriptionMock();
}
......
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