in services/sns/src/it/java/software/amazon/awssdk/services/sns/SNSIntegrationTest.java [255:341]
public void testSimplifiedMethods() throws InterruptedException {
// Create Topic
CreateTopicResponse createTopicResult =
sns.createTopic(CreateTopicRequest.builder().name("test-topic-" + System.currentTimeMillis()).build());
topicArn = createTopicResult.topicArn();
assertTrue(topicArn.length() > 1);
// List Topics
Thread.sleep(1000 * 5);
ListTopicsResponse listTopicsResult = sns.listTopics(ListTopicsRequest.builder().build());
assertNotNull(listTopicsResult.topics());
assertTopicIsPresent(listTopicsResult.topics(), topicArn);
// Set Topic Attributes
sns.setTopicAttributes(
SetTopicAttributesRequest.builder().topicArn(topicArn).attributeName("DisplayName").attributeValue("MyTopicName")
.build());
// Get Topic Attributes
GetTopicAttributesResponse getTopicAttributesResult =
sns.getTopicAttributes(GetTopicAttributesRequest.builder().topicArn(topicArn).build());
assertEquals("MyTopicName", getTopicAttributesResult.attributes().get("DisplayName"));
// Subscribe an SQS queue for notifications
queueUrl = sqs.createQueue(CreateQueueRequest.builder().queueName("subscribeTopicTest-" + System.currentTimeMillis())
.build())
.queueUrl();
String queueArn = initializeReceivingQueue();
SubscribeResponse subscribeResult =
sns.subscribe(SubscribeRequest.builder().topicArn(topicArn).protocol("sqs").endpoint(queueArn).build());
String subscriptionArn = subscribeResult.subscriptionArn();
assertTrue(subscriptionArn.length() > 1);
// List Subscriptions by Topic
Thread.sleep(1000 * 5);
ListSubscriptionsByTopicResponse listSubscriptionsByTopicResult =
sns.listSubscriptionsByTopic(ListSubscriptionsByTopicRequest.builder().topicArn(topicArn).build());
assertSubscriptionIsPresent(listSubscriptionsByTopicResult.subscriptions(), subscriptionArn);
// Get Subscription Attributes
Map<String, String> attributes =
sns.getSubscriptionAttributes(GetSubscriptionAttributesRequest.builder().subscriptionArn(subscriptionArn).build())
.attributes();
assertTrue(attributes.size() > 0);
Entry<String, String> entry = attributes.entrySet().iterator().next();
assertNotNull(entry.getKey());
assertNotNull(entry.getValue());
// Set Subscription Attributes
sns.setSubscriptionAttributes(
SetSubscriptionAttributesRequest.builder().subscriptionArn(subscriptionArn).attributeName("DeliveryPolicy")
.attributeValue(DELIVERY_POLICY).build());
// Publish With Subject
sns.publish(PublishRequest.builder().topicArn(topicArn).message("Hello SNS World").subject("Subject").build());
// Receive Published Message
String message = receiveMessage();
Map<String, String> messageDetails = parseJSON(message);
assertEquals("Hello SNS World", messageDetails.get("Message"));
assertEquals("Subject", messageDetails.get("Subject"));
assertNotNull(messageDetails.get("MessageId"));
assertNotNull(messageDetails.get("Signature"));
// Publish Without Subject
sns.publish(PublishRequest.builder().topicArn(topicArn).message("Hello SNS World").build());
// Receive Published Message
message = receiveMessage();
messageDetails = parseJSON(message);
assertEquals("Hello SNS World", messageDetails.get("Message"));
assertNotNull(messageDetails.get("MessageId"));
assertNotNull(messageDetails.get("Signature"));
// Add/Remove Permissions
sns.addPermission(AddPermissionRequest.builder().topicArn(topicArn).label("foo").awsAccountIds("750203240092")
.actionNames("Publish").build());
Thread.sleep(1000 * 5);
sns.removePermission(RemovePermissionRequest.builder().topicArn(topicArn).label("foo").build());
// Unsubscribe
sns.unsubscribe(UnsubscribeRequest.builder().subscriptionArn(subscriptionArn).build());
// Delete Topic
sns.deleteTopic(DeleteTopicRequest.builder().topicArn(topicArn).build());
topicArn = null;
}