Skip to content

Commit bfc89a5

Browse files
chore(kms-connector): remove check decryption already done (#2030)
* chore(kms-connector): remove check decryption already done * chore(kms-connector): remove useless mock
1 parent 0383d75 commit bfc89a5

File tree

6 files changed

+20
-125
lines changed

6 files changed

+20
-125
lines changed

kms-connector/crates/kms-worker/src/core/event_processor/decryption.rs

Lines changed: 1 addition & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -76,26 +76,6 @@ where
7676
}
7777
}
7878

79-
pub async fn check_decryption_not_already_done(
80-
&self,
81-
decryption_id: U256,
82-
) -> Result<(), ProcessingError> {
83-
let is_decryption_done = self
84-
.decryption_contract
85-
.isDecryptionDone(decryption_id)
86-
.call()
87-
.await
88-
.map_err(|e| ProcessingError::Recoverable(anyhow::Error::from(e)))?;
89-
90-
if is_decryption_done {
91-
return Err(ProcessingError::Irrecoverable(anyhow!(
92-
"Decryption already done on the Gateway"
93-
)));
94-
}
95-
96-
Ok(())
97-
}
98-
9979
#[tracing::instrument(skip_all)]
10080
pub async fn check_ciphertexts_allowed_for_public_decryption(
10181
&self,
@@ -427,65 +407,10 @@ mod tests {
427407
enum ExpectedOutcome {
428408
Ok,
429409
Recoverable,
410+
#[allow(unused)]
430411
Irrecoverable,
431412
}
432413

433-
enum DecryptionReadyMock {
434-
Failure(&'static str),
435-
Success(bool),
436-
}
437-
438-
#[rstest]
439-
#[case::transport_error(
440-
DecryptionReadyMock::Failure("Transport Error"),
441-
ExpectedOutcome::Recoverable
442-
)]
443-
#[case::not_done(DecryptionReadyMock::Success(false), ExpectedOutcome::Ok)]
444-
#[case::already_done(DecryptionReadyMock::Success(true), ExpectedOutcome::Irrecoverable)]
445-
#[tokio::test]
446-
async fn check_decryption_not_already_done(
447-
#[case] mock_response: DecryptionReadyMock,
448-
#[case] expected: ExpectedOutcome,
449-
) {
450-
let asserter = Asserter::new();
451-
let mock_provider = ProviderBuilder::new()
452-
.disable_recommended_fillers()
453-
.connect_mocked_client(asserter.clone());
454-
let acl_contracts_mock = HashMap::from([(
455-
u64::default(),
456-
ACL::new(Address::default(), mock_provider.clone()),
457-
)]);
458-
459-
let config = Config::default();
460-
let s3_service = S3Service::new(&config, mock_provider.clone(), reqwest::Client::new());
461-
let decryption_processor = DecryptionProcessor::new(
462-
&config,
463-
MockContextManager,
464-
mock_provider,
465-
acl_contracts_mock,
466-
s3_service,
467-
);
468-
469-
match mock_response {
470-
DecryptionReadyMock::Failure(msg) => asserter.push_failure_msg(msg),
471-
DecryptionReadyMock::Success(val) => asserter.push_success(&val.abi_encode()),
472-
}
473-
474-
let result = decryption_processor
475-
.check_decryption_not_already_done(U256::ZERO)
476-
.await;
477-
478-
match expected {
479-
ExpectedOutcome::Ok => result.unwrap(),
480-
ExpectedOutcome::Recoverable => {
481-
assert!(matches!(result, Err(ProcessingError::Recoverable(_))))
482-
}
483-
ExpectedOutcome::Irrecoverable => {
484-
assert!(matches!(result, Err(ProcessingError::Irrecoverable(_))))
485-
}
486-
}
487-
}
488-
489414
enum PubDecryptACLMock {
490415
Failure(&'static str),
491416
Success(bool),

kms-connector/crates/kms-worker/src/core/event_processor/processor.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,6 @@ impl<GP: Provider, HP: Provider, C: ContextManager> DbEventProcessor<GP, HP, C>
124124
) -> Result<KmsGrpcRequest, ProcessingError> {
125125
let request = match &event.kind {
126126
GatewayEventKind::PublicDecryption(req) => {
127-
self.decryption_processor
128-
.check_decryption_not_already_done(req.decryptionId)
129-
.await?;
130127
self.decryption_processor
131128
.check_ciphertexts_allowed_for_public_decryption(&req.snsCtMaterials)
132129
.await?;

kms-connector/crates/kms-worker/tests/acl.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
mod common;
22

33
use crate::common::{create_mock_user_decryption_request_tx, init_kms_worker};
4-
use alloy::{
5-
providers::{ProviderBuilder, mock::Asserter},
6-
sol_types::SolValue,
7-
};
4+
use alloy::providers::{ProviderBuilder, mock::Asserter};
85
use connector_utils::{
96
tests::{
107
db::requests::{
@@ -45,10 +42,7 @@ async fn test_decryption_acl_failure(#[case] event_type: EventType) -> anyhow::R
4542
.with_tx_hash(tx_hash);
4643
for _ in 0..MAX_DECRYPTION_ATTEMPTS {
4744
match event_type {
48-
EventType::PublicDecryptionRequest => {
49-
// Mocking isDecryptionDone returns false
50-
asserter.push_success(&false.abi_encode());
51-
}
45+
EventType::PublicDecryptionRequest => (),
5246
EventType::UserDecryptionRequest => {
5347
// Mocking `get_transaction_by_hash` call result
5448
let mock_tx = create_mock_user_decryption_request_tx(tx_hash, sns_ct.ctHandle)?;

kms-connector/crates/kms-worker/tests/attempt_limit.rs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,11 @@ async fn test_request_processing(#[case] event_type: EventType) -> anyhow::Resul
6060
.with_sns_ct_materials(vec![sns_ct.clone()])
6161
.with_tx_hash(tx_hash);
6262
for attempt in 0..MAX_DECRYPTION_ATTEMPTS {
63-
match event_type {
64-
EventType::PublicDecryptionRequest => {
65-
// Mocking isDecryptionDone returns false
66-
asserter.push_success(&false.abi_encode());
67-
}
68-
EventType::UserDecryptionRequest => {
69-
// Mocking `get_transaction_by_hash` call result
70-
let mock_tx = create_mock_user_decryption_request_tx(tx_hash, sns_ct.ctHandle)?;
71-
asserter.push_success(&mock_tx);
72-
}
73-
_ => (),
74-
};
63+
if matches!(event_type, EventType::UserDecryptionRequest) {
64+
// Mocking `get_transaction_by_hash` call result
65+
let mock_tx = create_mock_user_decryption_request_tx(tx_hash, sns_ct.ctHandle)?;
66+
asserter.push_success(&mock_tx);
67+
}
7568

7669
// First attempt, the copro URL is not cached yet
7770
if attempt == 0 {

kms-connector/crates/kms-worker/tests/context.rs

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,18 +52,11 @@ async fn test_decryption_context_not_found(#[case] event_type: EventType) -> any
5252
.with_context_id(unknown_context_id);
5353

5454
for _ in 0..MAX_DECRYPTION_ATTEMPTS {
55-
match event_type {
56-
EventType::PublicDecryptionRequest => {
57-
// Mocking isDecryptionDone returns false
58-
asserter.push_success(&false.abi_encode());
59-
}
60-
EventType::UserDecryptionRequest => {
61-
// Mocking `get_transaction_by_hash` call result
62-
let mock_tx = create_mock_user_decryption_request_tx(tx_hash, sns_ct.ctHandle)?;
63-
asserter.push_success(&mock_tx);
64-
}
65-
_ => panic!("Unexpected event type"),
66-
};
55+
if matches!(event_type, EventType::UserDecryptionRequest) {
56+
// Mocking `get_transaction_by_hash` call result
57+
let mock_tx = create_mock_user_decryption_request_tx(tx_hash, sns_ct.ctHandle)?;
58+
asserter.push_success(&mock_tx);
59+
}
6760
}
6861

6962
let gateway_mock_provider = ProviderBuilder::new()

kms-connector/crates/kms-worker/tests/integration_tests.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,13 @@ async fn test_processing_request(
7070
let mut insert_options = InsertRequestOptions::new()
7171
.with_already_sent(already_sent)
7272
.with_sns_ct_materials(vec![sns_ct.clone()]);
73-
match event_type {
74-
EventType::PublicDecryptionRequest => {
75-
// Mocking isDecryptionDone returns false
76-
asserter.push_success(&false.abi_encode());
77-
}
78-
EventType::UserDecryptionRequest => {
79-
// Mocking `get_transaction_by_hash` call result
80-
let tx_hash = rand_digest();
81-
let mock_tx = create_mock_user_decryption_request_tx(tx_hash, sns_ct.ctHandle)?;
82-
insert_options = insert_options.with_tx_hash(tx_hash);
83-
asserter.push_success(&mock_tx);
84-
}
85-
_ => (),
86-
};
73+
if matches!(event_type, EventType::UserDecryptionRequest) {
74+
// Mocking `get_transaction_by_hash` call result
75+
let tx_hash = rand_digest();
76+
let mock_tx = create_mock_user_decryption_request_tx(tx_hash, sns_ct.ctHandle)?;
77+
insert_options = insert_options.with_tx_hash(tx_hash);
78+
asserter.push_success(&mock_tx);
79+
}
8780

8881
let get_copro_call_response = Coprocessor {
8982
s3BucketUrl: format!("{}/ct128", test_instance.s3_url()),

0 commit comments

Comments
 (0)