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/CredentialCreate.h>
12#include <xrpl/protocol_autogen/transactions/AccountSet.h>
20TEST(TransactionsCredentialCreateTests, BuilderSettersRoundTrip)
23 auto const [publicKey, secretKey] =
49 auto tx = builder.
build(publicKey, secretKey);
52 EXPECT_TRUE(tx.validate(reason)) << reason;
55 EXPECT_FALSE(tx.getSigningPubKey().empty());
56 EXPECT_TRUE(tx.hasTxnSignature());
59 EXPECT_EQ(tx.getAccount(), accountValue);
60 EXPECT_EQ(tx.getSequence(), sequenceValue);
61 EXPECT_EQ(tx.getFee(), feeValue);
65 auto const& expected = subjectValue;
66 auto const actual = tx.getSubject();
71 auto const& expected = credentialTypeValue;
72 auto const actual = tx.getCredentialType();
78 auto const& expected = expirationValue;
79 auto const actualOpt = tx.getExpiration();
80 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfExpiration should be present";
82 EXPECT_TRUE(tx.hasExpiration());
86 auto const& expected = uRIValue;
87 auto const actualOpt = tx.getURI();
88 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfURI should be present";
90 EXPECT_TRUE(tx.hasURI());
97TEST(TransactionsCredentialCreateTests, BuilderFromStTxRoundTrip)
100 auto const [publicKey, secretKey] =
124 initialBuilder.
setURI(uRIValue);
126 auto initialTx = initialBuilder.
build(publicKey, secretKey);
131 auto rebuiltTx = builderFromTx.
build(publicKey, secretKey);
134 EXPECT_TRUE(rebuiltTx.validate(reason)) << reason;
137 EXPECT_EQ(rebuiltTx.getAccount(), accountValue);
138 EXPECT_EQ(rebuiltTx.getSequence(), sequenceValue);
139 EXPECT_EQ(rebuiltTx.getFee(), feeValue);
143 auto const& expected = subjectValue;
144 auto const actual = rebuiltTx.getSubject();
149 auto const& expected = credentialTypeValue;
150 auto const actual = rebuiltTx.getCredentialType();
156 auto const& expected = expirationValue;
157 auto const actualOpt = rebuiltTx.getExpiration();
158 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfExpiration should be present";
163 auto const& expected = uRIValue;
164 auto const actualOpt = rebuiltTx.getURI();
165 ASSERT_TRUE(actualOpt.has_value()) <<
"Optional field sfURI should be present";
172TEST(TransactionsCredentialCreateTests, WrapperThrowsOnWrongTxType)
175 auto const [pk, sk] =
180 auto wrongTx = wrongBuilder.
build(pk, sk);
186TEST(TransactionsCredentialCreateTests, BuilderThrowsOnWrongTxType)
189 auto const [pk, sk] =
194 auto wrongTx = wrongBuilder.
build(pk, sk);
200TEST(TransactionsCredentialCreateTests, OptionalFieldsReturnNullopt)
203 auto const [publicKey, secretKey] =
225 auto tx = builder.
build(publicKey, secretKey);
228 EXPECT_FALSE(tx.hasExpiration());
229 EXPECT_FALSE(tx.getExpiration().has_value());
230 EXPECT_FALSE(tx.hasURI());
231 EXPECT_FALSE(tx.getURI().has_value());
Builder for AccountSet transactions.
AccountSet build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the AccountSet wrapper.
Builder for CredentialCreate transactions.
CredentialCreateBuilder & setExpiration(std::decay_t< typename SF_UINT32::type::value_type > const &value)
Set sfExpiration (SoeOptional).
CredentialCreate build(PublicKey const &publicKey, SecretKey const &secretKey)
Build and return the CredentialCreate wrapper.
CredentialCreateBuilder & setURI(std::decay_t< typename SF_VL::type::value_type > const &value)
Set sfURI (SoeOptional).
Transaction: CredentialCreate.
TEST(TransactionsAccountDeleteTests, BuilderSettersRoundTrip)
UInt32Value canonical_UINT32()
AccountValue canonical_ACCOUNT()
Seed generateSeed(std::string const &passPhrase)
Generate a seed deterministically.
std::pair< PublicKey, SecretKey > generateKeyPair(KeyType type, Seed const &seed)
Generate a key pair deterministically.
AmountValue canonical_AMOUNT()
AccountID calcAccountID(PublicKey const &pk)
void expectEqualField(T const &expected, T const &actual, char const *fieldName)