Package com.streamreduce.rest

Source Code of com.streamreduce.rest.MessageResourceITCase

/*
* Copyright 2012 Nodeable Inc
*
*    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.streamreduce.rest;

import com.streamreduce.AbstractInContainerTestCase;
import com.streamreduce.core.dao.SobaMessageDAO;
import com.streamreduce.core.model.User;
import com.streamreduce.core.model.messages.MessageComment;
import com.streamreduce.core.model.messages.SobaMessage;
import com.streamreduce.rest.dto.response.MessageCommentsResponseDTO;
import com.streamreduce.rest.dto.response.SobaMessageResponseDTO;
import com.streamreduce.util.JSONObjectBuilder;
import net.sf.json.JSONObject;
import org.codehaus.jackson.map.type.TypeFactory;
import org.junit.Ignore;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;
import java.util.Set;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

public class MessageResourceITCase extends AbstractInContainerTestCase {

    @Autowired
    private SobaMessageDAO sobaMessageDAO;

    private String authToken;
    private SobaMessageResponseDTO userMessage;
    private User localUser1;
    private User localUser2;

    @Override
    public void setUp() throws Exception {
        super.setUp();

        localUser1 = new User.Builder()
                .username("local_test_user_1@nodeable.com")
                .password("local_test_user_1@nodeable.com")
                .accountLocked(false)
                .fullname("Local Test User 1")
                .userStatus(User.UserStatus.ACTIVATED)
                .account(testAccount)
                .roles(testUser.getRoles())
                .accountOriginator(false)
                .alias("LocalUser1")
                .build();

        localUser2 = new User.Builder()
                .username("local_test_user_2@nodeable.com")
                .password("local_test_user_2@nodeable.com")
                .accountLocked(false)
                .fullname("Local Test User 2")
                .userStatus(User.UserStatus.ACTIVATED)
                .account(testAccount)
                .roles(testUser.getRoles())
                .accountOriginator(false)
                .alias("LocalUser2")
                .build();

        localUser1 = userService.createUser(localUser1);
        localUser2 = userService.createUser(localUser2);

        // login
        authToken = login(testUsername, testUsername);

        try {
            createUserMessage();
        } catch (Exception e) {
            if (localUser1 != null) {
                userService.deleteUser(localUser1);
            }
            if (localUser2 != null) {
                userService.deleteUser(localUser2);
            }
            e.printStackTrace();
        }
    }


    protected String getUrl() {
        return getPublicApiUrlBase() + "/messages";
    }

    protected void createUserMessage() throws Exception {
        JSONObject json = new JSONObject();

        json.put("message", "This is a bootstrapped message to self and the stream");

        // not such a good idea.
        SobaMessageResponseDTO message = jsonToObject(makeRequest(getUrl(), "POST", json, authToken),
                TypeFactory.defaultInstance().constructType(SobaMessageResponseDTO.class));

        userMessage = message;
    }


    @Test
    @Ignore
    public void testGetAllMessages() throws Exception {
        String response = makeRequest(getUrl(), "GET", null, authToken);
        List<SobaMessageResponseDTO> messages = jsonToObject(response, TypeFactory.defaultInstance().constructCollectionType(List.class,
                SobaMessageResponseDTO.class));
        assertNotNull(messages);

    }


    @Test
    @Ignore
    public void testGetAllMessagesNotLoggedIn() throws Exception {
        String request = makeRequest(getUrl(), "GET", null, null);
        assertTrue(request.contains("No credentials set"));
    }

    @Test
    @Ignore
    public void testAddMessage() throws Exception {
        JSONObject json = new JSONObject();

        json.put("message", "This is a message with no @");

        SobaMessageResponseDTO message = jsonToObject(makeRequest(getUrl(), "POST", json, authToken),
                TypeFactory.defaultInstance().constructType(SobaMessageResponseDTO.class));

        assertNotNull(message);
        assertEquals(getTestUser().getId(), message.getSenderId());
        //
    }

    @Test
    @Ignore
    public void testAddMessageToAnotherUser() throws Exception {
        JSONObject json = new JSONObject();

        json.put("message", "This is a message to @" + localUser1.getAlias());

        SobaMessageResponseDTO message = jsonToObject(makeRequest(getUrl(), "POST", json, authToken),
                TypeFactory.defaultInstance().constructType(SobaMessageResponseDTO.class));

        assertNotNull(message);
        assertEquals(getTestUser().getId(), message.getSenderId());
        //
    }

    @Test
    @Ignore
    public void testDeleteMessageToAnotherUser() throws Exception {
        JSONObject json = new JSONObject();

        json.put("message", "This is a message to @" + localUser1.getAlias());

        SobaMessageResponseDTO message = jsonToObject(makeRequest(getUrl(), "POST", json, authToken),
                TypeFactory.defaultInstance().constructType(SobaMessageResponseDTO.class));

        assertNotNull(message);
        assertEquals(getTestUser().getId(), message.getSenderId());
        //
        // mock remove it
        makeRequest(getUrl() + "/" + message.getId(), "DELETE", json, authToken);

        SobaMessageResponseDTO responseDTO = jsonToObject(makeRequest(getUrl() + "/" + message.getId(), "GET",
                null, authToken),
                TypeFactory.defaultInstance().constructType(SobaMessageResponseDTO.class));

        assertEquals(responseDTO.getPayload(), "message removed by @" + testUser.getAlias());

    }


    @Test
    @Ignore
    public void testGetPrivateMessageById() throws Exception {
        // get one random message
        SobaMessage privateMessage = applicationManager.getMessageService().getAllMessages(getTestUser(), null, null, 1, true, null, null, null, false).get(0);
        SobaMessageResponseDTO responseDTO = jsonToObject(makeRequest(getUrl() + "/" + privateMessage.getId(), "GET",
                null, authToken),
                TypeFactory.defaultInstance().constructType(SobaMessageResponseDTO.class));

        assertNotNull(responseDTO);
        assertEquals(privateMessage.getId(), responseDTO.getMessageId());
    }

    @Test
    @Ignore
    public void testAddCommentToMessage() throws Exception {

        // get the message
        SobaMessage sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        assertEquals(0, sobaMessage.getComments().size());

        JSONObject json = new JSONObject();

        json.put("comment", "Some Dumb Comment");

        String url = getUrl() + "/" + userMessage.getMessageId() + "/comment";
        makeRequest(url, "PUT", json, authToken);

        sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        assertEquals(1, sobaMessage.getComments().size());

    }


    @Test
    @Ignore
    public void testDeleteCommentOnMessage() throws Exception {

        // get the message
        SobaMessage sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        assertEquals(0, sobaMessage.getComments().size());

        JSONObject json = new JSONObject();

        json.put("comment", "Some Dumb Comment");

        String url = getUrl() + "/" + userMessage.getMessageId() + "/comment";
        makeRequest(url, "PUT", json, authToken);

        sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        assertEquals(1, sobaMessage.getComments().size());
        MessageComment messageComment =  sobaMessage.getComments().get(0);

        // now remove (nullify) the comment
        makeRequest(url + "/" + messageComment.getCreated(), "DELETE", json, authToken);

        sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        assertEquals(sobaMessage.getComments().get(0).getComment(), "comment removed by @" + testUser.getAlias());

    }

    @Test
    @Ignore
    public void testGetCommentsForMessage() throws Exception {

        int num = 0;
        SobaMessage sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        sobaMessage.addComment(new MessageComment(getTestUser(), "Some comment from test user"));
        num = sobaMessage.getComments().size();
        applicationManager.getMessageService().updateMessage(getTestUser().getAccount(), sobaMessage);

        String url = getUrl() + "/" + userMessage.getMessageId() + "/comment";
        String response = makeRequest(url, "GET", null, authToken);

        MessageCommentsResponseDTO commentsResponseDTO = jsonToObject(response,
                TypeFactory.defaultInstance().constructType(MessageCommentsResponseDTO.class));

        assertEquals(num, commentsResponseDTO.getComments().size());

    }

    @Test
    @Ignore
    public void testGetTags() throws Exception {
        SobaMessage sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        int num = sobaMessage.getHashtags().size();

        String url = getUrl() + "/" + userMessage.getMessageId() + "/hashtag";
        String response = makeRequest(url, "GET", null, authToken);

        Set<String> tags = jsonToObject(response, TypeFactory.defaultInstance().constructCollectionType(Set.class,
                String.class));

        assertEquals(num, tags.size());

    }

    @Test
    @Ignore
    public void testAddTag() throws Exception {

        SobaMessage sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        int num = sobaMessage.getHashtags().size();

        String url = getUrl() + "/" + userMessage.getMessageId() + "/hashtag";
        JSONObject json = new JSONObject();

        json.put("hashtag", "#foo");

        makeRequest(url, "POST", json, authToken);

        sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        assertEquals(num + 1, sobaMessage.getHashtags().size());

        String response = makeRequest(getUrl() + "/" + userMessage.getMessageId(), "GET", json, authToken);
        SobaMessageResponseDTO sobaMessageResponseDTO = jsonToObject(response,
                TypeFactory.defaultInstance().constructType(SobaMessageResponseDTO.class));

        assertEquals(num + 1, sobaMessageResponseDTO.getHashtags().size());

    }


    @Test
    @Ignore
    public void testRemoveTag() throws Exception {
        SobaMessage sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        sobaMessage.addHashtag("foo");

        int num = sobaMessage.getHashtags().size();

        applicationManager.getMessageService().updateMessage(getTestUser().getAccount(), sobaMessage);

        String url = getUrl() + "/" + userMessage.getMessageId() + "/hashtag/foo";
        makeRequest(url, "DELETE", null, authToken);

        sobaMessage = applicationManager.getMessageService().getMessage(getTestUser().getAccount(),
                userMessage.getMessageId());

        assertEquals(num - 1, sobaMessage.getHashtags().size());
    }


    @Test
    @Ignore
    public void testEmail() throws Exception {
        JSONObject json = new JSONObjectBuilder()
                .add("recipient", "integrations@nodeable.com")
                .add("subject", "Testing email endpoint - subject")
                .add("body", "Testing email endpoint - body")
                .build();
        String url = getUrl() + "/" + userMessage.getMessageId() + "/email";
        makeRequest(url, "POST", json, authToken);
    }


}
TOP

Related Classes of com.streamreduce.rest.MessageResourceITCase

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.