/*
MultipartTest.java
Copyright (c) 2014 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.manager.test;
import android.support.test.runner.AndroidJUnit4;
import org.deviceconnect.android.profile.restful.test.RESTfulDConnectTestCase;
import org.deviceconnect.message.DConnectMessage;
import org.deviceconnect.message.DConnectResponseMessage;
import org.deviceconnect.message.DConnectSDK;
import org.deviceconnect.message.entity.BinaryEntity;
import org.deviceconnect.message.entity.MultipartEntity;
import org.deviceconnect.message.entity.StringEntity;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
/**
* リクエストのマルチパート解析処理のテスト.
* @author NTT DOCOMO, INC.
*/
@RunWith(AndroidJUnit4.class)
public class MultipartTest extends RESTfulDConnectTestCase {
/**
* POSTリクエストパラメータをマルチパートで指定可能であることのテスト.
* <pre>
* Method: POST
* Path: /notification/notify
* Body: serviceId=xxxx&type=0&accessToken=xxxx
* </pre>
* <pre>
* 【期待する動作】
* ・resultに0が返ってくること。
* </pre>
*/
@Test
public void testParsingMultipartAsRequestParametersMethodPost() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile("dataTest");
MultipartEntity body = new MultipartEntity();
body.add("serviceId", new StringEntity(getServiceId()));
body.add("accessToken", new StringEntity(getAccessToken()));
DConnectResponseMessage response = mDConnectSDK.post(builder.build(), body);
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_OK));
}
/**
* PUTリクエストパラメータをマルチパートで指定可能であることのテスト.
* <pre>
* Method: PUT
* Path: /deviceOrientation/onDeviceOrientation
* Body: serviceId=xxxx&sessionKey=xxxx&accessToken=xxxx
* </pre>
* <pre>
* 【期待する動作】
* ・resultに0が返ってくること。
* </pre>
*/
@Test
public void testParsingMultipartAsRequestParametersMethodPut() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile("dataTest");
MultipartEntity body = new MultipartEntity();
body.add("serviceId", new StringEntity(getServiceId()));
body.add("accessToken", new StringEntity(getAccessToken()));
DConnectResponseMessage response = mDConnectSDK.put(builder.build(), body);
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_OK));
}
/**
* 0バイトのファイルも送信可能であることのテスト.
* <pre>
* Method: POST
* Path: /file/send?serviceId=xxxx&filename=xxxx
* </pre>
* <pre>
* 【期待する動作】
* ・resultに0が返ってくること。
* </pre>
*/
@Test
public void testSendZeroByteFile() {
DConnectSDK.URIBuilder builder = mDConnectSDK.createURIBuilder();
builder.setProfile("dataTest");
builder.addParameter("serviceId", getServiceId());
builder.addParameter("accessToken", getAccessToken());
MultipartEntity body = new MultipartEntity();
body.add("data", new BinaryEntity(new byte[0]));
DConnectResponseMessage response = mDConnectSDK.post(builder.build(), body);
assertThat(response, is(notNullValue()));
assertThat(response.getResult(), is(DConnectMessage.RESULT_OK));
assertThat(response.getInt("fileSize"), is(0));
}
}