Skip to content

Commit 8e8fd17

Browse files
committed
chore: expand test coverage to include errors
1 parent c9d5295 commit 8e8fd17

File tree

2 files changed

+103
-27
lines changed

2 files changed

+103
-27
lines changed

stackslib/src/net/api/tests/getclaritymetadata.rs

Lines changed: 66 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,16 @@ fn test_try_make_response() {
213213

214214
let mut requests = vec![];
215215

216+
// query invalid metadata key (wrong store type)
217+
let request = StacksHttpRequest::new_getclaritymetadata(
218+
addr.into(),
219+
StacksAddress::from_string("ST2DS4MSWSGJ3W9FBC6BVT0Y92S345HY8N3T6AV7R").unwrap(),
220+
"hello-world".try_into().unwrap(),
221+
"vm-metadata::2::bar".to_string(),
222+
TipRequest::UseLatestAnchoredTip,
223+
);
224+
requests.push(request);
225+
216226
// query existing contract size metadata
217227
let request = StacksHttpRequest::new_getclaritymetadata(
218228
addr.into(),
@@ -223,7 +233,7 @@ fn test_try_make_response() {
223233
);
224234
requests.push(request);
225235

226-
// query existing data var metadata
236+
// query existing data map metadata
227237
let request = StacksHttpRequest::new_getclaritymetadata(
228238
addr.into(),
229239
StacksAddress::from_string("ST2DS4MSWSGJ3W9FBC6BVT0Y92S345HY8N3T6AV7R").unwrap(),
@@ -233,7 +243,7 @@ fn test_try_make_response() {
233243
);
234244
requests.push(request);
235245

236-
// query existing data map metadata
246+
// query existing data var metadata
237247
let request = StacksHttpRequest::new_getclaritymetadata(
238248
addr.into(),
239249
StacksAddress::from_string("ST2DS4MSWSGJ3W9FBC6BVT0Y92S345HY8N3T6AV7R").unwrap(),
@@ -243,22 +253,32 @@ fn test_try_make_response() {
243253
);
244254
requests.push(request);
245255

246-
// query undeclared var metadata
256+
// query existing data var metadata
247257
let request = StacksHttpRequest::new_getclaritymetadata(
248258
addr.into(),
249259
StacksAddress::from_string("ST2DS4MSWSGJ3W9FBC6BVT0Y92S345HY8N3T6AV7R").unwrap(),
250260
"hello-world".try_into().unwrap(),
251-
"vm-metadata::6::non-existing-var".to_string(),
261+
"vm-metadata::6::bar".to_string(),
252262
TipRequest::UseLatestAnchoredTip,
253263
);
254264
requests.push(request);
255265

256-
// query invalid metadata key (wrong store type)
266+
// query existing data var metadata
257267
let request = StacksHttpRequest::new_getclaritymetadata(
258268
addr.into(),
259269
StacksAddress::from_string("ST2DS4MSWSGJ3W9FBC6BVT0Y92S345HY8N3T6AV7R").unwrap(),
260270
"hello-world".try_into().unwrap(),
261-
"vm-metadata::2::bar".to_string(),
271+
"vm-metadata::6::bar".to_string(),
272+
TipRequest::UseLatestAnchoredTip,
273+
);
274+
requests.push(request);
275+
276+
// query undeclared var metadata
277+
let request = StacksHttpRequest::new_getclaritymetadata(
278+
addr.into(),
279+
StacksAddress::from_string("ST2DS4MSWSGJ3W9FBC6BVT0Y92S345HY8N3T6AV7R").unwrap(),
280+
"hello-world".try_into().unwrap(),
281+
"vm-metadata::6::non-existing-var".to_string(),
262282
TipRequest::UseLatestAnchoredTip,
263283
);
264284
requests.push(request);
@@ -273,8 +293,23 @@ fn test_try_make_response() {
273293
);
274294
requests.push(request);
275295

296+
// query invalid metadata key (wrong store type)
297+
let request = StacksHttpRequest::new_getclaritymetadata(
298+
addr.into(),
299+
StacksAddress::from_string("ST2DS4MSWSGJ3W9FBC6BVT0Y92S345HY8N3T6AV7R").unwrap(),
300+
"hello-world".try_into().unwrap(),
301+
"vm-metadata::2::bar".to_string(),
302+
TipRequest::UseLatestAnchoredTip,
303+
);
304+
requests.push(request);
305+
276306
let mut responses = test_rpc(function_name!(), requests);
277307

308+
// unknwnon data var
309+
let response = responses.remove(0);
310+
let (preamble, body) = response.destruct();
311+
assert_eq!(preamble.status_code, 400);
312+
278313
// contract size metadata
279314
let response = responses.remove(0);
280315
assert_eq!(
@@ -301,11 +336,36 @@ fn test_try_make_response() {
301336
};
302337
assert_eq!(resp.data, expected.serialize());
303338

339+
// data var metadata
340+
let response = responses.remove(0);
341+
let resp = response.decode_clarity_metadata_response().unwrap();
342+
let expected = DataVariableMetadata {
343+
value_type: TypeSignature::IntType,
344+
};
345+
assert_eq!(resp.data, expected.serialize());
346+
347+
// data var metadata
348+
let response = responses.remove(0);
349+
let resp = response.decode_clarity_metadata_response().unwrap();
350+
let expected = DataVariableMetadata {
351+
value_type: TypeSignature::IntType,
352+
};
353+
assert_eq!(resp.data, expected.serialize());
354+
304355
// invalid metadata key
305356
let response = responses.remove(0);
306357
let (preamble, body) = response.destruct();
307358
assert_eq!(preamble.status_code, 404);
308359

360+
// contract size metadata
361+
let response = responses.remove(0);
362+
assert_eq!(
363+
response.preamble().get_canonical_stacks_tip_height(),
364+
Some(1)
365+
);
366+
let resp = response.decode_clarity_metadata_response().unwrap();
367+
assert_eq!(resp.data, "1432");
368+
309369
// unknwnon data var
310370
let response = responses.remove(0);
311371
let (preamble, body) = response.destruct();

stackslib/src/net/api/tests/mod.rs

Lines changed: 37 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,7 +1024,7 @@ impl<'a> TestRPC<'a> {
10241024

10251025
peer_2.sortdb = Some(peer_2_sortdb);
10261026
peer_2.stacks_node = Some(peer_2_stacks_node);
1027-
let mut peer_1_mempool = peer_1.mempool.take().unwrap();
1027+
peer_2.mempool = Some(peer_2_mempool);
10281028

10291029
convo_send_recv(&mut convo_2, &mut convo_1);
10301030

@@ -1033,8 +1033,6 @@ impl<'a> TestRPC<'a> {
10331033
// hack around the borrow-checker
10341034
convo_send_recv(&mut convo_1, &mut convo_2);
10351035

1036-
peer_2.mempool = Some(peer_2_mempool);
1037-
10381036
let peer_1_sortdb = peer_1.sortdb.take().unwrap();
10391037
let mut peer_1_stacks_node = peer_1.stacks_node.take().unwrap();
10401038

@@ -1056,27 +1054,45 @@ impl<'a> TestRPC<'a> {
10561054
.unwrap();
10571055
}
10581056

1059-
{
1060-
let rpc_args = RPCHandlerArgs::default();
1061-
let mut node_state = StacksNodeState::new(
1062-
&mut peer_1.network,
1063-
&peer_1_sortdb,
1064-
&mut peer_1_stacks_node.chainstate,
1065-
&mut peer_1_mempool,
1066-
&rpc_args,
1067-
false,
1068-
);
1069-
convo_1.chat(&mut node_state).unwrap();
1070-
}
1071-
1072-
convo_1.try_flush().unwrap();
1073-
10741057
peer_1.sortdb = Some(peer_1_sortdb);
10751058
peer_1.stacks_node = Some(peer_1_stacks_node);
1076-
peer_1.mempool = Some(peer_1_mempool);
10771059

1078-
// should have gotten a reply
1079-
let resp_opt = convo_1.try_get_response();
1060+
let resp_opt = loop {
1061+
debug!("Peer 1 try get response");
1062+
convo_send_recv(&mut convo_1, &mut convo_2);
1063+
{
1064+
let peer_1_sortdb = peer_1.sortdb.take().unwrap();
1065+
let mut peer_1_stacks_node = peer_1.stacks_node.take().unwrap();
1066+
let mut peer_1_mempool = peer_1.mempool.take().unwrap();
1067+
1068+
let rpc_args = RPCHandlerArgs::default();
1069+
let mut node_state = StacksNodeState::new(
1070+
&mut peer_1.network,
1071+
&peer_1_sortdb,
1072+
&mut peer_1_stacks_node.chainstate,
1073+
&mut peer_1_mempool,
1074+
&rpc_args,
1075+
false,
1076+
);
1077+
1078+
convo_1.chat(&mut node_state).unwrap();
1079+
1080+
peer_1.sortdb = Some(peer_1_sortdb);
1081+
peer_1.stacks_node = Some(peer_1_stacks_node);
1082+
peer_1.mempool = Some(peer_1_mempool);
1083+
}
1084+
1085+
convo_1.try_flush().unwrap();
1086+
1087+
info!("Try get response from request {:?}", &request);
1088+
1089+
// should have gotten a reply
1090+
let resp_opt = convo_1.try_get_response();
1091+
if resp_opt.is_some() {
1092+
break resp_opt;
1093+
}
1094+
};
1095+
10801096
assert!(resp_opt.is_some());
10811097

10821098
let resp = resp_opt.unwrap();

0 commit comments

Comments
 (0)