aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wallet/api/wallet.cpp10
-rw-r--r--src/wallet/api/wallet.h2
-rw-r--r--src/wallet/wallet2_api.h17
-rw-r--r--tests/libwallet_api_tests/main.cpp29
4 files changed, 58 insertions, 0 deletions
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
index 440642291..5b68387ea 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -303,6 +303,16 @@ bool WalletImpl::store(const std::string &path)
return m_status == Status_Ok;
}
+string WalletImpl::filename() const
+{
+ return m_wallet->get_wallet_file();
+}
+
+string WalletImpl::keysFilename() const
+{
+ return m_wallet->get_keys_file();
+}
+
bool WalletImpl::init(const std::string &daemon_address, uint64_t upper_transaction_size_limit)
{
clearStatus();
diff --git a/src/wallet/api/wallet.h b/src/wallet/api/wallet.h
index c0fa31003..c402ef53c 100644
--- a/src/wallet/api/wallet.h
+++ b/src/wallet/api/wallet.h
@@ -61,6 +61,8 @@ public:
bool setPassword(const std::string &password);
std::string address() const;
bool store(const std::string &path);
+ std::string filename() const;
+ std::string keysFilename() const;
bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit);
bool connectToDaemon();
void setTrustedDaemon(bool arg);
diff --git a/src/wallet/wallet2_api.h b/src/wallet/wallet2_api.h
index b98bb8661..bf5ddc3c7 100644
--- a/src/wallet/wallet2_api.h
+++ b/src/wallet/wallet2_api.h
@@ -135,7 +135,24 @@ struct Wallet
virtual std::string errorString() const = 0;
virtual bool setPassword(const std::string &password) = 0;
virtual std::string address() const = 0;
+ /*!
+ * \brief store - stores wallet to file.
+ * \param path - main filename to store wallet to. additionally stores address file and keys file.
+ * to store to the same file - just pass empty string;
+ * \return
+ */
virtual bool store(const std::string &path) = 0;
+ /*!
+ * \brief filename - returns wallet filename
+ * \return
+ */
+ virtual std::string filename() const = 0;
+ /*!
+ * \brief keysFilename - returns keys filename. usually this formed as "wallet_filename".keys
+ * \return
+ */
+ virtual std::string keysFilename() const = 0;
+
virtual bool init(const std::string &daemon_address, uint64_t upper_transaction_size_limit) = 0;
virtual bool connectToDaemon() = 0;
virtual void setTrustedDaemon(bool arg) = 0;
diff --git a/tests/libwallet_api_tests/main.cpp b/tests/libwallet_api_tests/main.cpp
index 91636d522..595e3ccfb 100644
--- a/tests/libwallet_api_tests/main.cpp
+++ b/tests/libwallet_api_tests/main.cpp
@@ -210,6 +210,35 @@ TEST_F(WalletManagerTest, WalletManagerOpensWallet)
std::cout << "** seed: " << wallet2->seed() << std::endl;
}
+TEST_F(WalletManagerTest, WalletManagerStoresWallet)
+{
+
+ Bitmonero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG);
+ std::string seed1 = wallet1->seed();
+ wallet1->store("");
+ ASSERT_TRUE(wmgr->closeWallet(wallet1));
+ Bitmonero::Wallet * wallet2 = wmgr->openWallet(WALLET_NAME, WALLET_PASS);
+ ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok);
+ ASSERT_TRUE(wallet2->seed() == seed1);
+}
+
+
+TEST_F(WalletManagerTest, WalletManagerMovesWallet)
+{
+
+ Bitmonero::Wallet * wallet1 = wmgr->createWallet(WALLET_NAME, WALLET_PASS, WALLET_LANG);
+ std::string WALLET_NAME_MOVED = std::string("/tmp/") + WALLET_NAME + ".moved";
+ std::string seed1 = wallet1->seed();
+ ASSERT_TRUE(wallet1->store(WALLET_NAME_MOVED));
+
+ Bitmonero::Wallet * wallet2 = wmgr->openWallet(WALLET_NAME_MOVED, WALLET_PASS);
+ ASSERT_TRUE(wallet2->filename() == WALLET_NAME_MOVED);
+ ASSERT_TRUE(wallet2->keysFilename() == WALLET_NAME_MOVED + ".keys");
+ ASSERT_TRUE(wallet2->status() == Bitmonero::Wallet::Status_Ok);
+ ASSERT_TRUE(wallet2->seed() == seed1);
+}
+
+
/*
TEST_F(WalletManagerTest, WalletManagerChangesPassword)
{