rippled
Loading...
Searching...
No Matches
apply_test.cpp
1// Copyright (c) 2020 Dev Null Productions
2
3#include <test/jtx/Env.h>
4
5#include <xrpld/app/tx/apply.h>
6
7#include <xrpl/basics/StringUtilities.h>
8#include <xrpl/protocol/Feature.h>
9
10namespace ripple {
11
13{
14public:
15 void
16 run() override
17 {
18 testcase("Require Fully Canonicial Signature");
20 }
21
22 void
24 {
25 // Construct a payments w/out a fully-canonical tx
26 std::string const non_fully_canonical_tx =
27 "12000022000000002400000001201B00497D9C6140000000000F6950684000000"
28 "00000000C732103767C7B2C13AD90050A4263745E4BAB2B975417FA22E87780E1"
29 "506DDAF21139BE74483046022100E95670988A34C4DB0FA73A8BFD6383872AF43"
30 "8C147A62BC8387406298C3EADC1022100A7DC80508ED5A4750705C702A81CBF9D"
31 "2C2DC3AFEDBED37BBCCD97BC8C40E08F8114E25A26437D923EEF4D6D815DF9336"
32 "8B62E6440848314BB85996936E4F595287774684DC2AC6266024BEF";
33
34 auto ret = strUnHex(non_fully_canonical_tx);
35 SerialIter sitTrans(makeSlice(*ret));
36 STTx const tx = *std::make_shared<STTx const>(std::ref(sitTrans));
37
38 {
39 test::jtx::Env no_fully_canonical(
40 *this,
42 featureRequireFullyCanonicalSig);
43
45 no_fully_canonical.app().getHashRouter(),
46 tx,
47 no_fully_canonical.current()->rules(),
48 no_fully_canonical.app().config())
49 .first;
50
52 fail("Non-Fully canoncial signature was not permitted");
53 }
54
55 {
56 test::jtx::Env fully_canonical(
58
60 fully_canonical.app().getHashRouter(),
61 tx,
62 fully_canonical.current()->rules(),
63 fully_canonical.app().config())
64 .first;
66 fail("Non-Fully canoncial signature was permitted");
67 }
68
69 pass();
70 }
71};
72
73BEAST_DEFINE_TESTSUITE(Apply, tx, ripple);
74
75} // namespace ripple
A testsuite class.
Definition suite.h:52
void pass()
Record a successful test condition.
Definition suite.h:508
testcase_t testcase
Memberspace for declaring test cases.
Definition suite.h:152
void fail(String const &reason, char const *file, int line)
Record a failure.
Definition suite.h:530
virtual Config & config()=0
virtual HashRouter & getHashRouter()=0
void testFullyCanonicalSigs()
void run() override
Runs the suite.
A transaction testing environment.
Definition Env.h:102
std::shared_ptr< OpenView const > current() const
Returns the current ledger.
Definition Env.h:312
Application & app()
Definition Env.h:242
T is_same_v
TER valid(STTx const &tx, ReadView const &view, AccountID const &src, beast::Journal j)
FeatureBitset testable_amendments()
Definition Env.h:55
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition algorithm.h:6
std::optional< Blob > strUnHex(std::size_t strSize, Iterator begin, Iterator end)
std::enable_if_t< std::is_same< T, char >::value||std::is_same< T, unsigned char >::value, Slice > makeSlice(std::array< T, N > const &a)
Definition Slice.h:225
Validity
Describes the pre-processing validity of a transaction.
Definition apply.h:22
@ Valid
Signature and local checks are good / passed.
std::pair< Validity, std::string > checkValidity(HashRouter &router, STTx const &tx, Rules const &rules, Config const &config)
Checks transaction signature and local checks.
Definition apply.cpp:25
T ref(T... args)