-
Notifications
You must be signed in to change notification settings - Fork 102
/
Copy pathcancel_test.rs
122 lines (107 loc) · 3.85 KB
/
cancel_test.rs
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
use crate::common::{make_proof_request, randomly_select_block, setup};
use raiko_host::server::api;
use raiko_lib::consts::Network;
use raiko_lib::proof_type::ProofType;
use raiko_tasks::TaskStatus;
use test_log::test;
#[cfg(all(feature = "risc0", feature = "test-mock-guest"))]
#[test(tokio::test)]
async fn test_v2_mainnet_risc0_cancel() {
test_v2_cancel(Network::TaikoMainnet, ProofType::Risc0).await;
}
#[test(tokio::test)]
async fn test_v2_mainnet_native_cancel() {
test_v2_cancel(Network::TaikoMainnet, ProofType::Native).await;
}
async fn test_v2_cancel(network: Network, proof_type: ProofType) {
let api_version = "v2";
let block_number = randomly_select_block(network)
.await
.expect("randomly select block failed");
let (_server, client) = setup().await;
let request = make_proof_request(&network, &proof_type, block_number);
let status: api::v2::Status = client
.post(&format!("/{api_version}/proof"), &request)
.await
.expect("failed to send request");
assert!(
matches!(
status,
api::v2::Status::Ok {
data: api::v2::ProofResponse::Status {
status: TaskStatus::Registered,
..
}
}
),
"status: {status:?}"
);
let status: api::v2::CancelStatus = client
.post(&format!("/{api_version}/proof/cancel"), &request)
.await
.expect("failed to send request");
assert!(matches!(status, api::v2::CancelStatus::Ok),);
// Cancel again, should be ok
let status: api::v2::CancelStatus = client
.post(&format!("/{api_version}/proof/cancel"), &request)
.await
.expect("failed to send request");
assert!(matches!(status, api::v2::CancelStatus::Ok),);
}
#[tokio::test]
pub async fn test_v2_mainnet_native_cancel_non_registered() {
let api_version = "v2";
let network = Network::TaikoMainnet;
let proof_type = ProofType::Native;
let block_number = randomly_select_block(network)
.await
.expect("randomly select block failed");
let (_server, client) = setup().await;
let request = make_proof_request(&network, &proof_type, block_number);
// Did not register the proof request, cancel should fail
let status: api::v2::CancelStatus = client
.post(&format!("/{api_version}/proof/cancel"), &request)
.await
.expect("failed to send request");
assert!(
matches!(status, api::v2::CancelStatus::Error { .. }),
"status should be error, got: {status:?}"
);
}
#[tokio::test]
pub async fn test_v2_mainnet_native_cancel_then_register() {
let api_version = "v2";
let network = Network::TaikoMainnet;
let proof_type = ProofType::Native;
let block_number = randomly_select_block(network)
.await
.expect("randomly select block failed");
let (_server, client) = setup().await;
let request = make_proof_request(&network, &proof_type, block_number);
let status: api::v2::Status = client
.post(&format!("/{api_version}/proof"), &request)
.await
.expect("failed to send request");
assert!(
matches!(
status,
api::v2::Status::Ok {
data: api::v2::ProofResponse::Status {
status: TaskStatus::Registered,
..
}
}
),
"status: {status:?}"
);
let status: api::v2::CancelStatus = client
.post(&format!("/{api_version}/proof/cancel"), &request)
.await
.expect("failed to send request");
assert!(matches!(status, api::v2::CancelStatus::Ok),);
let status: api::v2::Status = client
.post(&format!("/{api_version}/proof"), &request)
.await
.expect("failed to send request");
assert!(matches!(status, api::v2::Status::Ok { .. }),);
}