/*
URIBuilderTest.java
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.message;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat;
/**
* URIBuilderのテスト.
*
* @author NTT DOCOMO, INC.
*/
@RunWith(AndroidJUnit4.class)
public class URIBuilderTest {
/**
* URIBuilderの生成を確認する。
* <pre>
* 【期待する動作】
* ・URIBuilderのインスタンスが生成されること。
* ・DConnectSDKに設定してあるホスト名が設定されていること。
* ・DConnectSDKに設定してあるポート番号が設定されていること。
* ・DConnectSDKに設定してあるアクセストークンが設定されていること。
* </pre>
*/
@Test
public void uriBuilder() {
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
assertThat(builder, is(notNullValue()));
assertThat(builder.getHost(), is(sdk.getHost()));
assertThat(builder.getPort(), is(sdk.getPort()));
assertThat(builder.getAccessToken(), is(sdk.getAccessToken()));
}
/**
* ホスト名を設定できることを確認する。
* <pre>
* 【期待する動作】
* ・設定したホスト名がgetHostで取得できること。
* </pre>
*/
@Test
public void uriBuilder_host() {
final String host = "test.com";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setHost(host);
assertThat(builder.getHost(), is(host));
}
/**
* ホスト名にnullを設定する。
* <pre>
* 【期待する動作】
* ・NullPointerExceptionが発生すること。
* </pre>
*/
@Test(expected = NullPointerException.class)
public void uriBuilder_host_null() {
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setHost(null);
}
/**
* ホスト名にから文字列を設定する。
* <pre>
* 【期待する動作】
* ・IllegalArgumentExceptionが発生すること。
* </pre>
*/
@Test(expected = IllegalArgumentException.class)
public void uriBuilder_host_empty() {
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setHost("");
}
/**
* ポート番号を設定する。
* <pre>
* 【期待する動作】
* ・設定したポート番号がgetPortで取得できること。
* </pre>
*/
@Test
public void uriBuilder_port() {
final int port = 9999;
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setPort(port);
assertThat(builder.getPort(), is(port));
}
/**
* ポート番号に負の値を設定する。
* <pre>
* 【期待する動作】
* ・IllegalArgumentExceptionが発生すること。
* </pre>
*/
@Test(expected = IllegalArgumentException.class)
public void uriBuilder_port_negative() {
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setPort(-1);
}
/**
* ポート番号に65536を設定する。
* <pre>
* 【期待する動作】
* ・IllegalArgumentExceptionが発生すること。
* </pre>
*/
@Test(expected = IllegalArgumentException.class)
public void uriBuilder_port_65536() {
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setPort(65536);
}
/**
* アクセストークンを設定する。
* <pre>
* 【期待する動作】
* ・設定したアクセストークンがgetAccessTokenで取得できること。
* </pre>
*/
@Test
public void uriBuilder_accessToken() {
final String accessToken = "abc";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setAccessToken(accessToken);
assertThat(builder.getAccessToken(), is(accessToken));
}
/**
* アクセストークンにnullを設定する。
* <pre>
* 【期待する動作】
* ・NullPointerExceptionが発生すること。
* </pre>
*/
@Test(expected = NullPointerException.class)
public void uriBuilder_accessToken_null() {
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setAccessToken(null);
}
/**
* serviceIdを設定する。
* <pre>
* 【期待する動作】
* ・設定したserviceIdがgetServiceIdで取得できること。
* </pre>
*/
@Test
public void uriBuilder_serviceId() {
final String serviceId = "test-serviceId";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setServiceId(serviceId);
assertThat(builder.getServiceId(), is(serviceId));
}
/**
* serviceIdにnullを設定する。
* <pre>
* 【期待する動作】
* ・NullPointerExceptionが発生すること。
* </pre>
*/
@Test(expected = NullPointerException.class)
public void uriBuilder_serviceId_null() {
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setServiceId(null);
}
/**
* addParameterで値が設定する。
* <pre>
* 【期待する動作】
* ・設定したkey=valueがgetParameterで取得できること。
* </pre>
*/
@Test
public void uriBuilder_addParameter() {
final String key = "key";
final String value = "value";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.addParameter(key, value);
assertThat(builder.getParameter(key), is(value));
}
/**
* keyにnullを設定してaddParameterを行う。
* <pre>
* 【期待する動作】
* ・NullPointerExceptionが発生すること。
* </pre>
*/
@Test(expected = NullPointerException.class)
public void uriBuilder_addParameter_key_null() {
final String value = "value";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.addParameter(null, value);
}
/**
* valueにnullを設定してaddParameterを行う。
* <pre>
* 【期待する動作】
* ・NullPointerExceptionが発生すること。
* </pre>
*/
@Test(expected = NullPointerException.class)
public void uriBuilder_addParameter_value_null() {
final String key = "key";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.addParameter(key, null);
}
/**
* 同じkeyに対してaddParameterを行う。
* <pre>
* 【期待する動作】
* ・後から設定されたvalueが設定されていること。
* </pre>
*/
@Test
public void uriBuilder_addParameter_duplicate() {
final String key = "key";
final String value1 = "value1";
final String value2 = "value2";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.addParameter(key, value1);
builder.addParameter(key, value2);
assertThat(builder.getParameter(key), is(value2));
}
/**
* keyに対してremoveParameterを行い、値が削除されていることを確認する。
* <pre>
* 【期待する動作】
* ・削除したkeyに対してgetParameterを行い値が取得できないこと。
* </pre>
*/
@Test
public void uriBuilder_removeParameter() {
final String key = "key";
final String value = "value";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.addParameter(key, value);
assertThat(builder.getParameter(key), is(value));
builder.removeParameter(key);
assertThat(builder.getParameter(key), is(nullValue()));
}
/**
* profileが設定できることを確認する。
* <pre>
* 【期待する動作】
* ・設定したプロファイルがgetProfileで取得できること。
* </pre>
*/
@Test
public void uriBuilder_profile() {
final String profile = "profile";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setProfile(profile);
assertThat(builder.getProfile(), is(profile));
}
/**
* interfaceが設定できることを確認する。
* <pre>
* 【期待する動作】
* ・設定したプロファイルがgetInterfaceで取得できること。
* </pre>
*/
@Test
public void uriBuilder_interface() {
final String inter = "inter";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setInterface(inter);
assertThat(builder.getInterface(), is(inter));
}
/**
* attributeが設定できることを確認する。
* <pre>
* 【期待する動作】
* ・設定したプロファイルがgetAttributeで取得できること。
* </pre>
*/
@Test
public void uriBuilder_attribute() {
final String attribute = "attribute";
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken("test-accessToken");
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setAttribute(attribute);
assertThat(builder.getAttribute(), is(attribute));
}
/**
* attributeが設定できることを確認する。
* <pre>
* 【期待する動作】
* ・設定したプロファイルがgetAttributeで取得できること。
* </pre>
*/
@Test
public void uriBuilder_toString() {
final String host = "test.com";
final int port = 12345;
final String profile = "profile";
final String attribute = "attribute";
final String accessToken = "test-accessToken";
final String uri = "http://" + host + ":" + port + "/gotapi/" + profile + "/" + attribute + "?accessToken=" + accessToken;
DConnectSDK sdk = DConnectSDKFactory.create(InstrumentationRegistry.getTargetContext(), DConnectSDKFactory.Type.HTTP);
sdk.setAccessToken(accessToken);
DConnectSDK.URIBuilder builder = sdk.createURIBuilder();
builder.setHost(host);
builder.setPort(port);
builder.setProfile(profile);
builder.setAttribute(attribute);
assertThat(builder.toString(), is(uri));
}
}