-
Notifications
You must be signed in to change notification settings - Fork 23
/
test_tx_parser.c
172 lines (167 loc) · 8.07 KB
/
test_tx_parser.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <stdint.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <cmocka.h>
#include "stellar/parser.h"
#define MAX_ENVELOPE_SIZE 2048
const char *testcases[] = {
"../testcases/opCreateAccount.raw",
"../testcases/opPaymentAssetNative.raw",
"../testcases/opPaymentAssetAlphanum4.raw",
"../testcases/opPaymentAssetAlphanum12.raw",
"../testcases/opPaymentWithMuxedDestination.raw",
"../testcases/opRestoreFootprint.raw",
"../testcases/opPathPaymentStrictReceive.raw",
"../testcases/opPathPaymentStrictReceiveWithEmptyPath.raw",
"../testcases/opPathPaymentStrictReceiveWithMuxedDestination.raw",
"../testcases/opManageSellOfferCreate.raw",
"../testcases/opManageSellOfferUpdate.raw",
"../testcases/opManageSellOfferDelete.raw",
"../testcases/opCreatePassiveSellOffer.raw",
"../testcases/opSetOptions.raw",
"../testcases/opSetOptionsWithEmptyBody.raw",
"../testcases/opSetOptionsAddPublicKeySigner.raw",
"../testcases/opSetOptionsRemovePublicKeySigner.raw",
"../testcases/opSetOptionsAddHashXSigner.raw",
"../testcases/opSetOptionsRemoveHashXSigner.raw",
"../testcases/opSetOptionsAddPreAuthTxSigner.raw",
"../testcases/opSetOptionsRemovePreAuthTxSigner.raw",
"../testcases/opSetOptionsAddEd25519SignerPayloadSigner.raw",
"../testcases/opSetOptionsRemoveEd25519SignerPayloadSigner.raw",
"../testcases/opChangeTrustAddTrustLine.raw",
"../testcases/opChangeTrustRemoveTrustLine.raw",
"../testcases/opChangeTrustWithLiquidityPoolAssetAddTrustLine.raw",
"../testcases/opChangeTrustWithLiquidityPoolAssetRemoveTrustLine.raw",
"../testcases/opAllowTrustDeauthorize.raw",
"../testcases/opAllowTrustAuthorize.raw",
"../testcases/opAllowTrustAuthorizeToMaintainLiabilities.raw",
"../testcases/opAccountMerge.raw",
"../testcases/opAccountMergeWithMuxedDestination.raw",
"../testcases/opInflation.raw",
"../testcases/opInvokeHostFunctionAssetApprove.raw",
"../testcases/opInvokeHostFunctionScvalsCase0.raw",
"../testcases/opInvokeHostFunctionScvalsCase1.raw",
"../testcases/opInvokeHostFunctionScvalsCase2.raw",
"../testcases/opInvokeHostFunctionAssetTransfer.raw",
"../testcases/opInvokeHostFunctionCreateContractNewAsset.raw",
"../testcases/opInvokeHostFunctionCreateContractWasmId.raw",
"../testcases/opInvokeHostFunctionCreateContractWrapAsset.raw",
"../testcases/opInvokeHostFunctionWithoutArgs.raw",
"../testcases/opInvokeHostFunctionUploadWasm.raw",
"../testcases/opInvokeHostFunctionWithAuth.raw",
"../testcases/opInvokeHostFunctionWithAuthAndNoArgsAndNoSource.raw",
"../testcases/opInvokeHostFunctionWithAuthAndNoArgs.raw",
"../testcases/opInvokeHostFunctionWithoutAuthAndNoSource.raw",
"../testcases/opInvokeHostFunctionTransferXlm.raw",
"../testcases/opInvokeHostFunctionTransferUsdc.raw",
"../testcases/opInvokeHostFunctionApproveUsdc.raw",
"../testcases/opInvokeHostFunctionWithComplexSubInvocation.raw",
"../testcases/opInvokeHostFunctionTestPlugin.raw",
"../testcases/opManageDataAdd.raw",
"../testcases/opManageDataAddWithUnprintableData.raw",
"../testcases/opManageDataRemove.raw",
"../testcases/opBumpSequence.raw",
"../testcases/opManageBuyOfferCreate.raw",
"../testcases/opManageBuyOfferUpdate.raw",
"../testcases/opManageBuyOfferDelete.raw",
"../testcases/opPathPaymentStrictSend.raw",
"../testcases/opPathPaymentStrictSendWithEmptyPath.raw",
"../testcases/opPathPaymentStrictSendWithMuxedDestination.raw",
"../testcases/opCreateClaimableBalance.raw",
"../testcases/opClaimClaimableBalance.raw",
"../testcases/opBeginSponsoringFutureReserves.raw",
"../testcases/opEndSponsoringFutureReserves.raw",
"../testcases/opExtendFootprintTtl.raw",
"../testcases/opRevokeSponsorshipAccount.raw",
"../testcases/opRevokeSponsorshipTrustLineWithAsset.raw",
"../testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.raw",
"../testcases/opRevokeSponsorshipOffer.raw",
"../testcases/opRevokeSponsorshipData.raw",
"../testcases/opRevokeSponsorshipClaimableBalance.raw",
"../testcases/opRevokeSponsorshipLiquidityPool.raw",
"../testcases/opRevokeSponsorshipEd25519PublicKeySigner.raw",
"../testcases/opRevokeSponsorshipHashXSigner.raw",
"../testcases/opRevokeSponsorshipPreAuthTxSigner.raw",
"../testcases/opClawback.raw",
"../testcases/opClawbackWithMuxedFrom.raw",
"../testcases/opClawbackClaimableBalance.raw",
"../testcases/opSetTrustLineFlagsUnauthorized.raw",
"../testcases/opSetTrustLineFlagsAuthorized.raw",
"../testcases/opSetTrustLineFlagsAuthorizedToMaintainLiabilities.raw",
"../testcases/opSetTrustLineFlagsAuthorizedAndClawbackEnabled.raw",
"../testcases/opLiquidityPoolDeposit.raw",
"../testcases/opLiquidityPoolWithdraw.raw",
"../testcases/opWithEmptySource.raw",
"../testcases/opWithMuxedSource.raw",
"../testcases/txMemoNone.raw",
"../testcases/txMemoId.raw",
"../testcases/txMemoText.raw",
"../testcases/txMemoTextUnprintable.raw",
"../testcases/txMemoHash.raw",
"../testcases/txMemoReturnHash.raw",
"../testcases/txCondWithAllItems.raw",
"../testcases/txCondIsNone.raw",
"../testcases/txCondTimeBounds.raw",
"../testcases/txCondTimeBoundsMaxIsZero.raw",
"../testcases/txCondTimeBoundsMinIsZero.raw",
"../testcases/txCondTimeBoundsAreZero.raw",
"../testcases/txCondTimeBoundsIsNone.raw",
"../testcases/txCondLedgerBounds.raw",
"../testcases/txCondLedgerBoundsMaxIsZero.raw",
"../testcases/txCondLedgerBoundsMinIsZero.raw",
"../testcases/txCondLedgerBoundsAreZero.raw",
"../testcases/txCondMinAccountSequence.raw",
"../testcases/txCondMinAccountSequenceAge.raw",
"../testcases/txCondMinAccountSequenceLedgerGap.raw",
"../testcases/txCondExtraSignersWithOneSigner.raw",
"../testcases/txCondExtraSignersWithTwoSigners.raw",
"../testcases/txMultiOperations.raw",
"../testcases/txCustomBaseFee.raw",
"../testcases/txWithMuxedSource.raw",
"../testcases/txNetworkPublic.raw",
"../testcases/txNetworkTestnet.raw",
"../testcases/txNetworkCustom.raw",
"../testcases/feeBumpTx.raw",
"../testcases/feeBumpTxWithMuxedFeeSource.raw",
"../testcases/txSourceOmitSourceEqualSigner.raw",
"../testcases/txSourceOmitSourceNotEqualSigner.raw",
"../testcases/txSourceOmitMuxedSourceEqualSigner.raw",
"../testcases/feeBumpTxOmitFeeSourceEqualSigner.raw",
"../testcases/feeBumpTxOmitFeeSourceNotEqualSigner.raw",
"../testcases/feeBumpTxOmitMuxedFeeSourceEqualSigner.raw",
"../testcases/opSourceOmitTxSourceEqualOpSourceEqualSigner.raw",
"../testcases/opSourceOmitTxSourceEqualOpSourceNotEqualSigner.raw",
"../testcases/opSourceOmitOpSourceEqualSignerNotEqualTxSource.raw",
"../testcases/opSourceOmitTxSourceEqualSignerNotEqualOpSource.raw",
"../testcases/opSourceOmitTxMuxedSourceEqualOpMuxedSourceEqualSigner.raw",
"../testcases/opSourceOmitTxSourceEqualOpMuxedSourceEqualSigner.raw",
"../testcases/opSourceOmitTxMuxedSourceEqualOpSourceEqualSigner.raw",
};
void test_parse_data(void **state) {
const char *filename = (char *) *state;
FILE *file = fopen(filename, "rb");
assert_non_null(file);
envelope_t envelope;
memset(&envelope, 0, sizeof(envelope_t));
uint8_t data[MAX_ENVELOPE_SIZE];
size_t read_count = fread(data, sizeof(char), MAX_ENVELOPE_SIZE, file);
assert_true(parse_transaction_envelope(data, read_count, &envelope));
for (uint8_t i = 0; i < envelope.tx_details.tx.operations_count; i++) {
assert_true(parse_transaction_operation(data, read_count, &envelope, i));
}
}
int main() {
struct CMUnitTest tests[sizeof(testcases) / sizeof(testcases[0])];
for (int i = 0; i < sizeof(testcases) / sizeof(testcases[0]); i++) {
tests[i].name = testcases[i];
tests[i].test_func = test_parse_data;
tests[i].initial_state = (void *) testcases[i];
tests[i].setup_func = NULL;
tests[i].teardown_func = NULL;
}
return cmocka_run_group_tests(tests, NULL, NULL);
}