mirror of
https://github.com/cypherstack/stack_wallet.git
synced 2024-11-17 09:47:37 +00:00
Merge branch 'staging' into rylee-tmp
This commit is contained in:
commit
d7215836b3
3 changed files with 296 additions and 22 deletions
|
@ -335,7 +335,7 @@ class _Step2ViewState extends ConsumerState<Step2View> {
|
|||
),
|
||||
RoundedWhiteContainer(
|
||||
child: Text(
|
||||
"This is the wallet where your BTC will be sent to.",
|
||||
"This is the wallet where your ${model.receiveTicker} will be sent to.",
|
||||
style: STextStyles.label,
|
||||
),
|
||||
),
|
||||
|
|
|
@ -128,11 +128,8 @@ abstract class ChangeNow {
|
|||
.add(Currency.fromJson(Map<String, dynamic>.from(json as Map)));
|
||||
} catch (_) {
|
||||
return ChangeNowResponse(
|
||||
exception: ChangeNowException(
|
||||
"Failed to serialize $json",
|
||||
ChangeNowExceptionType.serializeResponseError,
|
||||
),
|
||||
);
|
||||
exception: ChangeNowException("Failed to serialize $json",
|
||||
ChangeNowExceptionType.serializeResponseError));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -183,11 +180,8 @@ abstract class ChangeNow {
|
|||
Logging.instance.log("getPairedCurrencies exception: $e\n$s",
|
||||
level: LogLevel.Error);
|
||||
return ChangeNowResponse(
|
||||
exception: ChangeNowException(
|
||||
"Error: $jsonArray",
|
||||
ChangeNowExceptionType.serializeResponseError,
|
||||
),
|
||||
);
|
||||
exception: ChangeNowException("Error: $jsonArray",
|
||||
ChangeNowExceptionType.serializeResponseError));
|
||||
}
|
||||
return ChangeNowResponse(value: currencies);
|
||||
} catch (e, s) {
|
||||
|
@ -389,11 +383,8 @@ abstract class ChangeNow {
|
|||
FixedRateMarket.fromJson(Map<String, dynamic>.from(json as Map)));
|
||||
} catch (_) {
|
||||
return ChangeNowResponse(
|
||||
exception: ChangeNowException(
|
||||
"Failed to serialize $json",
|
||||
ChangeNowExceptionType.serializeResponseError,
|
||||
),
|
||||
);
|
||||
exception: ChangeNowException("Failed to serialize $json",
|
||||
ChangeNowExceptionType.serializeResponseError));
|
||||
}
|
||||
}
|
||||
return ChangeNowResponse(value: markets);
|
||||
|
@ -613,11 +604,8 @@ abstract class ChangeNow {
|
|||
fromTicker: stringPair[0], toTicker: stringPair[1]));
|
||||
} catch (_) {
|
||||
return ChangeNowResponse(
|
||||
exception: ChangeNowException(
|
||||
"Failed to serialize $json",
|
||||
ChangeNowExceptionType.serializeResponseError,
|
||||
),
|
||||
);
|
||||
exception: ChangeNowException("Failed to serialize $json",
|
||||
ChangeNowExceptionType.serializeResponseError));
|
||||
}
|
||||
}
|
||||
return ChangeNowResponse(value: pairs);
|
||||
|
|
|
@ -5,8 +5,11 @@ import 'package:flutter_test/flutter_test.dart';
|
|||
import 'package:http/http.dart';
|
||||
import 'package:mockito/annotations.dart';
|
||||
import 'package:mockito/mockito.dart';
|
||||
import 'package:stackwallet/models/exchange/change_now/available_floating_rate_pair.dart';
|
||||
import 'package:stackwallet/models/exchange/change_now/change_now_response.dart';
|
||||
import 'package:stackwallet/models/exchange/change_now/estimated_exchange_amount.dart';
|
||||
import 'package:stackwallet/models/exchange/change_now/exchange_transaction.dart';
|
||||
import 'package:stackwallet/models/exchange/change_now/exchange_transaction_status.dart';
|
||||
import 'package:stackwallet/services/change_now/change_now.dart';
|
||||
|
||||
import 'change_now_sample_data.dart';
|
||||
|
@ -159,7 +162,7 @@ void main() {
|
|||
});
|
||||
|
||||
test(
|
||||
"getPairedCurrencies fails with ChangeNowExceptionType.serializeResponseError",
|
||||
"getPairedCurrencies fails with ChangeNowExceptionType.serializeResponseError A",
|
||||
() async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
@ -261,6 +264,77 @@ void main() {
|
|||
});
|
||||
});
|
||||
|
||||
group("getEstimatedExchangeAmount", () {
|
||||
test("getEstimatedExchangeAmount succeeds", () async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/exchange-amount/42/xmr_btc?api_key=testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response(
|
||||
'{"estimatedAmount": 58.4142873, "transactionSpeedForecast": "10-60", "warningMessage": null}',
|
||||
200));
|
||||
|
||||
final result = await ChangeNow.getEstimatedExchangeAmount(
|
||||
fromTicker: "xmr",
|
||||
toTicker: "btc",
|
||||
fromAmount: Decimal.fromInt(42),
|
||||
apiKey: "testAPIKEY",
|
||||
);
|
||||
|
||||
expect(result.exception, null);
|
||||
expect(result.value == null, false);
|
||||
expect(result.value, isA<EstimatedExchangeAmount>());
|
||||
});
|
||||
|
||||
test(
|
||||
"getEstimatedExchangeAmount fails with ChangeNowExceptionType.serializeResponseError",
|
||||
() async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/exchange-amount/42/xmr_btc?api_key=testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response('{"error": 42}', 200));
|
||||
|
||||
final result = await ChangeNow.getEstimatedExchangeAmount(
|
||||
fromTicker: "xmr",
|
||||
toTicker: "btc",
|
||||
fromAmount: Decimal.fromInt(42),
|
||||
apiKey: "testAPIKEY",
|
||||
);
|
||||
|
||||
expect(result.exception!.type,
|
||||
ChangeNowExceptionType.serializeResponseError);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
|
||||
test("getEstimatedExchangeAmount fails for any other reason", () async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/exchange-amount/42/xmr_btc?api_key=testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response('', 400));
|
||||
|
||||
final result = await ChangeNow.getEstimatedExchangeAmount(
|
||||
fromTicker: "xmr",
|
||||
toTicker: "btc",
|
||||
fromAmount: Decimal.fromInt(42),
|
||||
apiKey: "testAPIKEY",
|
||||
);
|
||||
|
||||
expect(result.exception!.type, ChangeNowExceptionType.generic);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
});
|
||||
|
||||
group("getEstimatedFixedRateExchangeAmount", () {
|
||||
test("getEstimatedFixedRateExchangeAmount succeeds", () async {
|
||||
final client = MockClient();
|
||||
|
@ -479,4 +553,216 @@ void main() {
|
|||
expect(result.value == null, true);
|
||||
});
|
||||
});
|
||||
|
||||
group("createFixedRateExchangeTransaction", () {
|
||||
test("createFixedRateExchangeTransaction succeeds", () async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.post(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/transactions/fixed-rate/testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body:
|
||||
'{"from":"btc","to":"eth","address":"0x57f31ad4b64095347F87eDB1675566DAfF5EC886","amount":"0.3","flow":"fixed-rate","extraId":"","userId":"","contactEmail":"","refundAddress":"","refundExtraId":"","rateId":""}',
|
||||
encoding: null,
|
||||
)).thenAnswer((realInvocation) async => Response(
|
||||
'{"payinAddress": "33eFX2jfeWbXMSmRe9ewUUTrmSVSxZi5cj", "payoutAddress": "0x57f31ad4b64095347F87eDB1675566DAfF5EC886","payoutExtraId": "", "fromCurrency": "btc", "toCurrency": "eth", "refundAddress": "","refundExtraId": "","validUntil": "2019-09-09T14:01:04.921Z","id": "a5c73e2603f40d","amount": 62.9737711}',
|
||||
200));
|
||||
|
||||
final result = await ChangeNow.createFixedRateExchangeTransaction(
|
||||
fromTicker: "btc",
|
||||
toTicker: "eth",
|
||||
receivingAddress: "0x57f31ad4b64095347F87eDB1675566DAfF5EC886",
|
||||
amount: Decimal.parse("0.3"),
|
||||
refundAddress: "",
|
||||
apiKey: "testAPIKEY",
|
||||
rateId: '',
|
||||
);
|
||||
|
||||
expect(result.exception, null);
|
||||
expect(result.value == null, false);
|
||||
expect(result.value, isA<ExchangeTransaction>());
|
||||
});
|
||||
|
||||
test(
|
||||
"createFixedRateExchangeTransaction fails with ChangeNowExceptionType.serializeResponseError",
|
||||
() async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.post(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/transactions/fixed-rate/testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body:
|
||||
'{"from":"btc","to":"eth","address":"0x57f31ad4b64095347F87eDB1675566DAfF5EC886","amount":"0.3","flow":"fixed-rate","extraId":"","userId":"","contactEmail":"","refundAddress":"","refundExtraId":"","rateId":""}',
|
||||
encoding: null,
|
||||
)).thenAnswer((realInvocation) async =>
|
||||
Response('{"id": "a5c73e2603f40d","amount": 62.9737711}', 200));
|
||||
|
||||
final result = await ChangeNow.createFixedRateExchangeTransaction(
|
||||
fromTicker: "btc",
|
||||
toTicker: "eth",
|
||||
receivingAddress: "0x57f31ad4b64095347F87eDB1675566DAfF5EC886",
|
||||
amount: Decimal.parse("0.3"),
|
||||
refundAddress: "",
|
||||
apiKey: "testAPIKEY",
|
||||
rateId: '',
|
||||
);
|
||||
|
||||
expect(result.exception!.type,
|
||||
ChangeNowExceptionType.serializeResponseError);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
|
||||
test("createFixedRateExchangeTransaction fails for any other reason",
|
||||
() async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.post(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/transactions/fixed-rate/testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body:
|
||||
'{"from": "btc","to": "eth","address": "0x57f31ad4b64095347F87eDB1675566DAfF5EC886", "amount": "1.12345","extraId": "", "userId": "","contactEmail": "","refundAddress": "", "refundExtraId": "", "rateId": "" }',
|
||||
encoding: null,
|
||||
)).thenAnswer((realInvocation) async => Response('', 400));
|
||||
|
||||
final result = await ChangeNow.createFixedRateExchangeTransaction(
|
||||
fromTicker: "xmr",
|
||||
toTicker: "btc",
|
||||
receivingAddress: "bc1qu58svs9983e2vuyqh7gq7ratf8k5qehz5k0cn5",
|
||||
amount: Decimal.parse("0.3"),
|
||||
refundAddress:
|
||||
"888tNkZrPN6JsEgekjMnABU4TBzc2Dt29EPAvkRxbANsAnjyPbb3iQ1YBRk1UXcdRsiKc9dhwMVgN5S9cQUiyoogDavup3H",
|
||||
apiKey: "testAPIKEY",
|
||||
rateId: '',
|
||||
);
|
||||
|
||||
expect(result.exception!.type, ChangeNowExceptionType.generic);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
});
|
||||
|
||||
group("getTransactionStatus", () {
|
||||
test("getTransactionStatus succeeds", () async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/transactions/47F87eDB1675566DAfF5EC886/testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response(
|
||||
'{"status": "waiting", "payinAddress": "32Ge2ci26rj1sRGw2NjiQa9L7Xvxtgzhrj", "payoutAddress": "0x57f31ad4b64095347F87eDB1675566DAfF5EC886", "fromCurrency": "btc", "toCurrency": "eth", "id": "50727663e5d9a4", "updatedAt": "2019-08-22T14:47:49.943Z", "expectedSendAmount": 1, "expectedReceiveAmount": 52.31667, "createdAt": "2019-08-22T14:47:49.943Z", "isPartner": false}',
|
||||
200));
|
||||
|
||||
final result = await ChangeNow.getTransactionStatus(
|
||||
id: "47F87eDB1675566DAfF5EC886",
|
||||
apiKey: "testAPIKEY",
|
||||
);
|
||||
|
||||
expect(result.exception, null);
|
||||
expect(result.value == null, false);
|
||||
expect(result.value, isA<ExchangeTransactionStatus>());
|
||||
});
|
||||
|
||||
test(
|
||||
"getTransactionStatus fails with ChangeNowExceptionType.serializeResponseError",
|
||||
() async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/transactions/47F87eDB1675566DAfF5EC886/testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response('{"error": 42}', 200));
|
||||
|
||||
final result = await ChangeNow.getTransactionStatus(
|
||||
id: "47F87eDB1675566DAfF5EC886",
|
||||
apiKey: "testAPIKEY",
|
||||
);
|
||||
|
||||
expect(result.exception!.type,
|
||||
ChangeNowExceptionType.serializeResponseError);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
|
||||
test("getTransactionStatus fails for any other reason", () async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/transactions/47F87eDB1675566DAfF5EC886/testAPIKEY"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response('', 400));
|
||||
|
||||
final result = await ChangeNow.getTransactionStatus(
|
||||
id: "47F87eDB1675566DAfF5EC886",
|
||||
apiKey: "testAPIKEY",
|
||||
);
|
||||
|
||||
expect(result.exception!.type, ChangeNowExceptionType.generic);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
});
|
||||
|
||||
group("getAvailableFloatingRatePairs", () {
|
||||
test("getAvailableFloatingRatePairs succeeds", () async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/market-info/available-pairs?includePartners=false"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async =>
|
||||
Response('["btc_xmr","btc_firo","btc_doge","eth_ltc"]', 200));
|
||||
|
||||
final result = await ChangeNow.getAvailableFloatingRatePairs();
|
||||
|
||||
expect(result.exception, null);
|
||||
expect(result.value == null, false);
|
||||
expect(result.value, isA<List<AvailableFloatingRatePair>>());
|
||||
});
|
||||
|
||||
test(
|
||||
"getAvailableFloatingRatePairs fails with ChangeNowExceptionType.serializeResponseError",
|
||||
() async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/market-info/available-pairs?includePartners=false"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response('{"error": 42}', 200));
|
||||
|
||||
final result = await ChangeNow.getAvailableFloatingRatePairs();
|
||||
|
||||
expect(result.exception!.type,
|
||||
ChangeNowExceptionType.serializeResponseError);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
|
||||
test("getAvailableFloatingRatePairs fails for any other reason", () async {
|
||||
final client = MockClient();
|
||||
ChangeNow.client = client;
|
||||
|
||||
when(client.get(
|
||||
Uri.parse(
|
||||
"https://api.changenow.io/v1/market-info/available-pairs?includePartners=false"),
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
)).thenAnswer((realInvocation) async => Response('', 400));
|
||||
|
||||
final result = await ChangeNow.getAvailableFloatingRatePairs();
|
||||
|
||||
expect(result.exception!.type, ChangeNowExceptionType.generic);
|
||||
expect(result.value == null, true);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue