public void testSimplifiedMethods()

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;
    }