Package com.streamreduce.core.model

Source Code of com.streamreduce.core.model.ConnectionTest

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


import com.streamreduce.connections.AuthType;
import com.streamreduce.connections.ConnectionProvidersForTests;
import com.streamreduce.test.service.TestUtils;
import com.streamreduce.util.JSONObjectBuilder;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.lang.RandomStringUtils;
import org.bson.types.ObjectId;
import org.junit.Assert;
import org.junit.Test;

import static com.streamreduce.connections.AuthType.OAUTH;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

public class ConnectionTest {

    @Test
    public void testBuilderIncludesAuthType() {
        //Unit test to make sure Connection.Builder properly includes authtype in the
        //Connection object.
        Connection c = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build())
                .authType(OAUTH)
                .url("http://someUrl")
                .build();
        assertTrue(c.getAuthType() == OAUTH);
    }

    @Test(expected = IllegalStateException.class)
    public void testBuilderWhenAuthTypeNotSpecified() {
        //Unit test to make sure Connection.Builder.build() throws IllegalStateException when authType isn't specified.
         new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build())
                .url("http://someUrl")
                .build();
    }

    @Test
    public void testBuilderTrimsUrl() {
        //Ensures that a Connection created from a Builder has a trimmed url.
        Connection c = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build())
                .authType(OAUTH)
                .url("  http://someUrl  ")
                .build();
        assertEquals("http://someUrl",c.getUrl());
    }

    @Test
    public void testCreateBuilderFromJson() {
        User u  = new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build();
        u.setId(new ObjectId());

        Connection expected = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(u)
                .credentials(new ConnectionCredentials("user", "password"))
                .url("http://someUrl")
                .authType(AuthType.USERNAME_PASSWORD)
                .build();

        JSONObject json = new JSONObject();
        json.put("alias", expected.getAlias());
        json.put("description", expected.getDescription());
        json.put("visibility",expected.getVisibility());
        json.put("providerId", expected.getProviderId());
        json.put("type", expected.getType());
        json.put("user", u.getId());
        json.put("account",u.getAccount().getId());
        JSONObject credentials = new JSONObject();
        credentials.put("identity",expected.getCredentials().getIdentity());
        credentials.put("credential",expected.getCredentials().getCredential());
        json.put("credentials",credentials);
        json.put("url", expected.getUrl());
        json.put("authType",expected.getAuthType().toString());
        json.put("hashtags",JSONArray.fromObject(expected.getHashtags()));


        Connection actual = new Connection.Builder(json)
                .user(u) //this is cheating, but user usually comes from SecurityService
                .build();
       
        assertEquals(expected, actual);
    }

    @Test
    public void testEquals() {
        User u  = new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build();
        u.setId(new ObjectId());

        Connection expected = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(u)
                .credentials(new ConnectionCredentials("user","password"))
                .url("http://someUrl")
                .authType(AuthType.USERNAME_PASSWORD)
                .build();

        Connection actual = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(u)
                .credentials(new ConnectionCredentials("user","password"))
                .url("http://someUrl")
                .authType(AuthType.USERNAME_PASSWORD)
                .build();
       
        assertEquals(expected,actual);
    }

    @Test
    public void testHashCode() {
        User u  = new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build();
        u.setId(new ObjectId());

        Connection expected = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(u)
                .credentials(new ConnectionCredentials("user","password"))
                .url("http://someUrl")
                .authType(AuthType.USERNAME_PASSWORD)
                .build();
        Connection actual = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(u)
                .credentials(new ConnectionCredentials("user","password"))
                .url("http://someUrl")
                .authType(AuthType.USERNAME_PASSWORD)
                .build();

        assertEquals(expected.hashCode(),actual.hashCode());
    }

    @Test
    public void testConnectionHasNoOutboundConnectionsByDefault() {
        Connection c = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build())
                .url("http://someUrl")
                .authType(AuthType.NONE)
                .build();

         assertEquals(0,c.getOutboundConfigurations().size());
    }

    @Test
    public void testConnectionBuilderWithOneOutboundConnection() {
        User testUser = new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build();

        Connection c = new Connection.Builder()
                .alias("test github" )
                .description("test github" )
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(testUser)
                .url("http://someUrl" )
                .authType(AuthType.NONE)
                .outboundConfigurations(
                        new OutboundConfiguration.Builder()
                                .credentials(new ConnectionCredentials("user", "pass" ))
                                .destination("s3" )
                                .protocol("my.bucket.name" )
                                .namespace("key/prefix/here/" )
                                .dataTypes(OutboundDataType.PROCESSED)
                                .build()
                )
                .build();

        assertEquals(1,c.getOutboundConfigurations().size());
    }

    @Test
    public void testConnectionBuilderSetsInboundConnectionReferenceOnOutboundConnection() {
        User testUser = new User.Builder().username("maynard").account(new Account.Builder().name("Tool").build()).build();

        OutboundConfiguration outboundConfiguration = new OutboundConfiguration.Builder()
                .credentials(new ConnectionCredentials("accessKey", "secretKey" ))
                .destination("s3")
                .protocol("my.bucket.name")
                .namespace("key/prefix/here/")
                .dataTypes(OutboundDataType.PROCESSED)
                .build();


        Connection c = new Connection.Builder()
                .alias("test github")
                .description("test github")
                .visibility(SobaObject.Visibility.PUBLIC)
                .provider(ConnectionProvidersForTests.GITHUB_PROVIDER)
                .user(testUser)
                .url("http://someUrl")
                .authType(AuthType.NONE)
                .outboundConfigurations(outboundConfiguration)
                .build();

        assertEquals(c, outboundConfiguration.getOriginatingConnection());
    }


    @Test
    public void testConnectionMergeWithJson_CopiesAllConnectionCredentialFields() {
        String expectedIdentity = RandomStringUtils.randomAlphanumeric(10);
        String expectedCredential = RandomStringUtils.randomAlphanumeric(10);
        String expectedApiKey = RandomStringUtils.randomAlphanumeric(10);
        String expectedOAuthToken = RandomStringUtils.randomAlphanumeric(10);
        String expectedOAuthTokenSecret = RandomStringUtils.randomAlphanumeric(10);

        Connection connection = TestUtils.createCloudConnection();
        JSONObject jsonObject = new JSONObjectBuilder()
                .add("credentials",new JSONObjectBuilder()
                    .add("identity",expectedIdentity)
                    .add("credential",expectedCredential)
                    .add("api_key",expectedApiKey)
                    .add("oauthToken",expectedOAuthToken)
                    .add("oauthTokenSecret",expectedOAuthTokenSecret)
                       .build())
                .build();

        connection.mergeWithJSON(jsonObject);

        ConnectionCredentials mergedCredentials = connection.getCredentials();
        Assert.assertEquals(expectedIdentity,mergedCredentials.getIdentity());
        Assert.assertEquals(expectedCredential,mergedCredentials.getCredential());
        Assert.assertEquals(expectedApiKey,mergedCredentials.getApiKey());
        Assert.assertEquals(expectedOAuthToken,mergedCredentials.getOauthToken());
        Assert.assertEquals(expectedOAuthTokenSecret,mergedCredentials.getOauthTokenSecret());
    }

}
TOP

Related Classes of com.streamreduce.core.model.ConnectionTest

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.