test_sdk1 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CONTRIBUTING.md +1 -0
- data/LICENSE +201 -0
- data/README.md +147 -0
- data/SECURITY.md +12 -0
- data/lib/crypto/00_asymmetric_key.rb +95 -0
- data/lib/crypto/01_ed25519.rb +67 -0
- data/lib/crypto/asymmetric_key.rb +87 -0
- data/lib/crypto/ed25519_key.rb +44 -0
- data/lib/crypto/key_pair.rb +40 -0
- data/lib/crypto/keys.rb +7 -0
- data/lib/crypto/secp256k1_key.rb +0 -0
- data/lib/crypto/test_ed25519_key.rb +44 -0
- data/lib/entity/account.rb +45 -0
- data/lib/entity/action_thresholds.rb +25 -0
- data/lib/entity/associated_key.rb +24 -0
- data/lib/entity/auction_state.rb +36 -0
- data/lib/entity/bid.rb +24 -0
- data/lib/entity/bid_info.rb +51 -0
- data/lib/entity/contract.rb +47 -0
- data/lib/entity/contract_package.rb +41 -0
- data/lib/entity/contract_version.rb +33 -0
- data/lib/entity/delegator.rb +37 -0
- data/lib/entity/deploy.rb +44 -0
- data/lib/entity/deploy_approval.rb +24 -0
- data/lib/entity/deploy_executable.rb +162 -0
- data/lib/entity/deploy_executable_item_internal.rb +26 -0
- data/lib/entity/deploy_executable_transfer.rb +50 -0
- data/lib/entity/deploy_hash.rb +16 -0
- data/lib/entity/deploy_header.rb +60 -0
- data/lib/entity/deploy_info.rb +44 -0
- data/lib/entity/deploy_named_argument.rb +19 -0
- data/lib/entity/deploy_transfer.rb +10 -0
- data/lib/entity/disabled_version.rb +26 -0
- data/lib/entity/era_info.rb +18 -0
- data/lib/entity/era_summary.rb +44 -0
- data/lib/entity/era_validator.rb +23 -0
- data/lib/entity/executable_deploy_item.rb +11 -0
- data/lib/entity/group.rb +25 -0
- data/lib/entity/module_bytes.rb +50 -0
- data/lib/entity/peer.rb +25 -0
- data/lib/entity/seigniorage_allocation.rb +18 -0
- data/lib/entity/stored_contract_by_hash.rb +50 -0
- data/lib/entity/stored_contract_by_name.rb +50 -0
- data/lib/entity/stored_value.rb +57 -0
- data/lib/entity/stored_versioned_contract_by_hash.rb +61 -0
- data/lib/entity/stored_versioned_contract_by_name.rb +61 -0
- data/lib/entity/transfer.rb +65 -0
- data/lib/entity/validator_weight.rb +23 -0
- data/lib/entity/vesting_schedule.rb +22 -0
- data/lib/include.rb +18 -0
- data/lib/rpc/rpc.rb +227 -0
- data/lib/rpc/rpc_client.rb +233 -0
- data/lib/rpc/rpc_error.rb +79 -0
- data/lib/serialization/cl_type_serializer.rb +76 -0
- data/lib/serialization/cl_value_bytes_parsers.rb +498 -0
- data/lib/serialization/cl_value_serializer.rb +259 -0
- data/lib/serialization/deploy_approval_serializer.rb +15 -0
- data/lib/serialization/deploy_executable_serializer.rb +27 -0
- data/lib/serialization/deploy_header_serializer.rb +49 -0
- data/lib/serialization/deploy_named_arg_serializer.rb +19 -0
- data/lib/serialization/deploy_serializer.rb +268 -0
- data/lib/serialization/test.rb +431 -0
- data/lib/test_sdk1.rb +289 -0
- data/lib/types/cl_account_hash.rb +24 -0
- data/lib/types/cl_account_hash_type.rb +22 -0
- data/lib/types/cl_any.rb +25 -0
- data/lib/types/cl_any_type.rb +22 -0
- data/lib/types/cl_bool.rb +32 -0
- data/lib/types/cl_bool_type.rb +35 -0
- data/lib/types/cl_byte_array.rb +25 -0
- data/lib/types/cl_byte_array_type.rb +27 -0
- data/lib/types/cl_i32.rb +26 -0
- data/lib/types/cl_i32_type.rb +26 -0
- data/lib/types/cl_i64.rb +26 -0
- data/lib/types/cl_i64_type.rb +27 -0
- data/lib/types/cl_key.rb +39 -0
- data/lib/types/cl_key_type.rb +27 -0
- data/lib/types/cl_list.rb +25 -0
- data/lib/types/cl_list_type.rb +26 -0
- data/lib/types/cl_map.rb +25 -0
- data/lib/types/cl_map_type.rb +26 -0
- data/lib/types/cl_option.rb +33 -0
- data/lib/types/cl_option_type.rb +52 -0
- data/lib/types/cl_public_key.rb +152 -0
- data/lib/types/cl_public_key_type.rb +26 -0
- data/lib/types/cl_result.rb +25 -0
- data/lib/types/cl_result_type.rb +26 -0
- data/lib/types/cl_string.rb +39 -0
- data/lib/types/cl_string_type.rb +32 -0
- data/lib/types/cl_tuple.rb +151 -0
- data/lib/types/cl_tuple_type.rb +108 -0
- data/lib/types/cl_type.rb +94 -0
- data/lib/types/cl_type_tag.rb +51 -0
- data/lib/types/cl_u128.rb +26 -0
- data/lib/types/cl_u128_type.rb +26 -0
- data/lib/types/cl_u256.rb +26 -0
- data/lib/types/cl_u256_type.rb +26 -0
- data/lib/types/cl_u32.rb +26 -0
- data/lib/types/cl_u32_type.rb +26 -0
- data/lib/types/cl_u512.rb +26 -0
- data/lib/types/cl_u512_type.rb +26 -0
- data/lib/types/cl_u64.rb +26 -0
- data/lib/types/cl_u64_type.rb +27 -0
- data/lib/types/cl_u8.rb +26 -0
- data/lib/types/cl_u8_type.rb +26 -0
- data/lib/types/cl_unit.rb +38 -0
- data/lib/types/cl_unit_type.rb +22 -0
- data/lib/types/cl_uref.rb +120 -0
- data/lib/types/cl_uref_type.rb +46 -0
- data/lib/types/cl_value.rb +10 -0
- data/lib/types/constants.rb +50 -0
- data/lib/types/error.rb +7 -0
- data/lib/utils/base_16.rb +18 -0
- data/lib/utils/byte_utils.rb +107 -0
- data/lib/utils/find_byte_parser_by_cl_type.rb +53 -0
- data/lib/utils/hash_utils.rb +19 -0
- data/lib/utils/hex_utils.rb +12 -0
- data/lib/utils/time_utils.rb +85 -0
- data/lib/utils/utils.rb +2 -0
- data/lib/version.rb +3 -0
- data/spec/a_spec.rb +697 -0
- data/spec/byte_utils_spec.rb +72 -0
- data/spec/cl_public_spec.rb +169 -0
- data/spec/cl_types_spec.rb +715 -0
- data/spec/cl_value_serializer_spec.rb +140 -0
- data/spec/client_spec.rb +25 -0
- data/spec/crypto_spec.rb +42 -0
- data/spec/deploy_approval_serializer_spec.rb +26 -0
- data/spec/deploy_executable_serializer_spec.rb +0 -0
- data/spec/deploy_header_serializer_spec.rb +21 -0
- data/spec/deploy_named_arg_serializer_spec.rb +49 -0
- data/spec/deploy_serializer_spec.rb +77 -0
- data/spec/deploy_serializer_test_spec.rb +225 -0
- data/spec/mainnet_spec.rb +452 -0
- data/spec/spec_helper.rb +100 -0
- data/spec/string_spec.rb +68 -0
- data/spec/testnet_spec.rb +498 -0
- data/spec/time_utils_spec.rb +87 -0
- metadata +198 -0
@@ -0,0 +1,715 @@
|
|
1
|
+
require_relative '../lib/types/cl_string.rb'
|
2
|
+
require_relative '../lib/types/cl_bool.rb'
|
3
|
+
require_relative '../lib/types/cl_i32.rb'
|
4
|
+
require_relative '../lib/types/cl_i64.rb'
|
5
|
+
require_relative '../lib/types/cl_u8.rb'
|
6
|
+
require_relative '../lib/types/cl_u32.rb'
|
7
|
+
require_relative '../lib/types/cl_u64.rb'
|
8
|
+
require_relative '../lib/types/cl_u128.rb'
|
9
|
+
require_relative '../lib/types/cl_u256.rb'
|
10
|
+
require_relative '../lib/types/cl_u512.rb'
|
11
|
+
require_relative '../lib/types/cl_unit.rb'
|
12
|
+
require_relative '../lib/types/cl_tuple.rb'
|
13
|
+
require_relative '../lib/types/cl_uref.rb'
|
14
|
+
require_relative '../lib/types/cl_public_key.rb'
|
15
|
+
require_relative '../lib/types/constants.rb'
|
16
|
+
require_relative '../lib/serialization/cl_value_bytes_parsers.rb'
|
17
|
+
require 'json'
|
18
|
+
|
19
|
+
describe CLBool do
|
20
|
+
my_bool = CLBool.new(false)
|
21
|
+
cl_type = my_bool.get_cl_type
|
22
|
+
describe "#get_cl_type" do
|
23
|
+
it "Bool should return proper cl_type" do
|
24
|
+
expect(cl_type).to eql('Bool')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#get_value" do
|
29
|
+
it "should return proper value by calling get_value" do
|
30
|
+
my_bool1 = CLBool.new(false)
|
31
|
+
my_bool2 = CLBool.new(true)
|
32
|
+
expect(my_bool1.get_value).to eql(false)
|
33
|
+
expect(my_bool2.get_value).to eql(true)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
it "toBytes() / fromBytes() do proper bytes serialization" do
|
38
|
+
bool1 = CLBool.new(false)
|
39
|
+
bool2 = CLBool.new(true)
|
40
|
+
|
41
|
+
bool1_bytes = CLValueBytesParsers::CLBoolBytesParser.to_bytes(bool1)
|
42
|
+
expect(bool1_bytes).to eql([0])
|
43
|
+
|
44
|
+
bool2_bytes = CLValueBytesParsers::CLBoolBytesParser.to_bytes(bool2)
|
45
|
+
expect(bool2_bytes).to eql([1])
|
46
|
+
|
47
|
+
from_bytes1 = CLValueBytesParsers::CLBoolBytesParser.from_bytes(bool1_bytes)
|
48
|
+
|
49
|
+
expect(from_bytes1.get_value).to eql(bool1.get_value)
|
50
|
+
expect(from_bytes1.get_cl_type).to eql(bool1.get_cl_type)
|
51
|
+
|
52
|
+
from_bytes2 = CLValueBytesParsers::CLBoolBytesParser.from_bytes(bool2_bytes)
|
53
|
+
|
54
|
+
expect(from_bytes2.get_value).to eql(bool2.get_value)
|
55
|
+
expect(from_bytes2.get_cl_type).to eql(bool2.get_cl_type)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe CLString do
|
60
|
+
cl_string = CLString.new("ABC")
|
61
|
+
describe "#get_value" do
|
62
|
+
it "should return proper value" do
|
63
|
+
expect(cl_string.get_value).to eq("ABC")
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "#get_cl_type" do
|
68
|
+
it "should return proper cl_type" do
|
69
|
+
expect(cl_string.get_cl_type).to be_an_instance_of(String)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe "#get_cl_type" do
|
74
|
+
it "should return String type" do
|
75
|
+
expect(cl_string.get_cl_type).to eq('String')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#cl_string.get_size" do
|
80
|
+
it "should return proper string length" do
|
81
|
+
expect(cl_string.get_size).to eq(3)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should return \'ABC\'" do
|
86
|
+
expect(cl_string.from_bytes("03000000414243")).to eql("ABC")
|
87
|
+
end
|
88
|
+
|
89
|
+
it "should do to_bytes / from_bytes string serialization" do
|
90
|
+
string = CLString.new("Hello, World!")
|
91
|
+
value = string.get_value
|
92
|
+
bytes = string.to_bytes(value)
|
93
|
+
result_string = string.from_bytes(bytes)
|
94
|
+
expect(value).to eql("Hello, World!")
|
95
|
+
expect(bytes).to eql("0d00000048656c6c6f2c20576f726c6421")
|
96
|
+
expect(value).to eql(result_string)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
describe CLi32 do
|
102
|
+
# before :each do
|
103
|
+
# cli32 = CLi32.new
|
104
|
+
# end
|
105
|
+
it "should do proper to_bytes and from_bytes when value is -1" do
|
106
|
+
num1 = CLi32.new(-1)
|
107
|
+
byte_array = CLValueBytesParsers::CLI32BytesParser.to_bytes(num1)
|
108
|
+
expect(CLValueBytesParsers::CLI32BytesParser.from_bytes(byte_array)).to eql(num1.get_value)
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should do proper to_bytes and from_bytes when value is 0" do
|
112
|
+
num2 = CLi32.new(0)
|
113
|
+
byte_array = CLValueBytesParsers::CLI32BytesParser.to_bytes(num2)
|
114
|
+
expect(CLValueBytesParsers::CLI32BytesParser.from_bytes(byte_array)).to eql(num2.get_value)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should do proper to_bytes and from_bytes when value is 1" do
|
118
|
+
num3 = CLi32.new(1)
|
119
|
+
byte_array = CLValueBytesParsers::CLI32BytesParser.to_bytes(num3)
|
120
|
+
expect(CLValueBytesParsers::CLI32BytesParser.from_bytes(byte_array)).to eql(num3.get_value)
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should do proper to_bytes and from_bytes when value is MIN_I32" do
|
124
|
+
num4 = CLi32.new(MIN_I32)
|
125
|
+
byte_array = CLValueBytesParsers::CLI32BytesParser.to_bytes(num4)
|
126
|
+
expect(CLValueBytesParsers::CLI32BytesParser.from_bytes(byte_array)).to eql(num4.get_value)
|
127
|
+
end
|
128
|
+
|
129
|
+
|
130
|
+
it "should do proper to_bytes and from_bytes when value is MAX_I32" do
|
131
|
+
num5 = CLi32.new(MAX_I32)
|
132
|
+
byte_array = CLValueBytesParsers::CLI32BytesParser.to_bytes(num5)
|
133
|
+
expect(CLValueBytesParsers::CLI32BytesParser.from_bytes(byte_array)).to eql(num5.get_value)
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
|
138
|
+
describe CLi64 do
|
139
|
+
it "should do proper to_bytes and from_bytes when value is -10" do
|
140
|
+
first_cli64 = CLi64.new(-10)
|
141
|
+
num1 = first_cli64.get_value
|
142
|
+
byte_array1 = first_cli64.to_bytes(num1)
|
143
|
+
expect(first_cli64.from_bytes(byte_array1)).to eql(num1)
|
144
|
+
end
|
145
|
+
|
146
|
+
it "should do proper to_bytes and from_bytes when value is 0" do
|
147
|
+
second_cli64 = CLi64.new(0)
|
148
|
+
num2 = second_cli64.get_value
|
149
|
+
byte_array2 = second_cli64.to_bytes(num2)
|
150
|
+
expect(second_cli64.from_bytes(byte_array2)).to eql(num2)
|
151
|
+
end
|
152
|
+
|
153
|
+
it "should do proper to_bytes and from_bytes when value is 10" do
|
154
|
+
third_cli64 = CLi64.new(10)
|
155
|
+
num3 = third_cli64.get_value
|
156
|
+
byte_array3 = third_cli64.to_bytes(num3)
|
157
|
+
expect(third_cli64.from_bytes(byte_array3)).to eql(num3)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should do proper to_bytes and from_bytes when value is MIN_I64" do
|
161
|
+
fourth_cli64 = CLi64.new(MIN_I64)
|
162
|
+
min = fourth_cli64.get_value
|
163
|
+
byte_array4 = fourth_cli64.to_bytes(min)
|
164
|
+
expect(fourth_cli64.from_bytes(byte_array4)).to eq(min)
|
165
|
+
end
|
166
|
+
|
167
|
+
|
168
|
+
it "should do proper to_bytes and from_bytes when value is MAX_I64" do
|
169
|
+
fifth_cli64 = CLi64.new(MAX_I64)
|
170
|
+
max = fifth_cli64.get_value
|
171
|
+
byte_array5 = fifth_cli64.to_bytes(max)
|
172
|
+
expect(fifth_cli64.from_bytes(byte_array5)).to eq(max)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
describe CLu8 do
|
177
|
+
it "should do proper to_bytes and from_bytes when value is MIN_U8" do
|
178
|
+
clu8 = CLu8.new(0)
|
179
|
+
num1 = clu8.get_value
|
180
|
+
byte_array1 = clu8.to_bytes(num1)
|
181
|
+
expect(clu8.from_bytes(byte_array1)).to eql(num1)
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should do proper to_bytes and from_bytes when value is MAX_U8" do
|
185
|
+
clu8 = CLu8.new(MAX_U8)
|
186
|
+
num2 = clu8.get_value
|
187
|
+
byte_array2 = clu8.to_bytes(num2)
|
188
|
+
expect(clu8.from_bytes(byte_array2)).to eql(num2)
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should raise error. Parameter value '-1' is not in range [0, 255]" do
|
192
|
+
clu8 = CLu8.new(-1)
|
193
|
+
num3 = clu8.get_value
|
194
|
+
err = clu8.to_bytes(num3)
|
195
|
+
expect {raise StandardError, err}.
|
196
|
+
to raise_error(err)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe CLu32 do
|
201
|
+
it "should do proper to_bytes and from_bytes when value is MIN_U32" do
|
202
|
+
clu32 = CLu32.new(0)
|
203
|
+
num1 = clu32.get_value
|
204
|
+
byte_array1 = clu32.to_bytes(num1)
|
205
|
+
expect(clu32.from_bytes(byte_array1)).to eql(num1)
|
206
|
+
end
|
207
|
+
|
208
|
+
it "should do proper to_bytes and from_bytes when value is MAX_U32" do
|
209
|
+
clu32 = CLu32.new(MAX_U32)
|
210
|
+
num2 = clu32.get_value
|
211
|
+
byte_array2 = clu32.to_bytes(num2)
|
212
|
+
expect(clu32.from_bytes(byte_array2)).to eql(num2)
|
213
|
+
end
|
214
|
+
|
215
|
+
it "should raise error. Parameter value '-1' is out of range [0, MAX_U32]" do
|
216
|
+
clu32 = CLu32.new(-1)
|
217
|
+
num3 = clu32.get_value
|
218
|
+
err = clu32.to_bytes(num3)
|
219
|
+
expect {raise StandardError, err}.
|
220
|
+
to raise_error(err)
|
221
|
+
end
|
222
|
+
|
223
|
+
it "should raise error. Parameter value '#{MAX_U32 + 1}' is out of range [0, MAX_U32]" do
|
224
|
+
clu32 = CLu32.new(MAX_U32 + 1)
|
225
|
+
num3 = clu32.get_value
|
226
|
+
err = clu32.to_bytes(num3)
|
227
|
+
expect {raise StandardError, err}.
|
228
|
+
to raise_error(err)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
describe CLu64 do
|
233
|
+
it "should do proper to_bytes and from_bytes when value is MIN_U64" do
|
234
|
+
clu64 = CLu64.new(0)
|
235
|
+
num1 = clu64.get_value
|
236
|
+
byte_array1 = clu64.to_bytes(num1)
|
237
|
+
expect(clu64.from_bytes(byte_array1)).to eql(num1)
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should do proper to_bytes and from_bytes when value is MAX_U64" do
|
241
|
+
clu64 = CLu64.new(MAX_U64)
|
242
|
+
num2 = clu64.get_value
|
243
|
+
byte_array2 = clu64.to_bytes(num2)
|
244
|
+
expect(clu64.from_bytes(byte_array2)).to eql(num2)
|
245
|
+
end
|
246
|
+
|
247
|
+
it "should raise error. Parameter value '-1' is out of range [0, MAX_U64]" do
|
248
|
+
clu64 = CLu64.new(-1)
|
249
|
+
num3 = clu64.get_value
|
250
|
+
err = clu64.to_bytes(num3)
|
251
|
+
expect {raise StandardError, err}.
|
252
|
+
to raise_error(err)
|
253
|
+
end
|
254
|
+
|
255
|
+
it "should raise error. Parameter value '#{MAX_U64 + 1}' is out of range [0, MAX_U64]" do
|
256
|
+
clu64 = CLu64
|
257
|
+
.new(MAX_U64 + 1)
|
258
|
+
num3 = clu64.get_value
|
259
|
+
err = clu64.to_bytes(num3)
|
260
|
+
expect {raise StandardError, err}.
|
261
|
+
to raise_error(err)
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
|
266
|
+
describe CLu128 do
|
267
|
+
it "should do proper to_bytes and from_bytes when value is MIN_U128" do
|
268
|
+
clu128 = CLu128.new(0)
|
269
|
+
num1 = clu128.get_value
|
270
|
+
byte_array1 = clu128.to_bytes(num1)
|
271
|
+
expect(clu128.from_bytes(byte_array1)).to eql(num1)
|
272
|
+
end
|
273
|
+
|
274
|
+
it "should do proper to_bytes and from_bytes when value is MAX_U128" do
|
275
|
+
clu128 = CLu128.new(MAX_U128)
|
276
|
+
num2 = clu128.get_value
|
277
|
+
byte_array2 = clu128.to_bytes(num2)
|
278
|
+
expect(clu128.from_bytes(byte_array2)).to eql(num2)
|
279
|
+
end
|
280
|
+
|
281
|
+
it "should raise error. Parameter value '-1' is out of range [0, MAX_U128]" do
|
282
|
+
clu128 = CLu128.new(-1)
|
283
|
+
num3 = clu128.get_value
|
284
|
+
err = clu128.to_bytes(num3)
|
285
|
+
expect {raise StandardError, err}.to raise_error(err)
|
286
|
+
end
|
287
|
+
|
288
|
+
it "should raise error. Parameter value '#{MAX_U128 + 1}' is out of range [0, MAX_U128]" do
|
289
|
+
clu128 = CLu128.new(MAX_U128 + 1)
|
290
|
+
num3 = clu128.get_value
|
291
|
+
err = clu128.to_bytes(num3)
|
292
|
+
expect {raise StandardError, err}.to raise_error(err)
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
|
297
|
+
describe CLu256 do
|
298
|
+
it "should do proper to_bytes and from_bytes when value is MIN_U256" do
|
299
|
+
clu256 = CLu256.new(0)
|
300
|
+
num1 = clu256.get_value
|
301
|
+
byte_array1 = clu256.to_bytes(num1)
|
302
|
+
expect(clu256.from_bytes(byte_array1)).to eql(num1)
|
303
|
+
end
|
304
|
+
|
305
|
+
it "should do proper to_bytes and from_bytes when value is MAX_U256" do
|
306
|
+
clu256 = CLu256.new(MAX_U256)
|
307
|
+
num2 = clu256.get_value
|
308
|
+
byte_array2 = clu256.to_bytes(num2)
|
309
|
+
expect(clu256.from_bytes(byte_array2)).to eql(num2)
|
310
|
+
end
|
311
|
+
|
312
|
+
it "should raise error. Parameter value '-1' is out of range [0, MAX_U256]" do
|
313
|
+
clu256 = CLu256.new(-1)
|
314
|
+
num3 = clu256.get_value
|
315
|
+
err = clu256.to_bytes(num3)
|
316
|
+
expect {raise StandardError, err}.to raise_error(err)
|
317
|
+
end
|
318
|
+
|
319
|
+
it "should raise error. Parameter value '#{MAX_U256 + 1}' is out of range [0, MAX_U256]" do
|
320
|
+
clu256 = CLu256.new(MAX_U256 + 1)
|
321
|
+
num3 = clu256.get_value
|
322
|
+
err = clu256.to_bytes(num3)
|
323
|
+
expect {raise StandardError, err}.to raise_error(err)
|
324
|
+
end
|
325
|
+
end
|
326
|
+
|
327
|
+
|
328
|
+
describe CLu512 do
|
329
|
+
it "should do proper to_bytes and from_bytes when value is MIN_U512" do
|
330
|
+
clu512 = CLu512.new(0)
|
331
|
+
num1 = clu512.get_value
|
332
|
+
byte_array1 = clu512.to_bytes(num1)
|
333
|
+
expect(clu512.from_bytes(byte_array1)).to eql(num1)
|
334
|
+
end
|
335
|
+
|
336
|
+
it "should do proper to_bytes and from_bytes when value is MAX_U512" do
|
337
|
+
clu512 = CLu512.new(MAX_U512)
|
338
|
+
num2 = clu512.get_value
|
339
|
+
byte_array2 = clu512.to_bytes(num2)
|
340
|
+
expect(clu512.from_bytes(byte_array2)).to eql(num2)
|
341
|
+
end
|
342
|
+
|
343
|
+
it "should raise error. Parameter value '-1' is out of range [0, MAX_U512]" do
|
344
|
+
clu512 = CLu512.new(-1)
|
345
|
+
num3 = clu512.get_value
|
346
|
+
err = clu512.to_bytes(num3)
|
347
|
+
expect {raise StandardError, err}.to raise_error(err)
|
348
|
+
end
|
349
|
+
|
350
|
+
it "should raise error. Parameter value '#{MAX_U512 + 1}' is out of range [0, MAX_U512]" do
|
351
|
+
clu512 = CLu512.new(MAX_U512 + 1)
|
352
|
+
num3 = clu512.get_value
|
353
|
+
err = clu512.to_bytes(num3)
|
354
|
+
expect {raise StandardError, err}.to raise_error(err)
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
358
|
+
describe CLUnit do
|
359
|
+
it "should return proper type" do
|
360
|
+
cl = CLUnit.new()
|
361
|
+
expect(cl.get_cl_type).to eql("Unit")
|
362
|
+
end
|
363
|
+
|
364
|
+
it "should return proper value" do
|
365
|
+
cl = CLUnit.new()
|
366
|
+
expect(cl.get_value).to eql(nil)
|
367
|
+
end
|
368
|
+
|
369
|
+
it "to_json / from_json" do
|
370
|
+
cl = CLUnit.new()
|
371
|
+
json = cl.to_json
|
372
|
+
expected_json = '{"bytes":"","cl_type":"Unit"}'
|
373
|
+
expect(json).to eql(expected_json)
|
374
|
+
expect(cl.from_json(json)).to eql(cl.get_hash)
|
375
|
+
end
|
376
|
+
end
|
377
|
+
|
378
|
+
describe CLTuple do
|
379
|
+
describe CLTuple1 do
|
380
|
+
it "should return proper CLType" do
|
381
|
+
bool = CLBool.new(true)
|
382
|
+
t1 = CLTuple1.new([bool])
|
383
|
+
expect(t1.get_full_type).to eql("Tuple1 (Bool)")
|
384
|
+
|
385
|
+
str = CLString.new("ABC")
|
386
|
+
t2 = CLTuple1.new([str])
|
387
|
+
expect(t2.get_full_type).to eql("Tuple1 (String)")
|
388
|
+
|
389
|
+
i32 = CLi32.new(99)
|
390
|
+
t3 = CLTuple1.new([i32])
|
391
|
+
expect(t3.get_full_type).to eql("Tuple1 (I32)")
|
392
|
+
end
|
393
|
+
|
394
|
+
it "should throw an error when tuple elements are not in a correct format" do
|
395
|
+
# tuple = CLTuple1.new([CLBool.new(true), CLBool.new(false)])
|
396
|
+
tuple = CLTuple1.new(['a'])
|
397
|
+
err = tuple.get_full_type
|
398
|
+
expect {raise err }.to raise_error(StandardError, "Invalid data type(s) provided.")
|
399
|
+
end
|
400
|
+
it "should return error when tuple is not correctly built" do
|
401
|
+
bool = CLBool.new(false)
|
402
|
+
tuple1 = CLTuple1.new([bool, bool])
|
403
|
+
err = tuple1.get_full_type
|
404
|
+
expect {raise err}.to raise_error(StandardError, "Too many elements!")
|
405
|
+
end
|
406
|
+
|
407
|
+
it "should do proper to_bytes and from_bytes for Tuple1" do
|
408
|
+
bool1 = CLBool.new(false)
|
409
|
+
tuple = CLTuple1.new([bool1])
|
410
|
+
|
411
|
+
bool_bytes = CLValueBytesParsers::CLTupleBytesParser.to_bytes(tuple)
|
412
|
+
bool2 = CLValueBytesParsers::CLTupleBytesParser.from_bytes([bool1.get_cl_type], bool_bytes)
|
413
|
+
|
414
|
+
expect(bool2.get_value).to eql(bool1.get_value)
|
415
|
+
|
416
|
+
i32 = CLi32.new(10)
|
417
|
+
tuple = CLTuple1.new([i32])
|
418
|
+
|
419
|
+
i32_bytes = CLValueBytesParsers::CLTupleBytesParser.to_bytes(tuple)
|
420
|
+
i32_value = CLValueBytesParsers::CLTupleBytesParser.from_bytes([i32.get_cl_type], i32_bytes)
|
421
|
+
expect(i32_value).to eql(i32.get_value)
|
422
|
+
end
|
423
|
+
end
|
424
|
+
|
425
|
+
describe CLTuple2 do
|
426
|
+
it "should return proper CLType" do
|
427
|
+
bool = CLBool.new(true)
|
428
|
+
str = CLString.new("ABC")
|
429
|
+
t1 = CLTuple2.new([bool, str])
|
430
|
+
expect(t1.get_full_type).to eql("Tuple2 (Bool, String)")
|
431
|
+
|
432
|
+
|
433
|
+
str2 = CLString.new("XYZ")
|
434
|
+
u512 = CLu512.new(MAX_U512)
|
435
|
+
t2 = CLTuple2.new([str,u512])
|
436
|
+
expect(t2.get_full_type).to eql("Tuple2 (String, U512)")
|
437
|
+
end
|
438
|
+
|
439
|
+
it "should throw an error when tuple elements are not in a correct format" do
|
440
|
+
tuple = CLTuple2.new(['a', 10])
|
441
|
+
err = tuple.get_full_type
|
442
|
+
expect {raise err }.to raise_error(StandardError, "Invalid data type(s) provided.")
|
443
|
+
end
|
444
|
+
|
445
|
+
it "should return error when tuple is not correctly built" do
|
446
|
+
bool = CLBool.new(false)
|
447
|
+
tuple2 = CLTuple2.new([bool, bool, bool])
|
448
|
+
err = tuple2.get_full_type
|
449
|
+
expect {raise err}.to raise_error(StandardError, "Too many elements!")
|
450
|
+
end
|
451
|
+
|
452
|
+
it "should do proper to_bytes and from_bytes for Tuple2" do
|
453
|
+
bool1 = CLBool.new(true)
|
454
|
+
bool2 = CLBool.new(false)
|
455
|
+
tuple = CLTuple2.new([bool1, bool2])
|
456
|
+
tuple_bytes = CLValueBytesParsers::CLTupleBytesParser.to_bytes(tuple)
|
457
|
+
end
|
458
|
+
end
|
459
|
+
|
460
|
+
describe CLTuple3 do
|
461
|
+
it "should return proper CLType" do
|
462
|
+
bool = CLBool.new(true)
|
463
|
+
str = CLString.new("ABC")
|
464
|
+
u512 = CLu512.new(MAX_U512)
|
465
|
+
t1 = CLTuple3.new([bool, str, u512])
|
466
|
+
expect(t1.get_full_type).to eql("Tuple3 (Bool, String, U512)")
|
467
|
+
end
|
468
|
+
|
469
|
+
it "should throw an error when tuple elements are not in a correct format" do
|
470
|
+
tuple = CLTuple3.new(['a', 10, true])
|
471
|
+
err = tuple.get_full_type
|
472
|
+
expect {raise err }.to raise_error(StandardError, "Invalid data type(s) provided.")
|
473
|
+
end
|
474
|
+
|
475
|
+
it "should return error when tuple is not correctly built" do
|
476
|
+
bool = CLBool.new(false)
|
477
|
+
tuple3 = CLTuple3.new([bool, bool, bool, bool])
|
478
|
+
err = tuple3.get_full_type
|
479
|
+
expect {raise err}.to raise_error(StandardError, "Too many elements!")
|
480
|
+
end
|
481
|
+
end
|
482
|
+
end
|
483
|
+
|
484
|
+
describe CLURef do
|
485
|
+
uref_addr1 = "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a"
|
486
|
+
decoded1 = CLValueBytesParsers::CLURefBytesParser.decode_base_16(uref_addr1)
|
487
|
+
encoded1 = CLValueBytesParsers::CLURefBytesParser.encode_base_16(decoded1)
|
488
|
+
uref1 = CLURef.new(decoded1, AccessRights[:READ_ADD_WRITE])
|
489
|
+
str = "uref-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-007"
|
490
|
+
|
491
|
+
it "should return proper CLType" do
|
492
|
+
expect(uref1.get_cl_type).to eql('URef')
|
493
|
+
expect(uref1).to be_an_instance_of(CLURef)
|
494
|
+
end
|
495
|
+
|
496
|
+
it "should return proper value" do
|
497
|
+
expect(uref1.get_value).to eql(decoded1)
|
498
|
+
end
|
499
|
+
|
500
|
+
it "should return proper AccessRights" do
|
501
|
+
expect(uref1.get_access_rights).to eql(AccessRights[:READ_ADD_WRITE])
|
502
|
+
end
|
503
|
+
|
504
|
+
it "should do proper to_bytes and from_bytes" do
|
505
|
+
to_bytes = CLValueBytesParsers::CLURefBytesParser.to_bytes(uref1)
|
506
|
+
# p to_bytes
|
507
|
+
from_bytes = CLValueBytesParsers::CLURefBytesParser.from_bytes(to_bytes)
|
508
|
+
# p from_bytes
|
509
|
+
expect(uref1.get_value).to eql(from_bytes.get_value)
|
510
|
+
expect(uref1.get_access_rights).to eql(from_bytes.get_access_rights)
|
511
|
+
end
|
512
|
+
|
513
|
+
it "should return error when CLUref is not correctly built" do
|
514
|
+
uref_addr2 = "4b4b4b"
|
515
|
+
decoded2 = CLValueBytesParsers::CLURefBytesParser.decode_base_16(uref_addr2)
|
516
|
+
uref2 = CLURef.new(decoded2, 0)
|
517
|
+
expect {raise 'The length of URefAddr should be 32'}.to raise_error(RuntimeError, 'The length of URefAddr should be 32')
|
518
|
+
# expect {raise 'The length of URefAddr should be 32'}.to raise_error('The length of URefAddr should be 32')
|
519
|
+
# expect {raise 'The length of URefAddr should be 32'}.to raise_error(ArgumentError, 'The length of URefAddr should be 32')
|
520
|
+
end
|
521
|
+
|
522
|
+
describe "#parse_uref_address" do
|
523
|
+
# str = "uref-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-007"
|
524
|
+
it "should raise an error when string does not begin with \'uref-\'" do
|
525
|
+
bad_formatted_str = "xxx-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-007"
|
526
|
+
expect {CLURef.parse_uref_address(bad_formatted_str)}.to raise_error(ArgumentError)
|
527
|
+
end
|
528
|
+
|
529
|
+
it "should raise an error when string does not begin with prefix: \'uref-\'" do
|
530
|
+
bad_formatted_str = "ureffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-007"
|
531
|
+
expect {CLURef.parse_uref_address(bad_formatted_str)}.to raise_error(ArgumentError)
|
532
|
+
end
|
533
|
+
|
534
|
+
it "should raise an error when uref bytes length is not equal to 32" do
|
535
|
+
bad_formatted_str = "uref-fff-007"
|
536
|
+
expect {CLURef.parse_uref_address("uref-fff-007")}.to raise_error(ArgumentError)
|
537
|
+
end
|
538
|
+
|
539
|
+
it "should raise an error when given parameter has lack of suffix which represents AccessRights" do
|
540
|
+
bad_formatted_str = "uref-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
|
541
|
+
expect {CLURef.parse_uref_address(bad_formatted_str)}.to raise_error(ArgumentError)
|
542
|
+
end
|
543
|
+
|
544
|
+
it "should raise an error when AccessRights is not within a range [0, 7]" do
|
545
|
+
bad_formatted_str = "uref-ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff-008"
|
546
|
+
expect {CLURef.parse_uref_address(bad_formatted_str)}.to raise_error(ArgumentError)
|
547
|
+
end
|
548
|
+
it "should convert to_json and from_json properly" do
|
549
|
+
uref_addr1 = "2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a"
|
550
|
+
decoded1 = CLValueBytesParsers::CLURefBytesParser.decode_base_16(uref_addr1)
|
551
|
+
uref1 = CLURef.new(decoded1, 7)
|
552
|
+
|
553
|
+
expect(CLURef.to_json(uref1)).to eql('{"bytes":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a07","cl_type":"URef"}')
|
554
|
+
|
555
|
+
json = '{"bytes":"2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a2a07","cl_type":"URef"}'
|
556
|
+
|
557
|
+
expect(CLURef.from_json(json).get_value).to eql(uref1.get_value)
|
558
|
+
expect(CLURef.from_json(json).get_access_rights).to eql(uref1.get_access_rights)
|
559
|
+
end
|
560
|
+
end
|
561
|
+
|
562
|
+
end
|
563
|
+
|
564
|
+
|
565
|
+
describe CLPublicKey do
|
566
|
+
pub_key_hex_ed25519 = "010af5a943bacd2a8e91792eb4e9a25e32d536ab103372f57f89ebcadfc59820d1"
|
567
|
+
pub_key_hex_secp256K1 = "024ae7d5b66b2fd0f66fb0efcceecb673b3762595b30ae1cac48ae8f09d34c952ee4"
|
568
|
+
pub_raw_ed25519 = [
|
569
|
+
10, 245, 169, 67, 186, 205, 42, 142,
|
570
|
+
145, 121, 46, 180, 233, 162, 94, 50,
|
571
|
+
213, 54, 171, 16, 51, 114, 245, 127,
|
572
|
+
137, 235, 202, 223, 197, 152, 32, 209
|
573
|
+
]
|
574
|
+
pub_raw_secp256K1 = [
|
575
|
+
74, 231, 213, 182, 107, 47, 208, 246,
|
576
|
+
111, 176, 239, 204, 238, 203, 103, 59,
|
577
|
+
55, 98, 89, 91, 48, 174, 28, 172, 72,
|
578
|
+
174, 143, 9, 211, 76, 149, 46, 228
|
579
|
+
]
|
580
|
+
it "should return error when CLPublicKey is not correctly built" do
|
581
|
+
public_key_ed25519 = CLPublicKey.new(pub_raw_ed25519, CLPublicKeyTag[:ED25519])
|
582
|
+
public_key_secp256K1 = CLPublicKey.new(pub_raw_secp256K1, CLPublicKeyTag[:SECP256K1])
|
583
|
+
|
584
|
+
expect(public_key_ed25519).to be_an_instance_of(CLPublicKey)
|
585
|
+
expect(public_key_secp256K1).to be_an_instance_of(CLPublicKey)
|
586
|
+
end
|
587
|
+
|
588
|
+
it "should raise error when CLPublicKey is not properly constructed" do
|
589
|
+
expect {CLPublicKey.new(pub_raw_ed25519, 3)}.to raise_error(ArgumentError)
|
590
|
+
expect {CLPublicKey.new(pub_raw_secp256K1, 3)}.to raise_error(ArgumentError)
|
591
|
+
end
|
592
|
+
|
593
|
+
it "should return proper CLType" do
|
594
|
+
public_key1 = CLPublicKey.new(pub_raw_ed25519, 1)
|
595
|
+
public_key2 = CLPublicKey.new(pub_raw_secp256K1, 2)
|
596
|
+
|
597
|
+
expect(public_key1.get_cl_type).to eql("PublicKey")
|
598
|
+
expect(public_key2.get_cl_type).to eql("PublicKey")
|
599
|
+
end
|
600
|
+
|
601
|
+
it "to_hex / from_hex work properly for ed25519" do
|
602
|
+
pub_raw_ed25519 = [
|
603
|
+
10, 245, 169, 67, 186, 205, 42, 142,
|
604
|
+
145, 121, 46, 180, 233, 162, 94, 50,
|
605
|
+
213, 54, 171, 16, 51, 114, 245, 127,
|
606
|
+
137, 235, 202, 223, 197, 152, 32, 209
|
607
|
+
]
|
608
|
+
public_key = CLPublicKey.new(pub_raw_ed25519, 1)
|
609
|
+
expected_hex_result = "010af5a943bacd2a8e91792eb4e9a25e32d536ab103372f57f89ebcadfc59820d1"
|
610
|
+
expect(public_key.to_hex).to eql(expected_hex_result)
|
611
|
+
|
612
|
+
hex_value = public_key.to_hex
|
613
|
+
result_public_key = public_key.from_hex(hex_value)
|
614
|
+
|
615
|
+
expect(result_public_key.get_value).to eql([10, 245, 169, 67, 186, 205, 42, 142, 145, 121, 46,
|
616
|
+
180, 233, 162, 94, 50, 213, 54, 171, 16, 51, 114, 245, 127, 137, 235, 202, 223, 197, 152, 32, 209])
|
617
|
+
expect(result_public_key.get_cl_public_key_tag).to eql(1)
|
618
|
+
expect(result_public_key.ed25519?).to eql(true)
|
619
|
+
expect(result_public_key.get_signature_algorithm).to eql("ed25519")
|
620
|
+
end
|
621
|
+
|
622
|
+
it "to_hex / from_hex work properly for secp256K1" do
|
623
|
+
pub_raw_secp256K1 = [74, 231, 213, 182, 107, 47, 208, 246, 111, 176, 239, 204, 238, 203, 103, 59, 55,
|
624
|
+
98, 89, 91, 48, 174, 28, 172, 72, 174, 143, 9, 211, 76, 149, 46, 228]
|
625
|
+
public_key = CLPublicKey.new(pub_raw_secp256K1, 2)
|
626
|
+
expected_hex_result = "024ae7d5b66b2fd0f66fb0efcceecb673b3762595b30ae1cac48ae8f09d34c952ee4"
|
627
|
+
expect(public_key.to_hex).to eql(expected_hex_result)
|
628
|
+
|
629
|
+
hex_value = public_key.to_hex
|
630
|
+
result_public_key = public_key.from_hex(hex_value)
|
631
|
+
|
632
|
+
expect(result_public_key.get_value).to eql([74, 231, 213, 182, 107, 47, 208, 246, 111, 176, 239, 204,
|
633
|
+
238, 203, 103, 59, 55, 98, 89, 91, 48, 174, 28, 172, 72, 174, 143, 9, 211, 76, 149, 46, 228])
|
634
|
+
expect(result_public_key.get_cl_public_key_tag).to eql(2)
|
635
|
+
expect(result_public_key.secp256k1?).to eql(true)
|
636
|
+
expect(result_public_key.get_signature_algorithm).to eql("secp256k1")
|
637
|
+
end
|
638
|
+
|
639
|
+
it "to_account_hash_byte_array works properly" do
|
640
|
+
account_key = "01e23d200eb0f3c8a3dacc8453644e6fcf4462585a68234ebb1c3d6cc8971148c2"
|
641
|
+
public_key = CLPublicKey.from_hex(account_key)
|
642
|
+
# puts account_key
|
643
|
+
# puts public_key.to_hex
|
644
|
+
# puts public_key.get_value.inspect
|
645
|
+
# puts public_key.get_cl_public_key_tag
|
646
|
+
expected_result = [217, 84, 5, 56, 40, 230, 253, 7, 122, 223, 214, 81, 224, 24, 172, 125,
|
647
|
+
213, 28, 170, 162, 61, 8, 23, 104, 77, 183, 110, 48, 67, 209, 9, 3]
|
648
|
+
expect(public_key.to_account_hash_byte_array).to eql(expected_result)
|
649
|
+
end
|
650
|
+
|
651
|
+
it "to_account_hash_hex works properly" do
|
652
|
+
account_key = "01e23d200eb0f3c8a3dacc8453644e6fcf4462585a68234ebb1c3d6cc8971148c2"
|
653
|
+
public_key = CLPublicKey.from_hex(account_key)
|
654
|
+
expected_hex_result = "account-hash-d954053828e6fd077adfd651e018ac7dd51caaa23d0817684db76e3043d10903"
|
655
|
+
expect(public_key.to_account_hash_hex).to eql(expected_hex_result)
|
656
|
+
end
|
657
|
+
|
658
|
+
it "should do proper to_bytes and from_bytes serialization for CLPublicKey" do
|
659
|
+
public_key1 = CLPublicKey.from_ed25519(Array.new(32, 50))
|
660
|
+
expected_ed25519_result = [
|
661
|
+
1, 50, 50, 50, 50, 50, 50, 50, 50,
|
662
|
+
50, 50, 50, 50, 50, 50, 50, 50,
|
663
|
+
50, 50, 50, 50, 50, 50, 50, 50,
|
664
|
+
50, 50, 50, 50, 50, 50, 50, 50
|
665
|
+
]
|
666
|
+
|
667
|
+
bytes = CLValueBytesParsers::CLPublicKeyBytesParser.to_bytes(public_key1)
|
668
|
+
expect(bytes).to eql(expected_ed25519_result)
|
669
|
+
|
670
|
+
expected_raw_public_key1 = Array.new(32, 50)
|
671
|
+
|
672
|
+
expect(CLValueBytesParsers::CLPublicKeyBytesParser.from_bytes(bytes).get_value).to eql(expected_raw_public_key1)
|
673
|
+
expect(CLValueBytesParsers::CLPublicKeyBytesParser.from_bytes(bytes).get_cl_public_key_tag).to eql(1)
|
674
|
+
|
675
|
+
public_key2 = CLPublicKey.from_secp256k1(Array.new(33, 100))
|
676
|
+
expected_secp256k1_result = [
|
677
|
+
2, 100, 100, 100, 100, 100, 100, 100, 100,
|
678
|
+
100, 100, 100, 100, 100, 100, 100, 100, 100,
|
679
|
+
100, 100, 100, 100, 100, 100, 100, 100,
|
680
|
+
100, 100, 100, 100, 100, 100, 100, 100
|
681
|
+
]
|
682
|
+
|
683
|
+
bytes = CLValueBytesParsers::CLPublicKeyBytesParser.to_bytes(public_key2)
|
684
|
+
expect(bytes).to eql(expected_secp256k1_result)
|
685
|
+
|
686
|
+
expected_raw_public_key2 = Array.new(33, 100)
|
687
|
+
|
688
|
+
expect(CLValueBytesParsers::CLPublicKeyBytesParser.from_bytes(bytes).get_value).to eql(expected_raw_public_key2)
|
689
|
+
expect(CLValueBytesParsers::CLPublicKeyBytesParser.from_bytes(bytes).get_cl_public_key_tag).to eql(2)
|
690
|
+
end
|
691
|
+
|
692
|
+
it "to_json / from_json for CLPublicKey" do
|
693
|
+
public_key_hex1 = "01e23d200eb0f3c8a3dacc8453644e6fcf4462585a68234ebb1c3d6cc8971148c2"
|
694
|
+
# account_hash_hex = "14b94d33a1be1a2741ddefa7ae68a28cd1956e3801730bea617bf529d50f8aea"
|
695
|
+
|
696
|
+
public_key1 = CLPublicKey.from_hex(public_key_hex1)
|
697
|
+
raw_public_key1 = public_key1.get_value
|
698
|
+
tag1 = public_key1.get_cl_public_key_tag
|
699
|
+
|
700
|
+
expect(CLPublicKey.to_json(public_key1)).to eql('{"bytes":"01e23d200eb0f3c8a3dacc8453644e6fcf4462585a68234ebb1c3d6cc8971148c2","cl_type":"PublicKey"}')
|
701
|
+
|
702
|
+
json = CLPublicKey.to_json(public_key1)
|
703
|
+
|
704
|
+
public_key2 = CLPublicKey.from_json(json)
|
705
|
+
|
706
|
+
raw_public_key2 = public_key2.get_value
|
707
|
+
tag2 = public_key2.get_cl_public_key_tag
|
708
|
+
public_key_hex2 = public_key2.to_hex
|
709
|
+
|
710
|
+
expect(raw_public_key2).to eql(raw_public_key1)
|
711
|
+
expect(tag2).to eql(tag1)
|
712
|
+
expect(public_key_hex2).to eql(public_key_hex1)
|
713
|
+
end
|
714
|
+
end
|
715
|
+
|