Package com.comcast.cns.test.unit

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

/**
* 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.*;

import java.util.Date;

import com.comcast.cmb.common.controller.CMBControllerServlet;
import com.comcast.cmb.common.persistence.PersistenceFactory;
import com.comcast.cmb.common.util.Util;
import com.comcast.cns.model.CNSMessage;
import com.comcast.cns.model.CNSMessage.CNSMessageStructure;

import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class CNSMessageTest {

  private static Logger log = Logger.getLogger(CNSMessageTest.class);

  @Before
  public void setup() throws Exception {
    Util.initLog4jTest();
    CMBControllerServlet.valueAccumulator.initializeAllCounters();
    PersistenceFactory.reset();
  }

  @Test
  public void testMessage() {

    CNSMessage msg = new CNSMessage();
    msg.generateMessageId();
        msg.setTimestamp(new Date());
    msg.setUserId("test");

    try {
      msg.checkIsValid();
      fail("Should have thrown an invalid message exception");
    } catch(Exception e) {
    }

    msg.setMessage("test message");

    try {
      msg.checkIsValid();
      fail("Should have thrown and invalid message expection");
    } catch(Exception e) {
    }

    msg.setTopicArn("test-topic-arn");
   
    try {
      msg.checkIsValid();           
    } catch (Exception e) {
      fail("Should NOT have thrown and invalid message expection: " + e.getMessage());
    }
   
    if (!msg.equals(msg)) {
      fail("Equals not reflexive for message");
    }

    msg.setMessage("test message");

    msg.setMessageStructure(CNSMessageStructure.json);
   
    try {
      msg.checkIsValid();
      fail("Should have thrown expection since message is not JSON");
    } catch (Exception e) {
     
    }

    msg.setMessage("{\"bogus\":\"val\"}");
   
    try {
      msg.checkIsValid();
      fail("Should have thrown expection since message is not JSON");
    } catch (Exception e) {
    }

    msg.setMessage("{\"email\"}:\"val\"}");

    try {
      msg.checkIsValid();
      fail("Should have thrown expection since message default is not specified");
    } catch (Exception e) {
    }

    msg.setMessage("{\"default\":\"send please\",\"email-json\":\"send in json\",\"email\":\"send in email\"}");
   
    try {
      msg.checkIsValid();           
    } catch(Exception e){
      fail("Should NOT have thrown expection: " + e.getMessage());
    }
   
    log.info(msg);

    StringBuffer sb = new StringBuffer();
   
    for (int i = 0; i < 100; i++) {
      sb.append('a');
    }
   
    msg.setSubject(sb.toString());
   
    try {
      msg.checkIsValid();
      fail("Should have thrown expection since message subject is too long");
    } catch(Exception e) {
    }
  }

  public static CNSMessage getMessage(String msg, CNSMessageStructure structure, String subject, String topicArn, String userId) {
   
    CNSMessage message = new CNSMessage();
        message.setTimestamp(new Date());
    message.setMessage(msg);
    message.setMessageStructure(structure);
    message.setSubject(subject);
    message.setTopicArn(topicArn);
    message.setUserId(userId);
    message.setMessageId("test-message-id1");
   
    return message;
  }

  @Test
  public void testSerializeAndDeserializeMessage() {

    CNSMessage p1 = getMessage("test", CNSMessageStructure.json, "test", "test-arn", "test-pub-userId");

    String str = p1.serialize();

    CNSMessage rec = CNSMessage.parseInstance(str);
   
    if (!p1.equals(rec)) {
      fail("Messages not equals after serialize / deserialize");
    }

    //null subject
   
    p1 = getMessage("test", CNSMessageStructure.json, null, "test-arn", "test-pub-userId");
    str = p1.serialize();

    rec = CNSMessage.parseInstance(str);
   
    if (!p1.equals(rec)) {
      fail("Messages not equals after serialize / deserialize");
    }

    //\n in message

    p1 = getMessage("testing \n 1 \n 2 \n 3<html>", CNSMessageStructure.json, "subject", "test-arn", "test-pub-userId");
    str = p1.serialize();

    rec = CNSMessage.parseInstance(str);
    if (!p1.equals(rec)) {
      fail("Messages not equals after serialize / deserialize");
    }
  }   

  @After   
  public void tearDown() {
    CMBControllerServlet.valueAccumulator.deleteAllCounters();
  }
}
TOP

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

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.