4#include <gtest/gtest.h>
6#include <protocol_autogen/TestHelpers.h>
8#include <xrpl/protocol/SecretKey.h>
9#include <xrpl/protocol/Seed.h>
10#include <xrpl/protocol/STTx.h>
11#include <xrpl/protocol_autogen/transactions/VaultCreate.h>
12#include <xrpl/protocol_autogen/transactions/AccountSet.h>
20TEST(TransactionsVaultCreateTests, BuilderSettersRoundTrip)
23 auto const [publicKey, secretKey] =
55 auto tx = builder.
build(publicKey, secretKey);
58 EXPECT_TRUE(tx.validate(reason)) << reason;
61 EXPECT_FALSE(tx.getSigningPubKey().empty());
62 EXPECT_TRUE(tx.hasTxnSignature());
65 EXPECT_EQ(tx.getAccount(), accountValue);
66 EXPECT_EQ(tx.getSequence(), sequenceValue);
67 EXPECT_EQ(tx.getFee(), feeValue);
71 auto const& expected = assetValue;
72 auto const actual = tx.getAsset();
78 auto const& expected = assetsMaximumValue;
79 auto const actualOpt = tx.getAssetsMaximum();
80 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfAssetsMaximum should be present";
82 EXPECT_TRUE(tx.hasAssetsMaximum());
86 auto const& expected = mPTokenMetadataValue;
87 auto const actualOpt = tx.getMPTokenMetadata();
88 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfMPTokenMetadata should be present";
90 EXPECT_TRUE(tx.hasMPTokenMetadata());
94 auto const& expected = domainIDValue;
95 auto const actualOpt = tx.getDomainID();
96 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfDomainID should be present";
98 EXPECT_TRUE(tx.hasDomainID());
102 auto const& expected = withdrawalPolicyValue;
103 auto const actualOpt = tx.getWithdrawalPolicy();
104 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfWithdrawalPolicy should be present";
106 EXPECT_TRUE(tx.hasWithdrawalPolicy());
110 auto const& expected = dataValue;
111 auto const actualOpt = tx.getData();
112 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfData should be present";
114 EXPECT_TRUE(tx.hasData());
118 auto const& expected = scaleValue;
119 auto const actualOpt = tx.getScale();
120 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfScale should be present";
122 EXPECT_TRUE(tx.hasScale());
129TEST(TransactionsVaultCreateTests, BuilderFromStTxRoundTrip)
132 auto const [publicKey, secretKey] =
161 initialBuilder.
setData(dataValue);
162 initialBuilder.
setScale(scaleValue);
164 auto initialTx = initialBuilder.
build(publicKey, secretKey);
169 auto rebuiltTx = builderFromTx.
build(publicKey, secretKey);
172 EXPECT_TRUE(rebuiltTx.validate(reason)) << reason;
175 EXPECT_EQ(rebuiltTx.getAccount(), accountValue);
176 EXPECT_EQ(rebuiltTx.getSequence(), sequenceValue);
177 EXPECT_EQ(rebuiltTx.getFee(), feeValue);
181 auto const& expected = assetValue;
182 auto const actual = rebuiltTx.getAsset();
188 auto const& expected = assetsMaximumValue;
189 auto const actualOpt = rebuiltTx.getAssetsMaximum();
190 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfAssetsMaximum should be present";
195 auto const& expected = mPTokenMetadataValue;
196 auto const actualOpt = rebuiltTx.getMPTokenMetadata();
197 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfMPTokenMetadata should be present";
202 auto const& expected = domainIDValue;
203 auto const actualOpt = rebuiltTx.getDomainID();
204 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfDomainID should be present";
209 auto const& expected = withdrawalPolicyValue;
210 auto const actualOpt = rebuiltTx.getWithdrawalPolicy();
211 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfWithdrawalPolicy should be present";
216 auto const& expected = dataValue;
217 auto const actualOpt = rebuiltTx.getData();
218 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfData should be present";
223 auto const& expected = scaleValue;
224 auto const actualOpt = rebuiltTx.getScale();
225 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfScale should be present";
232TEST(TransactionsVaultCreateTests, WrapperThrowsOnWrongTxType)
235 auto const [pk, sk] =
240 auto wrongTx = wrongBuilder.
build(pk, sk);
246TEST(TransactionsVaultCreateTests, BuilderThrowsOnWrongTxType)
249 auto const [pk, sk] =
254 auto wrongTx = wrongBuilder.
build(pk, sk);
260TEST(TransactionsVaultCreateTests, OptionalFieldsReturnNullopt)
263 auto const [publicKey, secretKey] =
283 auto tx = builder.
build(publicKey, secretKey);
286 EXPECT_FALSE(tx.hasAssetsMaximum());
287 EXPECT_FALSE(tx.getAssetsMaximum().has_value());
288 EXPECT_FALSE(tx.hasMPTokenMetadata());
289 EXPECT_FALSE(tx.getMPTokenMetadata().has_value());
290 EXPECT_FALSE(tx.hasDomainID());
291 EXPECT_FALSE(tx.getDomainID().has_value());
292 EXPECT_FALSE(tx.hasWithdrawalPolicy());
293 EXPECT_FALSE(tx.getWithdrawalPolicy().has_value());
294 EXPECT_FALSE(tx.hasData());
295 EXPECT_FALSE(tx.getData().has_value());
296 EXPECT_FALSE(tx.hasScale());
297 EXPECT_FALSE(tx.getScale().has_value());
Builder for AccountSet transactions.
AccountSet build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the AccountSet wrapper.
Builder for VaultCreate transactions.
VaultCreateBuilder & setWithdrawalPolicy(std::decay_t< typename SF_UINT8::type::value_type > const &value)
Set sfWithdrawalPolicy (SoeOptional).
VaultCreateBuilder & setDomainID(std::decay_t< typename SF_UINT256::type::value_type > const &value)
Set sfDomainID (SoeOptional).
VaultCreateBuilder & setMPTokenMetadata(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfMPTokenMetadata (SoeOptional).
VaultCreateBuilder & setData(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfData (SoeOptional).
VaultCreate build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the VaultCreate wrapper.
VaultCreateBuilder & setScale(std::decay_t< typename SF_UINT8::type::value_type > const &value)
Set sfScale (SoeOptional).
VaultCreateBuilder & setAssetsMaximum(std::decay_t< typename SF_NUMBER::type::value_type > const &value)
Set sfAssetsMaximum (SoeOptional).
Transaction: VaultCreate.
TEST(TransactionsAccountDeleteTests, BuilderSettersRoundTrip)
UInt256Value canonical_UINT256()
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
IssueValue canonical_ISSUE()
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
UInt8Value canonical_UINT8()
AmountValue canonical_AMOUNT()
AccountID calcAccountID(PublicKey const &pk)
NumberValue canonical_NUMBER()
void expectEqualField(T const &expected, T const &actual, char const *fieldName)