Package com.comcast.cns.test.unit

Source Code of com.comcast.cns.test.unit.CNSPublishTest

/**
* Copyright 2012 Comcast Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*   http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.comcast.cns.test.unit;

import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;

import java.util.Random;

import org.json.JSONObject;
import org.junit.Test;

import com.amazonaws.services.sns.model.PublishRequest;
import com.amazonaws.services.sns.model.SubscribeRequest;
import com.amazonaws.services.sns.model.UnsubscribeRequest;
import com.amazonaws.services.sqs.model.DeleteMessageRequest;
import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
import com.amazonaws.services.sqs.model.ReceiveMessageResult;
import com.comcast.cmb.test.tools.CMBAWSBaseTest;
import com.comcast.cmb.test.tools.CMBTestingConstants;
import com.comcast.cmb.test.tools.CNSTestingUtils;

public class CNSPublishTest extends CMBAWSBaseTest {
 
  private Random rand = new Random();

  @Test
  public void testPublishToInvalidArn() {

    try
     
      PublishRequest publishRequest = new PublishRequest();
      publishRequest.setMessage("test");
      publishRequest.setTopicArn("abc");
     
      try {
        cns1.publish(publishRequest);
      } catch (Exception ex) {
        return;
      }
     
      fail("call did not fail");

    } catch (Exception ex) {
      logger.error("test failed", ex);
      fail(ex.getMessage());
    }
  } 

  @Test
  public void testPublishToMissingArn() {

    try
     
      PublishRequest publishRequest = new PublishRequest();
      publishRequest.setMessage("test");
     
      try {
        cns1.publish(publishRequest);
      } catch (Exception ex) {
        return;
      }
     
      fail("call did not fail");

    } catch (Exception ex) {
     
      fail(ex.getMessage());
    }
  } 

  @Test
  public void testPublishMissingMessage() {
   
    String topicArn = null;
    String queueUrl = null;
    String queueArn = null;
   
    try
     
      topicArn =  getTopic(1, USR.USER1);
      queueUrl = getQueueUrl(1, USR.USER1);
      queueArn = com.comcast.cqs.util.Util.getArnForAbsoluteQueueUrl(queueUrl);
     
      Thread.sleep(1000);

      String endPoint = queueArn;

      SubscribeRequest subscribeRequest = new SubscribeRequest();
      subscribeRequest.setEndpoint(endPoint);
      subscribeRequest.setProtocol("cqs");
      subscribeRequest.setTopicArn(topicArn);
      String subscriptionArn = cns1.subscribe(subscribeRequest).getSubscriptionArn();
     
      PublishRequest publishRequest = new PublishRequest();
      publishRequest.setTopicArn(topicArn);
     
      try {
        cns1.publish(publishRequest);
      } catch (Exception ex) {
        return;
      }
     
      fail("call did not fail");

    } catch (Exception ex) {
      logger.error("test failed", ex);
      fail(ex.getMessage());
    }
  } 

  @Test
  public void testPublishBadMessage() {
   
    String topicArn = null;
    String queueUrl = null;
    String queueArn = null;
   
    try
     
      String endPoint = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "recv/" + rand.nextInt();

      topicArn =  getTopic(1, USR.USER1);
      queueUrl = getQueueUrl(1, USR.USER1);
      queueArn = com.comcast.cqs.util.Util.getArnForAbsoluteQueueUrl(queueUrl);
     
      Thread.sleep(1000);

      endPoint = queueArn;

      SubscribeRequest subscribeRequest = new SubscribeRequest();
      subscribeRequest.setEndpoint(endPoint);
      subscribeRequest.setProtocol("cqs");
      subscribeRequest.setTopicArn(topicArn);
      String subscriptionArn = cns1.subscribe(subscribeRequest).getSubscriptionArn();
     
      String messageStructure = "json";
      String message = "boo";

      PublishRequest publishRequest = new PublishRequest();
      publishRequest.setMessageStructure(messageStructure);
      publishRequest.setMessage(message);
      publishRequest.setTopicArn(topicArn);
     
      try {
        cns1.publish(publishRequest);
      } catch (Exception ex) {
        return;
      }
     
      fail("call did not fail");

    } catch (Exception ex) {
      logger.error("test failed", ex);
      fail(ex.getMessage());
    }
  }    

  @Test
  public void testMultipleEndpoints() {
   
    String topicArn = null;
    String queueUrl = null;
    String queueArn = null;
   
    try
     
      String endPoint = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "recv/" + rand.nextInt();

      topicArn =  getTopic(1, USR.USER1);
      queueUrl = getQueueUrl(1, USR.USER1);
      queueArn = com.comcast.cqs.util.Util.getArnForAbsoluteQueueUrl(queueUrl);

      Thread.sleep(1000);

      SubscribeRequest subscribeRequest = new SubscribeRequest();
      subscribeRequest.setEndpoint(endPoint);
      subscribeRequest.setProtocol("http");
      subscribeRequest.setTopicArn(topicArn);
      String subscriptionArn = cns1.subscribe(subscribeRequest).getSubscriptionArn();
     
      String lastMessageUrl = endPoint.replace("recv", "info") + "?showLast=true";

      if (subscriptionArn.equals("pending confirmation")) {

        String resp = CNSTestingUtils.sendHttpMessage(lastMessageUrl, "");

          JSONObject o = new JSONObject(resp);
         
          if (!o.has("SubscribeURL")) {
            fail("Message is not a confirmation messsage");
          }
         
          String subscriptionUrl = o.getString("SubscribeURL");
         
        resp = CNSTestingUtils.sendHttpMessage(subscriptionUrl, "");
      }
     
      endPoint = queueArn;

      subscribeRequest = new SubscribeRequest();
      subscribeRequest.setEndpoint(endPoint);
      subscribeRequest.setProtocol("cqs");
      subscribeRequest.setTopicArn(topicArn);
      String subscriptionArn2 = cns1.subscribe(subscribeRequest).getSubscriptionArn();
     
      String message = "test message";

      PublishRequest publishRequest = new PublishRequest();
      publishRequest.setMessage(message);
      publishRequest.setTopicArn(topicArn);
     
      cns1.publish(publishRequest);
     
      Thread.sleep(1000);

      String resp = CNSTestingUtils.sendHttpMessage(lastMessageUrl, "");

      assertTrue("Expected message '" + message + "', instead found " + resp, resp.contains(message));

      ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
      receiveMessageRequest.setQueueUrl(queueUrl);
      ReceiveMessageResult result = cqs1.receiveMessage(receiveMessageRequest);
     
      assertTrue("No message found", result.getMessages().size() > 0);
      String msg = result.getMessages().get(0).getBody();
      assertTrue("Expected message '" + message + "', instead found " + msg, msg.contains(message));

      String receiptHandle = result.getMessages().get(0).getReceiptHandle();
      assertTrue("Receipt handle is null", receiptHandle != null);
     
      DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest();
      deleteMessageRequest.setQueueUrl(queueUrl);
      deleteMessageRequest.setReceiptHandle(receiptHandle);
      cqs1.deleteMessage(deleteMessageRequest);

      UnsubscribeRequest unsubscribeRequest = new UnsubscribeRequest();
      unsubscribeRequest.setSubscriptionArn(subscriptionArn2);
      cns1.unsubscribe(unsubscribeRequest);

    } catch (Exception ex) {
      logger.error("test failed", ex);
      fail(ex.getMessage());
    }
  } 
 
  @Test
  public void testMessageStructure() {
   
    String topicArn = null;
    String queueUrl = null;
    String queueArn = null;
   
    try
     
      String endPoint = CMBTestingConstants.HTTP_ENDPOINT_BASE_URL + "recv/" + rand.nextInt();
      String httpMessage = "test Http servlet 2";
      String cqsMessage = "test CQS servlet 2";

      topicArn =  getTopic(1, USR.USER1);
      queueUrl = getQueueUrl(1, USR.USER1);
      queueArn = com.comcast.cqs.util.Util.getArnForAbsoluteQueueUrl(queueUrl);

      Thread.sleep(1000);

      SubscribeRequest subscribeRequest = new SubscribeRequest();
      subscribeRequest.setEndpoint(endPoint);
      subscribeRequest.setProtocol("http");
      subscribeRequest.setTopicArn(topicArn);
      String subscriptionArn = cns1.subscribe(subscribeRequest).getSubscriptionArn();
     
      String lastMessageUrl = endPoint.replace("recv", "info") + "?showLast=true";

      if (subscriptionArn.equals("pending confirmation")) {

        String resp = CNSTestingUtils.sendHttpMessage(lastMessageUrl, "");

          JSONObject o = new JSONObject(resp);
         
          if (!o.has("SubscribeURL")) {
            fail("Message is not a confirmation messsage");
          }
         
          String subscriptionUrl = o.getString("SubscribeURL");
         
        resp = CNSTestingUtils.sendHttpMessage(subscriptionUrl, "");
      }
     
      endPoint = queueArn;

      subscribeRequest = new SubscribeRequest();
      subscribeRequest.setEndpoint(endPoint);
      subscribeRequest.setProtocol("cqs");
      subscribeRequest.setTopicArn(topicArn);
      String subscriptionArn2 = cns1.subscribe(subscribeRequest).getSubscriptionArn();
     
      String messageStructure = "json";
      String message = CNSTestingUtils.generateMultiendpointMessageJson(null, null, "test message", httpMessage, null, cqsMessage);

      PublishRequest publishRequest = new PublishRequest();
      publishRequest.setMessageStructure(messageStructure);
      publishRequest.setMessage(message);
      publishRequest.setTopicArn(topicArn);
     
      cns1.publish(publishRequest);
     
      Thread.sleep(1000);

      String resp = CNSTestingUtils.sendHttpMessage(lastMessageUrl, "");

      JSONObject json = new JSONObject(resp);

      String resp_message = json.getString("Message");

      assertTrue("Expected message '" + httpMessage + "', instead found " + resp_message, resp_message.equals(httpMessage));

      ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest();
      receiveMessageRequest.setQueueUrl(queueUrl);
      ReceiveMessageResult result = cqs1.receiveMessage(receiveMessageRequest);
     
      assertTrue("No message found", result.getMessages().size() > 0);
      String msg = result.getMessages().get(0).getBody();
      assertTrue("Expected message '" + cqsMessage + "', instead found " + resp_message, msg.contains(cqsMessage));

      String receiptHandle = result.getMessages().get(0).getReceiptHandle();
      assertTrue("Receipt handle is null", receiptHandle != null);
     
      DeleteMessageRequest deleteMessageRequest = new DeleteMessageRequest();
      deleteMessageRequest.setQueueUrl(queueUrl);
      deleteMessageRequest.setReceiptHandle(receiptHandle);
      cqs1.deleteMessage(deleteMessageRequest);

      httpMessage = "test Http servlet 45554";
      cqsMessage = "test CQS servlet 2758";
     
      message = CNSTestingUtils.generateMultiendpointMessageJson(null, null, "test message", httpMessage, null, cqsMessage);

      publishRequest = new PublishRequest();
      publishRequest.setMessageStructure(messageStructure);
      publishRequest.setMessage(message);
      publishRequest.setTopicArn(topicArn);
     
      cns1.publish(publishRequest);

      Thread.sleep(1000);

      resp = CNSTestingUtils.sendHttpMessage(lastMessageUrl, "");

      json = new JSONObject(resp);
      resp_message = json.getString("Message");

      assertTrue("Expected message '" + httpMessage + "', instead found " + resp_message, resp_message.contains(httpMessage));

      receiveMessageRequest = new ReceiveMessageRequest();
      receiveMessageRequest.setQueueUrl(queueUrl);
      result = cqs1.receiveMessage(receiveMessageRequest);

      assertTrue("No message found", result.getMessages().size() > 0);
      msg = result.getMessages().get(0).getBody();
      assertTrue("Expected message '" + cqsMessage + "', instead found " + resp_message, msg.contains(cqsMessage));

      receiptHandle = result.getMessages().get(0).getReceiptHandle();
      assertTrue("Receipt handle is null", receiptHandle != null);
     
      deleteMessageRequest = new DeleteMessageRequest();
      deleteMessageRequest.setQueueUrl(queueUrl);
      deleteMessageRequest.setReceiptHandle(receiptHandle);
      cqs1.deleteMessage(deleteMessageRequest);
     
      UnsubscribeRequest unsubscribeRequest = new UnsubscribeRequest();
      unsubscribeRequest.setSubscriptionArn(subscriptionArn2);
      cns1.unsubscribe(unsubscribeRequest);
     
    } catch (Exception ex) {
      logger.error("test failed", ex);
      fail(ex.getMessage());
    }
  }    
}
TOP

Related Classes of com.comcast.cns.test.unit.CNSPublishTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.