Changeset View
Changeset View
Standalone View
Standalone View
src/qt/test/uritests.cpp
Show All 12 Lines | |||||
#include <QUrl> | #include <QUrl> | ||||
void URITests::uriTestsCashAddr() { | void URITests::uriTestsCashAddr() { | ||||
const auto params = CreateChainParams(CBaseChainParams::MAIN); | const auto params = CreateChainParams(CBaseChainParams::MAIN); | ||||
SendCoinsRecipient rv; | SendCoinsRecipient rv; | ||||
QUrl uri; | QUrl uri; | ||||
QString scheme = QString::fromStdString(params->CashAddrPrefix()); | QString scheme = QString::fromStdString(params->CashAddrPrefix()); | ||||
uri.setUrl(QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?" | uri.setUrl(QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?" | ||||
"req-dontexist=")); | "req-dontexist=")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl(QString( | uri.setUrl( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?dontexist=")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?dontexist=")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == Amount::zero()); | QVERIFY(rv.amount == Amount::zero()); | ||||
uri.setUrl( | uri.setUrl(QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?label=" | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?label=" | |||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3")); | ||||
QVERIFY(rv.label == QString("Wikipedia Example Address")); | QVERIFY(rv.label == QString("Wikipedia Example Address")); | ||||
QVERIFY(rv.amount == Amount::zero()); | QVERIFY(rv.amount == Amount::zero()); | ||||
uri.setUrl(QString( | uri.setUrl( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=0.001")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?amount=0.001")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100000 * SATOSHI); | QVERIFY(rv.amount == 100000 * SATOSHI); | ||||
uri.setUrl(QString( | uri.setUrl( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1.001")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?amount=1.001")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY(rv.amount == 100100000 * SATOSHI); | QVERIFY(rv.amount == 100100000 * SATOSHI); | ||||
uri.setUrl(QString( | uri.setUrl( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=100&" | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?amount=100&" | ||||
"label=Wikipedia Example")); | "label=Wikipedia Example")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3")); | ||||
QVERIFY(rv.amount == int64_t(10000000000) * SATOSHI); | QVERIFY(rv.amount == int64_t(10000000000) * SATOSHI); | ||||
QVERIFY(rv.label == QString("Wikipedia Example")); | QVERIFY(rv.label == QString("Wikipedia Example")); | ||||
uri.setUrl(QString( | uri.setUrl(QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?message=" | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?message=" | |||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
QVERIFY( | QVERIFY( | ||||
GUIUtil::parseBitcoinURI(scheme, | GUIUtil::parseBitcoinURI(scheme, | ||||
"bitcoincash://" | "abc://" | ||||
"qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?" | "qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?" | ||||
"message=Wikipedia Example Address", | "message=Wikipedia Example Address", | ||||
&rv)); | &rv)); | ||||
QVERIFY(rv.address == | QVERIFY(rv.address == | ||||
QString("bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a")); | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3")); | ||||
QVERIFY(rv.label == QString()); | QVERIFY(rv.label == QString()); | ||||
uri.setUrl(QString( | uri.setUrl( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?req-message=" | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?req-message=" | ||||
"Wikipedia Example Address")); | "Wikipedia Example Address")); | ||||
QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl(QString( | uri.setUrl( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1," | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?amount=1," | ||||
"000&label=Wikipedia Example")); | "000&label=Wikipedia Example")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
uri.setUrl(QString( | uri.setUrl( | ||||
"bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?amount=1," | QString("abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?amount=1," | ||||
"000.0&label=Wikipedia Example")); | "000.0&label=Wikipedia Example")); | ||||
QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | QVERIFY(!GUIUtil::parseBitcoinURI(scheme, uri, &rv)); | ||||
} | } | ||||
void URITests::uriTestFormatURI() { | void URITests::uriTestFormatURI() { | ||||
const auto params = CreateChainParams(CBaseChainParams::MAIN); | const auto params = CreateChainParams(CBaseChainParams::MAIN); | ||||
{ | { | ||||
SendCoinsRecipient r; | SendCoinsRecipient r; | ||||
r.address = "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a"; | r.address = "abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3"; | ||||
r.message = "test"; | r.message = "test"; | ||||
QString uri = GUIUtil::formatBitcoinURI(*params, r); | QString uri = GUIUtil::formatBitcoinURI(*params, r); | ||||
QVERIFY(uri == "bitcoincash:qpm2qsznhks23z7629mms6s4cwef74vcwvy22gdx6a?" | QVERIFY(uri == "abc:qpm2qsznhks23z7629mms6s4cwef74vcwvjr9zzhs3?" | ||||
"message=test"); | "message=test"); | ||||
} | } | ||||
{ | { | ||||
// Garbage goes through (address checksum is invalid) | // Garbage goes through (address checksum is invalid) | ||||
SendCoinsRecipient r; | SendCoinsRecipient r; | ||||
r.address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"; | r.address = "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"; | ||||
r.message = "test"; | r.message = "test"; | ||||
QString uri = GUIUtil::formatBitcoinURI(*params, r); | QString uri = GUIUtil::formatBitcoinURI(*params, r); | ||||
QVERIFY(uri == "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=test"); | QVERIFY(uri == "175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?message=test"); | ||||
} | } | ||||
{ | { | ||||
// Legacy addresses are converted. | // Legacy addresses are converted. | ||||
SendCoinsRecipient r; | SendCoinsRecipient r; | ||||
r.address = "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"; | r.address = "12c6DSiU4Rq3P4ZxziKxzrL5LmMBrzjrJX"; | ||||
r.message = "test"; | r.message = "test"; | ||||
QString uri = GUIUtil::formatBitcoinURI(*params, r); | QString uri = GUIUtil::formatBitcoinURI(*params, r); | ||||
QVERIFY(uri == "bitcoincash:qqgekzvw96vq5g57zwdfa5q6g609rrn0ycp33uc325?" | QVERIFY(uri == "abc:qqgekzvw96vq5g57zwdfa5q6g609rrn0ychc7khqqc?" | ||||
"message=test"); | "message=test"); | ||||
} | } | ||||
} | } |