/**
* personium.io
* Copyright 2014 FUJITSU LIMITED
*
* 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.fujitsu.dc.test.utils;
import java.util.List;
import org.json.simple.JSONObject;
import com.fujitsu.dc.test.unit.core.UrlUtils;
/**
* $batch用のUtilクラス.
*/
public class BatchUtils {
private BatchUtils() {
}
/** バウンダリ文字列. */
public static final String BOUNDARY = "batch_XAmu9BiJJLBa20sRWIq74jp2UlNAVueztqu";
/** 開始バウンダリ文字列. */
public static final String START_BOUNDARY = "--" + BOUNDARY + "\n";
/** 終了バウンダリ文字列. */
public static final String END_BOUNDARY = "--" + BOUNDARY + "--";
/**
* バッチリクエストを実行する.
* @param token トークン(認証スキーマを含む)
* @param cellName Cell名
* @param boxName Box名
* @param colName Collection名
* @param boundary バッチのバウンダリー
* @param body バッチのボディ
* @param code 期待するレスポンスコード
* @return レスポンス
*/
public static TResponse batchRequestAnyAuthScheme(String token,
String cellName,
String boxName,
String colName,
String boundary,
String body,
int code) {
return Http.request("box/odatacol/batch-anyAuthSchema.txt")
.with("cell", cellName)
.with("box", boxName)
.with("collection", colName)
.with("boundary", boundary)
.with("token", token)
.with("body", body)
.returns()
.statusCode(code);
}
/**
* GETリクエストのBody取得.
* @param path パス
* @return GETリクエストのBody
*/
public static String retrieveGetBody(String path) {
return "Content-Type: application/http\n"
+ "Content-Transfer-Encoding:binary\n\n"
+ "GET " + path + "\n"
+ "Host: host\n\n";
}
/**
* INTデータを含むPOSTリクエストのBody取得.
* @param path パス
* @param id ID
* @return POSTリクエストのBody
*/
public static String retrievePostBodyIntData(String path, String id) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{\"__id\":\"" + id + "\",\"Name\":\"testName\",\"intProperty\":123}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* POSTリクエストのBody取得.
* @param path パス
* @param id ID
* @return POSTリクエストのBody
*/
public static String retrievePostBody(String path, String id) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{\"__id\":\"" + id + "\",\"Name\":\"testName\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* Body指定のPOSTリクエストのBody取得.
* @param path パス
* @param body bodyのJSONオブジェクト
* @return POSTリクエストのBody
*/
public static String retrievePostWithBody(String path, JSONObject body) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ body.toJSONString() + "\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* Body指定なしのPOSTリクエストのBody取得.
* @param path パス
* @return POSTリクエストのBody
*/
public static String retrievePostNoneBody(String path) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* $linkのPOSTリクエストのBody取得.
* @param method メソッド
* @param path パス
* @param body 文字列型のbody
* @return リクエストのBody
*/
public static String retrieveLinksPostBody(String method, String path, String body) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ method + " " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ body + "\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* 指定された数の動的プロパティを登録するPOSTリクエストのBody取得.
* @param path パス
* @param id ID
* @param propertyNum プロパティ数
* @return POSTリクエストのBody
*/
@SuppressWarnings("unchecked")
public static String retrievePostBodyOfProperty(String path, String id, int propertyNum) {
JSONObject body = new JSONObject();
body.put("__id", id);
for (int i = 0; i < propertyNum; i++) {
body.put(String.format("dynamicProperty%d", i), "dynamicPropertyValue" + i);
}
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ body.toJSONString() + "\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* ID指定なしのリクエストのBody取得.
* @param path パス
* @param method メソッド
* @return リクエストのBody
*/
public static String retrievePostBodyNoId(String path, String method) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ method + " " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{\"Name\":\"testName\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* JSONフォーマットエラーとなるPOSTリクエストのBody取得.
* @param path パス
* @param id ID
* @return リクエストのBody
*/
public static String retrievePostBodyJsonFormatError(String path, String id) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{{\"__id\":\"" + id + "\",\"Name\":\"testName\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* 指定されたバウンダリを使用するPOSTリクエストのBody取得.
* @param path パス
* @param id ID
* @param boundaryHeader バウンダリヘッダ
* @return リクエストのBody
*/
public static String retrievePostBodyBoundaryHeaderError(String path, String id, String boundaryHeader) {
return boundaryHeader
+ "\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{{\"__id\":\"" + id + "\",\"Name\":\"testName\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* 指定されたチェンジセットを使用するPOSTリクエストのBody取得.
* @param path パス
* @param id ID
* @param changesetHeader チェンジセット
* @return リクエストのBody
*/
public static String retrievePostBodyChangesetHeaderError(String path, String id, String changesetHeader) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ changesetHeader
+ "\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{{\"__id\":\"" + id + "\",\"Name\":\"testName\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* チェンジセットがネストしたPOSTリクエストのBody取得.
* @param path パス
* @param id ID
* @return リクエストのBody
*/
public static String retrieveNestChangesetBody(String path, String id) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: multipart/mixed;"
+ " boundary=changeset_ADUsdsfNmrFSDsd3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBz\n"
+ "Content-Length: 995\n\n"
+ "--changeset_ADUsdsfNmrFSDsd3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBz\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{\"__id\":\"" + id + "\",\"Name\":\"testName\"}\n\n"
+ "--changeset_ADUsdsfNmrFSDsd3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBz--\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* DELETEリクエストのBody取得.
* @param path パス
* @return リクエストのBody
*/
public static String retrieveDeleteBody(String path) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "DELETE " + path + " HTTP/1.1\n"
+ "Host: \n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "If-Match: *\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* LISTリクエストのBody取得.
* @param path パス
* @return リクエストのBody
*/
public static String retrieveListBody(String path) {
return "Content-Type: application/http\n"
+ "Content-Transfer-Encoding:binary\n\n"
+ "GET " + path + "\n"
+ "Host: host\n\n";
}
/**
* PUTリクエストのBody取得.
* @param path パス
* @return リクエストのBody
*/
public static String retrievePutBody(String path) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "PUT " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "If-Match: *\n"
+ "Content-Length: 38\n\n"
+ "{\"Name\":\"testNameUpdated\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* PUTリクエストのBody取得.
* @param path パス
* @param body JSON型のbody
* @return リクエストのBody
*/
public static String retrievePutBody(String path, JSONObject body) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "PUT " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "If-Match: *\n"
+ "Content-Length: 38\n\n"
+ body.toJSONString() + "\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* 数値型を含むPUTリクエストのBody取得.
* @param path パス
* @return リクエストのBody
*/
public static String retrievePutBodyIntData(String path) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "PUT " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "If-Match: *\n"
+ "Content-Length: 38\n\n"
+ "{\"Name\":\"testNameUpdated\",\"intProperty\":\"123abc\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* フィールドエラーとなるPUTリクエストのBody取得.
* @param path パス
* @param unitBody フィールドエラーを発生されるフィールド名
* @return リクエストのBody
*/
public static String retrievePutBodyFieledInvalidError(String path, String unitBody) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "PUT " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "If-Match: *\n"
+ "Content-Length: 38\n\n"
+ "{\"Name\":\"testName\", \"" + unitBody + "\":\"\\\\/Date(0)\\\\/\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* メタデータを指定することによってフィールドエラーとなるPUTリクエストのBody取得.
* @param path パス
* @return リクエストのBody
*/
public static String retrievePutBodyMetadataFieledInvalidError(String path) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "PUT " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "If-Match: *\n"
+ "Content-Length: 38\n\n"
+ "{\"Name\":\"testName\", \"__metadata\":\"test\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* POSTとPUTリクエストのBody取得.
* @param path パス
* @param id ID
* @return リクエストのBody
*/
public static String retrieveMultiRequestBody(String path, String id) {
return "Content-Type: multipart/mixed;"
+ " boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Length: 995\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "POST " + path + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "Content-Length: 38\n\n"
+ "{\"__id\":\"" + id + "\",\"Name\":\"testName\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "PUT " + path + "('" + id + "')" + " HTTP/1.1\n"
+ "Host:\n"
+ "Connection: close\n"
+ "Accept: application/json\n"
+ "Content-Type: application/json\n"
+ "If-Match: *\n"
+ "Content-Length: 38\n\n"
+ "{\"Name\":\"testNameUpdated\"}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* DELETEレスポンスのBody取得.
* @return レスポンスBody
*/
public static String retrieveDeleteResBody() {
return "Content-Type: multipart/mixed; "
+ "boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1\\.1 204 No Content\n"
+ "DataServiceVersion: 2\\.0\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* PUTレスポンスのBody取得.
* @return レスポンスBody
*/
public static String retrievePutResBody() {
return "Content-Type: multipart/mixed; "
+ "boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1.1 204 No Content\n"
+ "ETag: .*\n"
+ "DataServiceVersion: 2.0\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* 400エラー時のPUTレスポンスのBody取得.
* @return レスポンスBody
*/
public static String retrievePutResBody400() {
return "Content-Type: multipart/mixed; "
+ "boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1.1 400 \n"
+ "Content-Type: application/json\n\n"
+ "\\{\"code\":\"PR400-OD-0006\",\"message\":\\{\"lang\":\"en\","
+ "\"value\":\"\\[intProperty\\] field format error.*\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* POSTレスポンスのBody取得.
* @param cell セル
* @param box ボックス
* @param col コレクション
* @param entitySetName エンティティ
* @param id ID
* @return レスポンスBody
*/
public static String retrievePostResBody(String cell, String box, String col, String entitySetName, String id) {
return retrievePostResBody(cell, box, col, entitySetName, id, true);
}
/**
* POSTレスポンスのBody取得.
* @param cell セル
* @param box ボックス
* @param col コレクション
* @param entitySetName エンティティ
* @param id ID
* @param isTerminal isTerminal
* @return レスポンスBody
*/
public static String retrievePostResBody(String cell,
String box,
String col,
String entitySetName,
String id,
boolean isTerminal) {
String uri = UrlUtils.userData(cell, box, col, entitySetName + "\\('" + id + "'\\)");
// TODO ボディのURIのチェック
String terminal = "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
if (!isTerminal) {
terminal = "";
}
return "Content-Type: multipart/mixed; "
+ "boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1.1 201 Created\n"
+ "ETag: .*\n"
+ "DataServiceVersion: 2.0\n"
+ "Content-Type: application/json\n"
+ "Location: " + uri + "\n\n"
+ "\\{\"d\":\\{\"results\":\\{.*\"__metadata\":"
+ "\\{.*,\"etag\":\".*\",\"type\":\".+" + entitySetName + "\"}.*\"__id\":\"" + id
+ "\",.*\\}\\}\\}\n\n"
+ terminal;
}
/**
* $link POSTレスポンスのBody取得.
* @return レスポンスBody
*/
public static String retrieveLinksPostResBody() {
return "Content-Type: multipart/mixed; "
+ "boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1.1 204 No Content\n"
+ "DataServiceVersion: 2.0\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* cahgesetのエラーレスポンスのBody取得.
* @param code レスポンスコード
* @return レスポンスBody
*/
public static String retrieveChangeSetResErrorBody(int code) {
// TODO ボディメッセージのチェック
return "Content-Type: multipart/mixed; "
+ "boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1.1 " + Integer.toString(code) + " \n"
+ "Content-Type: application/json\n\n"
+ ".*\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
/**
* GETレスポンスのBody取得.
* @param type タイプ
* @param id ID
* @return レスポンスBody
*/
public static String retrieveGetResBody(String type, String id) {
// TODO ボディのURIのチェック
return "Content-Type: application/http\n\n"
+ "HTTP/1\\.1 200 OK\n"
+ "DataServiceVersion: 2\\.0\n"
+ "Content-Type: application/json\n\n"
+ "\\{\"d\":\\{\"results\":\\{.*\"__metadata\":"
+ "\\{.*\"etag\":\".*\",\"type\":\".+" + type + "\".*\"\\}.*\\}\\}\\}\n\n";
}
/**
* クエリエラー時のGETレスポンスのBody取得.
* @param code レスポンスコード
* @return レスポンスBody
*/
public static String retrieveQueryOperationResErrorBody(int code) {
// TODO ボディのURIのチェック
return "Content-Type: application/http\n\n"
+ "HTTP/1.1 " + Integer.toString(code) + " \n"
+ "Content-Type: application/json\n\n"
+ ".*\n\n";
}
/**
* LISTレスポンスのBody取得.
* @return レスポンスBody
*/
public static String retrieveListResBody() {
StringBuilder res = new StringBuilder();
res.append("Content-Type: application/http\n\n");
res.append("HTTP/1.1 200 OK\n");
res.append("DataServiceVersion: 2.0\n");
res.append("Content-Type: application/json\n\n");
res.append("\\{\"d\":\\{\"results\":\\[.*");
res.append("\\]\\}\\}\n\n");
return res.toString();
}
/**
* LISTレスポンスのBody取得.
* @param idPrefix IDのプレフィックス
* @return レスポンスBody
*/
public static String retrieveListResBody(List<String> idPrefix) {
StringBuilder res = new StringBuilder();
// TODO ボディのURIのチェック
res.append("Content-Type: application/http\n\n");
res.append("HTTP/1.1 200 OK\n");
res.append("DataServiceVersion: 2.0\n");
res.append("Content-Type: application/json\n\n");
res.append("\\{\"d\":\\{\"results\":\\[");
if (idPrefix != null) {
for (int i = 0; i < idPrefix.size(); i++) {
res.append("\\{.*\"__id\":\"" + idPrefix.get(i) + "[0-9]+\".*");
res.append("\\}");
if (i != idPrefix.size() - 1) {
res.append(",");
}
}
}
res.append("");
res.append("\\]\\}\\}\n\n");
return res.toString();
}
/**
* クエリエラー時のGETレスポンスのBody取得.
* @param idPrefix IDのプレフィックス
* @param navPropName NavigationProperty名
* @param navIdPrefix NavigationProperty側のIDのプレフィックス
* @return レスポンスBody
*/
public static String retrieveListResBodyWithExpand(List<String> idPrefix,
List<String> navPropName,
List<String> navIdPrefix) {
StringBuilder res = new StringBuilder();
// TODO ボディのURIのチェック
res.append("Content-Type: application/http\n\n");
res.append("HTTP/1.1 200 OK\n");
res.append("DataServiceVersion: 2.0\n");
res.append("Content-Type: application/json\n\n");
res.append("\\{\"d\":\\{\"results\":\\[");
if (idPrefix != null) {
for (int i = 0; i < idPrefix.size(); i++) {
res.append("\\{.*\"__id\":\"" + idPrefix.get(i) + "[0-9]+\".*");
if (navPropName != null) {
for (int j = 0; j < navPropName.size(); j++) {
res.append("\"_" + navPropName.get(j) + "\":\\[");
res.append("\\{.*\"__id\":\"" + navIdPrefix.get(j) + "[0-9]+\".*");
res.append("\\}");
if (i != idPrefix.size() - 1) {
res.append(",");
}
}
res.append("\\]");
}
res.append("\\}");
if (i != idPrefix.size() - 1) {
res.append(",");
}
}
}
res.append("");
res.append("\\]\\}\\}\n\n");
return res.toString();
}
/**
* LISTレスポンスのBody取得.
* @param idPrefix IDのプレフィックス
* @param size サイズ
* @return レスポンスBody
*/
public static String retrieveListResBodyWithCount(List<String> idPrefix, int size) {
StringBuilder res = new StringBuilder();
// TODO ボディのURIのチェック
res.append("Content-Type: application/http\n\n");
res.append("HTTP/1.1 200 OK\n");
res.append("DataServiceVersion: 2.0\n");
res.append("Content-Type: application/json\n\n");
res.append("\\{\"d\":\\{\"results\":\\[");
if (idPrefix != null) {
for (int i = 0; i < idPrefix.size(); i++) {
res.append("\\{.*\"__id\":\"" + idPrefix.get(i) + "[0-9]+\".*");
res.append("\\}");
if (i != idPrefix.size() - 1) {
res.append(",");
}
}
}
res.append("");
res.append("\\],\"__count\":\"" + size + "\"}\\}\n\n");
return res.toString();
}
/**
* SupplierのLISTレスポンスのBody取得.
* @param idPrefix IDのプレフィックス
* @return レスポンスBody
*/
public static String retrieveListSupplierResBody(List<String> idPrefix) {
StringBuilder res = new StringBuilder();
// TODO ボディのURIのチェック
res.append("Content-Type: application/http\n\n");
res.append("HTTP/1.1 200 OK\n");
res.append("DataServiceVersion: 2.0\n");
res.append("Content-Type: application/json\n\n");
res.append("\\{\"d\":\\{\"results\":\\[");
for (int i = 0; i < idPrefix.size(); i++) {
res.append("\\{.*\"__id\":\"" + idPrefix.get(i) + "[0-9]+\".*");
res.append("\"_Product\":\\{");
res.append("\"__deferred\":\\{");
res.append("\"uri\":\".*\"");
res.append("\\}");
res.append("\\},\"_Sales\":\\{");
res.append("\"__deferred\":\\{");
res.append("\"uri\":\".*\"");
res.append("\\}");
res.append("\\}");
res.append("\\}");
if (i != idPrefix.size() - 1) {
res.append(",");
}
}
res.append("");
res.append("\\]\\}\\}\n\n");
return res.toString();
}
/**
* 複数リクエストのレスポンスのBody取得.
* @param id id
* @param uri uri
* @return レスポンスBody
*/
public static String retrieveMultiRequestResBody(String id, String uri) {
// TODO ボディのURIのチェック
return "Content-Type: multipart/mixed; "
+ "boundary=changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1.1 201 Created\n"
+ "ETag: .*\n"
+ "DataServiceVersion: 2.0\n"
+ "Location: " + uri + "\n"
+ "Content-Type: application/json\n\n"
+ "\\{\"d\":\\{\"results\":\\{.*\"__metadata\":"
+ "\\{.*\"etag\":\".*\",\"type\":\".+Supplier\".*\\}.*\"__id\":\"" + id + "\".*\\}\\}\\}\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb\n"
+ "Content-Type: application/http\n"
+ "Content-Transfer-Encoding: binary\n\n"
+ "HTTP/1.1 204 No Content\n"
+ "ETag: .*\n"
+ "DataServiceVersion: 2.0\n\n"
+ "--changeset_cLzcDEEVPwvvoxS3yJTFTpRauSK_FAQ6mQtyo0aby93-SDP3lAs2A19a2uBb--\n\n";
}
}