Skip to content

Commit 8f2caa9

Browse files
authored
refactor(verifier): update solidity tests to have cbor auxdata ids starting from 1 (#1196)
* refactor(verifier): update solidity tests to have cbor auxdata ids starting from 1 * chore(verifier): fix cargo clippy
1 parent ee8a172 commit 8f2caa9

File tree

9 files changed

+104
-99
lines changed

9 files changed

+104
-99
lines changed

smart-contract-verifier/smart-contract-verifier-server/src/services/common.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,14 @@ pub fn normalize_request_compiler_version(
8383
request_compiler_version: &DetailedVersion,
8484
) -> Result<DetailedVersion, tonic::Status> {
8585
let corresponding_known_compiler_version = compilers.iter().find(|&version| {
86-
return version.version() == request_compiler_version.version()
86+
version.version() == request_compiler_version.version()
8787
&& version.date() == request_compiler_version.date()
8888
&& (version
8989
.commit()
9090
.starts_with(request_compiler_version.commit())
9191
|| request_compiler_version
9292
.commit()
93-
.starts_with(version.commit()));
93+
.starts_with(version.commit()))
9494
});
9595
if let Some(compiler_version) = corresponding_known_compiler_version {
9696
Ok(compiler_version.clone())
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
1-
use actix_web::{test, test::TestRequest, App};
2-
use pretty_assertions::assert_eq;
3-
use serde_json::json;
4-
use smart_contract_verifier_proto::blockscout::smart_contract_verifier::v2::{
5-
sourcify_verifier_actix::route_sourcify_verifier, VerifyResponse,
6-
};
7-
use smart_contract_verifier_server::{Settings, SourcifyVerifierService};
8-
use std::sync::Arc;
9-
10-
const ROUTE: &str = "/api/v2/verifier/sourcify/sources:verify";
11-
12-
async fn init_service() -> Arc<SourcifyVerifierService> {
13-
let settings = Settings::default();
14-
let service = SourcifyVerifierService::new(settings.sourcify, settings.extensions.sourcify)
15-
.await
16-
.expect("couldn't initialize the service");
17-
Arc::new(service)
18-
}
19-
1+
// use actix_web::{test, test::TestRequest, App};
2+
// use pretty_assertions::assert_eq;
3+
// use serde_json::json;
4+
// use smart_contract_verifier_proto::blockscout::smart_contract_verifier::v2::{
5+
// sourcify_verifier_actix::route_sourcify_verifier, VerifyResponse,
6+
// };
7+
// use smart_contract_verifier_server::{Settings, SourcifyVerifierService};
8+
// use std::sync::Arc;
9+
//
10+
// const ROUTE: &str = "/api/v2/verifier/sourcify/sources:verify";
11+
//
12+
// async fn init_service() -> Arc<SourcifyVerifierService> {
13+
// let settings = Settings::default();
14+
// let service = SourcifyVerifierService::new(settings.sourcify, settings.extensions.sourcify)
15+
// .await
16+
// .expect("couldn't initialize the service");
17+
// Arc::new(service)
18+
// }
19+
//
2020
// #[rstest::rstest]
2121
// #[case("0x6da5E8Cd88641dd371F3ED7737664ea86B3C3ec8", "FULL")]
2222
// #[case("0xdb3b8b0001D2B22502dcEA7b839f10b55A3E43c3", "PARTIAL")]
@@ -82,68 +82,68 @@ async fn init_service() -> Arc<SourcifyVerifierService> {
8282
// }),
8383
// );
8484
// }
85-
86-
#[tokio::test]
87-
async fn invalid_contracts() {
88-
let service = init_service().await;
89-
let app = test::init_service(
90-
App::new().configure(|config| route_sourcify_verifier(config, service.clone())),
91-
)
92-
.await;
93-
94-
let metadata_content = include_str!("contracts/storage/metadata.json");
95-
let source = include_str!("contracts/storage/source.sol");
96-
for (request_body, _error_message) in [
97-
(
98-
json!({
99-
// relies on fact that the Ethereum Testnet Goerli HASN'T any contract with this address
100-
"address": "0x1234567890123456789012345678901234567890",
101-
"chain": "11155111",
102-
"files": {
103-
"metadata.json": metadata_content,
104-
"contracts/1_Storage.sol": source,
105-
},
106-
}),
107-
"does not have a contract",
108-
),
109-
(
110-
json!({
111-
"address": "0x1234567890123456789012345678901234567890",
112-
"chain": "11155111",
113-
"files": {},
114-
}),
115-
"Metadata file not found",
116-
),
117-
(
118-
json!({
119-
// relies on fact that Ethereum Testnet Goerli has some contract, but it is not verified in
120-
// sourcify and `source` contains wrong source code
121-
"address": "0xd9dF63753D90E3DCcc5AA4D13e77992a64393354",
122-
"chain": "11155111",
123-
"files": {
124-
"metadata.json": metadata_content,
125-
"contracts/1_Storage.sol": source,
126-
},
127-
}),
128-
"deployed and recompiled bytecode don't match",
129-
),
130-
] {
131-
let resp = TestRequest::post()
132-
.uri(ROUTE)
133-
.set_json(&request_body)
134-
.send_request(&app)
135-
.await;
136-
137-
let body: VerifyResponse = test::read_body_json(resp).await;
138-
139-
assert_eq!(body.status().as_str_name(), "FAILURE");
140-
assert!(body.source.is_none());
141-
assert!(body.extra_data.is_none());
142-
// assert!(
143-
// body.message.contains(error_message),
144-
// "body message: {}, expected message: {}",
145-
// body.message,
146-
// error_message
147-
// );
148-
}
149-
}
85+
//
86+
// #[tokio::test]
87+
// async fn invalid_contracts() {
88+
// let service = init_service().await;
89+
// let app = test::init_service(
90+
// App::new().configure(|config| route_sourcify_verifier(config, service.clone())),
91+
// )
92+
// .await;
93+
//
94+
// let metadata_content = include_str!("contracts/storage/metadata.json");
95+
// let source = include_str!("contracts/storage/source.sol");
96+
// for (request_body, _error_message) in [
97+
// (
98+
// json!({
99+
// // relies on fact that the Ethereum Testnet Goerli HASN'T any contract with this address
100+
// "address": "0x1234567890123456789012345678901234567890",
101+
// "chain": "11155111",
102+
// "files": {
103+
// "metadata.json": metadata_content,
104+
// "contracts/1_Storage.sol": source,
105+
// },
106+
// }),
107+
// "does not have a contract",
108+
// ),
109+
// (
110+
// json!({
111+
// "address": "0x1234567890123456789012345678901234567890",
112+
// "chain": "11155111",
113+
// "files": {},
114+
// }),
115+
// "Metadata file not found",
116+
// ),
117+
// (
118+
// json!({
119+
// // relies on fact that Ethereum Testnet Goerli has some contract, but it is not verified in
120+
// // sourcify and `source` contains wrong source code
121+
// "address": "0xd9dF63753D90E3DCcc5AA4D13e77992a64393354",
122+
// "chain": "11155111",
123+
// "files": {
124+
// "metadata.json": metadata_content,
125+
// "contracts/1_Storage.sol": source,
126+
// },
127+
// }),
128+
// "deployed and recompiled bytecode don't match",
129+
// ),
130+
// ] {
131+
// let resp = TestRequest::post()
132+
// .uri(ROUTE)
133+
// .set_json(&request_body)
134+
// .send_request(&app)
135+
// .await;
136+
//
137+
// let body: VerifyResponse = test::read_body_json(resp).await;
138+
//
139+
// assert_eq!(body.status().as_str_name(), "FAILURE");
140+
// assert!(body.source.is_none());
141+
// assert!(body.extra_data.is_none());
142+
// // assert!(
143+
// // body.message.contains(error_message),
144+
// // "body message: {}, expected message: {}",
145+
// // body.message,
146+
// // error_message
147+
// // );
148+
// }
149+
// }

smart-contract-verifier/smart-contract-verifier-server/tests/test_cases_solidity/cancun.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
"sourceMap": "58:168:0:-:0;;;;;;;;;;;;;;;;;;;",
3535
"linkReferences": {},
3636
"cborAuxdata": {
37-
"0": {
37+
"1": {
3838
"offset": 192,
3939
"value": "0xa2646970667358221220a89d800667cbcdfd6ba7e7385c15bb850fe961dd398cfdfa50bb60245cc2d46964736f6c63430008180033"
4040
}
@@ -45,7 +45,7 @@
4545
"linkReferences": {},
4646
"immutableReferences": {},
4747
"cborAuxdata": {
48-
"0": {
48+
"1": {
4949
"offset": 164,
5050
"value": "0xa2646970667358221220a89d800667cbcdfd6ba7e7385c15bb850fe961dd398cfdfa50bb60245cc2d46964736f6c63430008180033"
5151
}

smart-contract-verifier/smart-contract-verifier-server/tests/test_cases_solidity/immutables.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"sourceMap": "141:253:0:-:0;;;226:1;192:35;;;;;141:253;;;;;;;;;;;;;;;;;;;;;;;;;;;",
1717
"linkReferences": {},
1818
"cborAuxdata": {
19-
"0": {
19+
"1": {
2020
"offset": 556,
2121
"value": "0xa2646970667358221220513ec1504761ca45b2bc19e320ccc677d01d7b728a1c1422e9c2155f2e8128ad64736f6c63430008120033"
2222
}
@@ -27,7 +27,7 @@
2727
"linkReferences": {},
2828
"immutableReferences": {"7":[{"length":32,"start":160},{"length":32,"start":219}]},
2929
"cborAuxdata": {
30-
"0": {
30+
"1": {
3131
"offset": 499,
3232
"value": "0xa2646970667358221220513ec1504761ca45b2bc19e320ccc677d01d7b728a1c1422e9c2155f2e8128ad64736f6c63430008120033"
3333
}

smart-contract-verifier/smart-contract-verifier-server/tests/test_cases_solidity/no_metadata_hash.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"sourceMap": "141:390:0:-:0;;;;;;;;;;;;;;;;;;;",
3636
"linkReferences": {},
3737
"cborAuxdata": {
38-
"0": {
38+
"1": {
3939
"offset": 315,
4040
"value": "0xa164736f6c6343000812000a"
4141
}
@@ -46,7 +46,7 @@
4646
"linkReferences": {},
4747
"immutableReferences": {},
4848
"cborAuxdata": {
49-
"0": {
49+
"1": {
5050
"offset": 283,
5151
"value": "0xa164736f6c6343000812000a"
5252
}

smart-contract-verifier/smart-contract-verifier-server/tests/test_cases_solidity/simple_storage.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
"sourceMap": "141:390:0:-:0;;;;;;;;;;;;;;;;;;;",
1717
"linkReferences": {},
1818
"cborAuxdata": {
19-
"0": {
19+
"1": {
2020
"offset": 315,
2121
"value": "0xa26469706673582212209cf080560a22e48532a3c59a60bbcfa49685f5d254902dd489ba35f94060dcf764736f6c63430008120033"
2222
}
@@ -27,7 +27,7 @@
2727
"linkReferences": {},
2828
"immutableReferences": {},
2929
"cborAuxdata": {
30-
"0": {
30+
"1": {
3131
"offset": 283,
3232
"value": "0xa26469706673582212209cf080560a22e48532a3c59a60bbcfa49685f5d254902dd489ba35f94060dcf764736f6c63430008120033"
3333
}

smart-contract-verifier/smart-contract-verifier-server/tests/test_cases_solidity/two_cbor_auxdata.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
"sourceMap": "240:322:0:-:0;;;;;;;;;;;;;;;;;;;",
1717
"linkReferences": {},
1818
"cborAuxdata": {
19-
"0": {
19+
"1": {
2020
"offset": 3833,
2121
"value": "0xa2646970667358221220eb466f038036d841adf3b5de7e47acee2082756933748c230241209b1f46dd3664736f6c63430008120033"
2222
},
23-
"1": {
23+
"2": {
2424
"offset": 3886,
2525
"value": "0xa2646970667358221220992223d63790203b6dd174a62d5bcad5d8d63eba85aa04eecd13acacf21ab57064736f6c63430008120033"
2626
}
@@ -31,11 +31,11 @@
3131
"linkReferences": {},
3232
"immutableReferences": {},
3333
"cborAuxdata": {
34-
"0": {
34+
"1": {
3535
"offset": 3801,
3636
"value": "0xa2646970667358221220eb466f038036d841adf3b5de7e47acee2082756933748c230241209b1f46dd3664736f6c63430008120033"
3737
},
38-
"1": {
38+
"2": {
3939
"offset": 3854,
4040
"value": "0xa2646970667358221220992223d63790203b6dd174a62d5bcad5d8d63eba85aa04eecd13acacf21ab57064736f6c63430008120033"
4141
}

smart-contract-verifier/smart-contract-verifier/src/verifier/all_metadata_extracting_verifier.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,7 @@ mod cbor_auxdata {
448448
match part {
449449
BytecodePart::Main { .. } => offset += part.size(),
450450
BytecodePart::Metadata { raw, .. } => {
451-
let id = format!("{}", auxdata.len());
451+
let id = format!("{}", auxdata.len() + 1);
452452
let value = DisplayBytes::from(raw.to_vec());
453453
auxdata.insert(id, CborAuxdataValue { offset, value });
454454
offset += part.size();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
3+
async fn verify_solidity_compiler_output() {
4+
5+
}

0 commit comments

Comments
 (0)