diff options
author | Thomas Winget <tewinget@gmail.com> | 2014-09-17 17:26:51 -0400 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2014-09-23 22:58:21 +0200 |
commit | a5757a628f0da0affae66345a5f3209a44613d56 (patch) | |
tree | 6ece4938a2c6346803346587ec2ea792cbd34ab2 /tests/unit_tests/address_from_url.cpp | |
parent | seed node DNS code updated to use DNSResolver (diff) | |
download | monero-a5757a628f0da0affae66345a5f3209a44613d56.tar.xz |
Monero addres from DNS TXT record implemented, tests pass
Still need to deal with DNSSEC and optional fields in the TXT record.
Diffstat (limited to 'tests/unit_tests/address_from_url.cpp')
-rw-r--r-- | tests/unit_tests/address_from_url.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/tests/unit_tests/address_from_url.cpp b/tests/unit_tests/address_from_url.cpp new file mode 100644 index 000000000..180257189 --- /dev/null +++ b/tests/unit_tests/address_from_url.cpp @@ -0,0 +1,102 @@ +// Copyright (c) 2014, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// FIXME: move this into a full wallet2 unit test suite, if possible + +#include "gtest/gtest.h" + +#include "wallet/wallet2.h" +#include <string> + +TEST(AddressFromTXT, Success) +{ + std::string addr = "46BeWrHpwXmHDpDEUmZBWZfoQpdc6HaERCNmx1pEYL2rAcuwufPN9rXHHtyUA4QVy66qeFQkn6sfK8aHYjA3jk3o1Bv16em"; + + std::string txtr = "oa1:xmr"; + txtr += " recipient_address="; + txtr += addr; + txtr += ";"; + + std::string res = tools::wallet2::address_from_txt_record(txtr); + + EXPECT_STREQ(addr.c_str(), res.c_str()); + + std::string txtr2 = "foobar"; + + txtr2 += txtr; + + txtr2 += "more foobar"; + + res = tools::wallet2::address_from_txt_record(txtr2); + + EXPECT_STREQ(addr.c_str(), res.c_str()); + + std::string txtr3 = "foobar oa1:xmr tx_description=\"Donation for Monero Development Fund\"; "; + txtr3 += "recipient_address="; + txtr3 += addr; + txtr3 += "; foobar"; + + res = tools::wallet2::address_from_txt_record(txtr3); + + EXPECT_STREQ(addr.c_str(), res.c_str()); +} + +TEST(AddressFromTXT, Failure) +{ + std::string txtr = "oa1:xmr recipient_address=not a real address"; + + std::string res = tools::wallet2::address_from_txt_record(txtr); + + ASSERT_STREQ("", res.c_str()); + + txtr += ";"; + + res = tools::wallet2::address_from_txt_record(txtr); + ASSERT_STREQ("", res.c_str()); +} + +TEST(AddressFromURL, Success) +{ + std::string addr = "46BeWrHpwXmHDpDEUmZBWZfoQpdc6HaERCNmx1pEYL2rAcuwufPN9rXHHtyUA4QVy66qeFQkn6sfK8aHYjA3jk3o1Bv16em"; + + bool dnssec_result = false; + std::string res = tools::wallet2::address_from_url("donate.monero.cc", dnssec_result); + + EXPECT_STREQ(addr.c_str(), res.c_str()); +} + +TEST(AddressFromURL, Failure) +{ + bool dnssec_result = false; + + std::string res = tools::wallet2::address_from_url("example.invalid", dnssec_result); + + ASSERT_FALSE(dnssec_result); + + ASSERT_STREQ("", res.c_str()); +} |