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
// Copyright 2019 The Grin Developers
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//! core::libtx specific tests
//use grin_wallet_api::foreign_rpc_client;
use run_doctest_foreign;
//use grin_wallet_libwallet::VersionedSlate;
use serde_json;
use Value;
use tempdir;
//use grin_wallet_libwallet::slate_versions::v1::SlateV1;
//use grin_wallet_libwallet::slate_versions::v2::SlateV2;
// test all slate conversions
//#[test]
// TODO: Re-introduce on a new slate version
/*
/// call ForeignRpc::receive_tx on vs and return the result
fn receive_tx(vs: VersionedSlate) -> VersionedSlate {
let dir = tempdir().map_err(|e| format!("{:#?}", e)).unwrap();
let dir = dir
.path()
.to_str()
.ok_or("Failed to convert tmpdir path to string.".to_owned())
.unwrap();
let bound_method = foreign_rpc_client::receive_tx(
vs,
None,
Some("Thanks for saving my dog from that tree, bddap.".into()),
)
.unwrap();
let (call, tracker) = bound_method.call();
let json_response = run_doctest_foreign(call.as_request(), dir, 5, false, false)
.unwrap()
.unwrap();
let mut response = easy_jsonrpc::Response::from_json_response(json_response).unwrap();
tracker.get_return(&mut response).unwrap().unwrap()
}
#[test]
fn version_unchanged() {
let req: Value = serde_json::from_str(include_str!("slates/v1_req.slate")).unwrap();
let slate: VersionedSlate = serde_json::from_value(req["params"][0].clone()).unwrap();
let slate_req: Slate = slate.into();
assert_eq!(
receive_tx(VersionedSlate::into_version(
slate_req.clone(),
SlateVersion::V0
))
.version(),
SlateVersion::V0
);
assert_eq!(
receive_tx(VersionedSlate::into_version(
slate_req.clone(),
SlateVersion::V1
))
.version(),
SlateVersion::V1
);
assert_eq!(
receive_tx(VersionedSlate::into_version(
slate_req.clone(),
SlateVersion::V2
))
.version(),
SlateVersion::V2
);
// compile time test will remind us to update these tests when updating slate format
fn _all_versions_tested(vs: VersionedSlate) {
match vs {
VersionedSlate::V0(_) => (),
VersionedSlate::V1(_) => (),
VersionedSlate::V2(_) => (),
}
}
}*/