/*
FailServiceDiscoveryProfileTestCase.java
Copyright (c) 2014 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.profile.restful.test;
import android.support.test.runner.AndroidJUnit4;
import org.deviceconnect.android.profile.ServiceDiscoveryProfile;
import org.deviceconnect.message.DConnectMessage;
import org.deviceconnect.message.DConnectMessage.ErrorCode;
import org.deviceconnect.message.DConnectResponseMessage;
import org.deviceconnect.message.DConnectSDK;
import org.deviceconnect.profile.DConnectProfileConstants;
import org.deviceconnect.profile.ServiceDiscoveryProfileConstants;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.List;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.Matchers.greaterThan;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
/**
* Network Service Discovery プロファイルの異常系テスト.
* @author NTT DOCOMO, INC.
*/
@RunWith(AndroidJUnit4.class)
public class FailServiceDiscoveryProfileTestCase extends RESTfulDConnectTestCase {
/**
* POSTメソッドでサービスの探索を行う.
*
* <pre>
* 【HTTP通信】
* Method: POST
* Path: /serviceDiscovery
* </pre>
*
* <pre>
* 【期待する動作】
* ・resultに1が返ってくること。
* </pre>
*/
@Test
public void testGetServices001() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile(ServiceDiscoveryProfileConstants.PROFILE_NAME);
DConnectResponseMessage response = mDConnectSDK.post(builder.build(), null);
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_ERROR));
assertThat(response.getErrorCode(), is(ErrorCode.NOT_SUPPORT_ACTION.getCode()));
assertThat(response.getErrorMessage(), is(notNullValue()));
}
/**
* PUTメソッドでサービスの探索を行う.
*
* <pre>
* 【HTTP通信】
* Method: PUT
* Path: /serviceDiscovery
* </pre>
*
* <pre>
* 【期待する動作】
* ・resultに1が返ってくること。
* </pre>
*/
@Test
public void testGetServices002() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile(ServiceDiscoveryProfileConstants.PROFILE_NAME);
DConnectResponseMessage response = mDConnectSDK.put(builder.build(), null);
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_ERROR));
assertThat(response.getErrorCode(), is(ErrorCode.NOT_SUPPORT_ACTION.getCode()));
assertThat(response.getErrorMessage(), is(notNullValue()));
}
/**
* DELETEメソッドでサービスの探索を行う.
*
* <pre>
* 【HTTP通信】
* Method: DELETE
* Path: /serviceDiscovery
* </pre>
*
* <pre>
* 【期待する動作】
* ・resultに1が返ってくること。
* </pre>
*/
@Test
public void testGetServices003() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile(ServiceDiscoveryProfileConstants.PROFILE_NAME);
DConnectResponseMessage response = mDConnectSDK.delete(builder.build());
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_ERROR));
assertThat(response.getErrorCode(), is(ErrorCode.NOT_SUPPORT_ACTION.getCode()));
assertThat(response.getErrorMessage(), is(notNullValue()));
}
/**
* serviceIdを指定してサービスの探索を行う.
*
* <pre>
* 【HTTP通信】
* Method: GET
* Path: /serviceDiscovery?serviceId=xxxx
* </pre>
*
* <pre>
* 【期待する動作】
* ・resultに0が返ってくること。
* ・servicesに少なくとも1つ以上のサービスが発見されること。
* </pre>
*/
@Test
public void testGetServices004() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile(ServiceDiscoveryProfileConstants.PROFILE_NAME);
builder.addParameter(DConnectProfileConstants.PARAM_SERVICE_ID, getServiceId());
DConnectResponseMessage response = mDConnectSDK.get(builder.build());
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_OK));
List services = response.getList(ServiceDiscoveryProfile.PARAM_SERVICES);
assertThat(services, is(notNullValue()));
assertThat(services.size(), is(greaterThan(0)));
for (Object obj : services) {
DConnectMessage service = (DConnectMessage) obj;
String id = service.getString("id");
String name = service.getString("name");
assertThat(id, is(notNullValue()));
assertThat(name, is(notNullValue()));
}
}
/**
* POSTメソッドでサービス追加イベント登録を行う.
*
* <pre>
* 【HTTP通信】
* Method: POST
* Path: /serviceDiscovery/onServiceChange
* </pre>
*
* <pre>
* 【期待する動作】
* ・resultに1が返ってくること。
* </pre>
*/
@Test
public void testOnServiceChangeInvalidMethodPost() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile(ServiceDiscoveryProfileConstants.PROFILE_NAME);
builder.setAttribute(ServiceDiscoveryProfileConstants.ATTRIBUTE_ON_SERVICE_CHANGE);
DConnectResponseMessage response = mDConnectSDK.post(builder.build(), null);
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_ERROR));
assertThat(response.getErrorCode(), is(ErrorCode.NOT_SUPPORT_ACTION.getCode()));
assertThat(response.getErrorMessage(), is(notNullValue()));
}
}