Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions Tests/UnitTests/TezosKit/RPCResponseHandlerTest.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,83 @@ class RPCResponseHandlerTest: XCTestCase {
static let testParsedString = "success!"
var testParsedStringData: Data? // Above string as raw bytes.

static let testBackTrackedString = """
[{"contents":[{"kind":"transaction","source":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb","fee":"14464","counter":"627017","gas_limit":"139719","storage_limit":"7051","amount":"0","destination":"KT1PuoBCrK7bu9MP7LKZRhjXKZSwvgQkDrCN","parameters":{"entrypoint":"approve","value":{"prim":"Pair","args":[{"string":"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde"},{"int":"1"}]}},"metadata":{"balance_updates":[{"kind":"contract","contract":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb","change":"-14464"},{"kind":"freezer","category":"fees","delegate":"tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU","cycle":182,"change":"14464"}],"operation_result":{"status":"backtracked","storage":{"prim":"Pair","args":[{"int":"239"},{"int":"1000000"}]},"big_map_diff":[{"action":"update","big_map":"239","key_hash":"exprtkFpPpLkPNbxReKT1osWCfseKDUyyxb7URVBaX2Yw1N5Sq86hv","key":{"bytes":"0000ca1c5dd7f6665501b57c692f0726a1db46fd1d18"},"value":{"prim":"Pair","args":[[{"prim":"Elt","args":[{"bytes":"01a8969119375713736a2da93ffad0ae2f0178630100"},{"int":"1"}]}],{"int":"228"}]}}],"consumed_gas":"139619","storage_size":"6794"}}},{"kind":"transaction","source":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb","fee":"62742","counter":"627018","gas_limit":"520845","storage_limit":"21605","amount":"0","destination":"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde","parameters":{"entrypoint":"tokenToXtz","value":{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"string":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb"},{"string":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb"}]},{"prim":"Pair","args":[{"int":"1"},{"int":"39756"}]}]},{"string":"2020-04-27T09:43:41Z"}]}},"metadata":{"balance_updates":[{"kind":"contract","contract":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb","change":"-62742"},{"kind":"freezer","category":"fees","delegate":"tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU","cycle":182,"change":"62742"}],"operation_result":{"status":"backtracked","storage":{"prim":"Pair","args":[{"int":"307"},{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"prim":"None"},{"prim":"None"}]},{"prim":"Pair","args":[{"int":"1580637600"},{"int":"10000000"}]}]},{"prim":"Pair","args":[{"bytes":"01a82322859105a5974ef58b465962428c567a204d00"},{"int":"1511"}]}]}]},"consumed_gas":"467921","storage_size":"15430"},"internal_operation_results":[{"kind":"transaction","source":"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde","nonce":0,"amount":"39756","destination":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb","result":{"status":"backtracked","balance_updates":[{"kind":"contract","contract":"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde","change":"-39756"},{"kind":"contract","contract":"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb","change":"39756"}],"consumed_gas":"10207"}},{"kind":"transaction","source":"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde","nonce":1,"amount":"0","destination":"KT1PuoBCrK7bu9MP7LKZRhjXKZSwvgQkDrCN","parameters":{"entrypoint":"default","value":{"prim":"Right","args":[{"prim":"Pair","args":[{"prim":"Pair","args":[{"bytes":"0000ca1c5dd7f6665501b57c692f0726a1db46fd1d18"},{"bytes":"01a8969119375713736a2da93ffad0ae2f0178630100"}]},{"int":"1"}]}]}},"result":{"status":"failed","errors":[{"kind":"temporary","id":"proto.006-PsCARTHA.gas_exhausted.operation"}]}}]}}],"signature":"edsigtzVs2YoRGaZoDrvug9jKJz7KY7pbJymWqvG2QWxaM3SMECHHNVGEqRAAhAcBnXWBnNk7fzPVA6We1e644Qb2oZxgCR1cYy"}]{
"contents": [{
"kind": "transaction",
"source": "tz1...",
"fee": "0",
"counter": "584586",
"gas_limit": "800000",
"storage_limit": "60000",
"amount": "0",
"destination": "KT1...",
"parameters": {},
"metadata": {
"balance_updates": [],
"operation_result": {
"status": "backtracked",
"storage": {},
"consumed_gas": "67061",
"storage_size": "1355"
},
"internal_operation_results": [{
"kind": "transaction",
"source": "KT1...",
"nonce": 0,
"amount": "25000000",
"destination": "KT1",
"result": {
"status": "backtracked",
"storage": { },
"balance_updates": [ ... ],
"consumed_gas": "37909",
"storage_size": "1342"
}
},
{
"kind": "transaction",
"source": "KT1...",
"nonce": 1,
"amount": "0",
"destination": "KT1...",
"parameters": {
"entrypoint": "checkLimit",
"value": {
"int": "82585938"
}
},
"result": {
"status": "failed",
"errors": [{
"kind": "temporary",
"id": "proto.005-PsBabyM1.michelson_v1.runtime_error",
"contract_handle": "KT1...",
"contract_code": [ ]
}, {
"kind": "temporary",
"id": "proto.005-PsBabyM1.michelson_v1.script_rejected",
"location": 198,
"with": {
"string": ""
}
}]
}
}]
}
}]
}
"""
var testBacktrackedStringData: Data? // Above string as raw bytes

static let gasExhaustedString = "[{\"contents\":[{\"kind\":\"transaction\",\"source\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\",\"fee\":\"14464\",\"counter\":\"627017\",\"gas_limit\":\"139719\",\"storage_limit\":\"7051\",\"amount\":\"0\",\"destination\":\"KT1PuoBCrK7bu9MP7LKZRhjXKZSwvgQkDrCN\",\"parameters\":{\"entrypoint\":\"approve\",\"value\":{\"prim\":\"Pair\",\"args\":[{\"string\":\"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde\"},{\"int\":\"1\"}]}},\"metadata\":{\"balance_updates\":[{\"kind\":\"contract\",\"contract\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\",\"change\":\"-14464\"},{\"kind\":\"freezer\",\"category\":\"fees\",\"delegate\":\"tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU\",\"cycle\":182,\"change\":\"14464\"}],\"operation_result\":{\"status\":\"backtracked\",\"storage\":{\"prim\":\"Pair\",\"args\":[{\"int\":\"239\"},{\"int\":\"1000000\"}]},\"big_map_diff\":[{\"action\":\"update\",\"big_map\":\"239\",\"key_hash\":\"exprtkFpPpLkPNbxReKT1osWCfseKDUyyxb7URVBaX2Yw1N5Sq86hv\",\"key\":{\"bytes\":\"0000ca1c5dd7f6665501b57c692f0726a1db46fd1d18\"},\"value\":{\"prim\":\"Pair\",\"args\":[[{\"prim\":\"Elt\",\"args\":[{\"bytes\":\"01a8969119375713736a2da93ffad0ae2f0178630100\"},{\"int\":\"1\"}]}],{\"int\":\"228\"}]}}],\"consumed_gas\":\"139619\",\"storage_size\":\"6794\"}}},{\"kind\":\"transaction\",\"source\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\",\"fee\":\"62742\",\"counter\":\"627018\",\"gas_limit\":\"520845\",\"storage_limit\":\"21605\",\"amount\":\"0\",\"destination\":\"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde\",\"parameters\":{\"entrypoint\":\"tokenToXtz\",\"value\":{\"prim\":\"Pair\",\"args\":[{\"prim\":\"Pair\",\"args\":[{\"prim\":\"Pair\",\"args\":[{\"string\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\"},{\"string\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\"}]},{\"prim\":\"Pair\",\"args\":[{\"int\":\"1\"},{\"int\":\"39756\"}]}]},{\"string\":\"2020-04-27T09:43:41Z\"}]}},\"metadata\":{\"balance_updates\":[{\"kind\":\"contract\",\"contract\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\",\"change\":\"-62742\"},{\"kind\":\"freezer\",\"category\":\"fees\",\"delegate\":\"tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU\",\"cycle\":182,\"change\":\"62742\"}],\"operation_result\":{\"status\":\"backtracked\",\"storage\":{\"prim\":\"Pair\",\"args\":[{\"int\":\"307\"},{\"prim\":\"Pair\",\"args\":[{\"prim\":\"Pair\",\"args\":[{\"prim\":\"Pair\",\"args\":[{\"prim\":\"None\"},{\"prim\":\"None\"}]},{\"prim\":\"Pair\",\"args\":[{\"int\":\"1580637600\"},{\"int\":\"10000000\"}]}]},{\"prim\":\"Pair\",\"args\":[{\"bytes\":\"01a82322859105a5974ef58b465962428c567a204d00\"},{\"int\":\"1511\"}]}]}]},\"consumed_gas\":\"467921\",\"storage_size\":\"15430\"},\"internal_operation_results\":[{\"kind\":\"transaction\",\"source\":\"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde\",\"nonce\":0,\"amount\":\"39756\",\"destination\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\",\"result\":{\"status\":\"backtracked\",\"balance_updates\":[{\"kind\":\"contract\",\"contract\":\"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde\",\"change\":\"-39756\"},{\"kind\":\"contract\",\"contract\":\"tz1e4hAp7xpjekmXnYe4677ELGA3UxR79EFb\",\"change\":\"39756\"}],\"consumed_gas\":\"10207\"}},{\"kind\":\"transaction\",\"source\":\"KT1PxBTZFsBd1gUXhkTFpncDTjvrKbmTeHde\",\"nonce\":1,\"amount\":\"0\",\"destination\":\"KT1PuoBCrK7bu9MP7LKZRhjXKZSwvgQkDrCN\",\"parameters\":{\"entrypoint\":\"default\",\"value\":{\"prim\":\"Right\",\"args\":[{\"prim\":\"Pair\",\"args\":[{\"prim\":\"Pair\",\"args\":[{\"bytes\":\"0000ca1c5dd7f6665501b57c692f0726a1db46fd1d18\"},{\"bytes\":\"01a8969119375713736a2da93ffad0ae2f0178630100\"}]},{\"int\":\"1\"}]}]}},\"result\":{\"status\":\"failed\",\"errors\":[{\"kind\":\"temporary\",\"id\":\"proto.006-PsCARTHA.gas_exhausted.operation\"}]}}]}}],\"signature\":\"edsigtzVs2YoRGaZoDrvug9jKJz7KY7pbJymWqvG2QWxaM3SMECHHNVGEqRAAhAcBnXWBnNk7fzPVA6We1e644Qb2oZxgCR1cYy\"}]"

public override func setUp() {
super.setUp()

testErrorStringData = RPCResponseHandlerTest.testErrorString.data(using: .utf8)!
testParsedStringData = RPCResponseHandlerTest.testParsedString.data(using: .utf8)!
testBacktrackedStringData = RPCResponseHandlerTest.testBackTrackedString.data(using: .utf8)!
}

public func testHandleResponseWithHTTP400() {
Expand Down Expand Up @@ -107,6 +179,27 @@ class RPCResponseHandlerTest: XCTestCase {
XCTFail()
}
}
public func testHandleResponseWithHTTP200AndBacktrackedOperation() {
let response = httpResponse(with: 200)
let testError = TestError.testError
let result = RPCResponseHandlerTest.responseHandler.handleResponse(
response: response,
data: testBacktrackedStringData,
error: testError,
responseAdapterClass: StringResponseAdapter.self
)

switch result {
case .failure(let tezosKitError):
guard case .operationError = tezosKitError else {
XCTFail("Wrong error type reported")
return
}

case .success:
XCTFail()
}
}

public func testHandleResponseWithHTTP200AndNilErrorAndValidData() {
let response = httpResponse(with: 200)
Expand Down