mirror of
https://github.com/logos-blockchain/lssa.git
synced 2026-01-04 06:13:10 +00:00
fix: merge lint test fixes
This commit is contained in:
parent
88872f31dd
commit
95fec47897
@ -36,6 +36,8 @@ pub struct GetLastBlockRequest {}
|
|||||||
|
|
||||||
#[derive(Serialize, Deserialize, Debug)]
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
pub struct GetInitialTestnetAccountsRequest {}
|
pub struct GetInitialTestnetAccountsRequest {}
|
||||||
|
|
||||||
|
#[derive(Serialize, Deserialize, Debug)]
|
||||||
pub struct GetAccountBalanceRequest {
|
pub struct GetAccountBalanceRequest {
|
||||||
pub address: String,
|
pub address: String,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -972,7 +972,7 @@ impl NodeCore {
|
|||||||
|
|
||||||
let sc_addr = hex::encode([0; 32]);
|
let sc_addr = hex::encode([0; 32]);
|
||||||
|
|
||||||
//Native does not change its state
|
//Native contract does not change its state
|
||||||
let state_changes: Vec<DataBlobChangeVariant> = vec![];
|
let state_changes: Vec<DataBlobChangeVariant> = vec![];
|
||||||
let new_len = 0;
|
let new_len = 0;
|
||||||
let state_changes = (serde_json::to_value(state_changes).unwrap(), new_len);
|
let state_changes = (serde_json::to_value(state_changes).unwrap(), new_len);
|
||||||
@ -990,8 +990,7 @@ impl NodeCore {
|
|||||||
secret_r,
|
secret_r,
|
||||||
sc_addr,
|
sc_addr,
|
||||||
state_changes,
|
state_changes,
|
||||||
)
|
);
|
||||||
.into();
|
|
||||||
tx.log();
|
tx.log();
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -111,35 +111,6 @@ impl SequencerCore {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Balance check
|
|
||||||
if let Ok(native_transfer_action) =
|
|
||||||
serde_json::from_slice::<PublicNativeTokenSend>(&execution_input)
|
|
||||||
{
|
|
||||||
let from_balance = self
|
|
||||||
.store
|
|
||||||
.acc_store
|
|
||||||
.get_account_balance(&native_transfer_action.from);
|
|
||||||
let to_balance = self
|
|
||||||
.store
|
|
||||||
.acc_store
|
|
||||||
.get_account_balance(&native_transfer_action.to);
|
|
||||||
|
|
||||||
if from_balance >= native_transfer_action.moved_balance {
|
|
||||||
self.store.acc_store.set_account_balance(
|
|
||||||
&native_transfer_action.from,
|
|
||||||
from_balance - native_transfer_action.moved_balance,
|
|
||||||
);
|
|
||||||
self.store.acc_store.set_account_balance(
|
|
||||||
&native_transfer_action.to,
|
|
||||||
to_balance + native_transfer_action.moved_balance,
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return Err(TransactionMalformationErrorKind::BalanceMismatch { tx: tx_hash });
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return Err(TransactionMalformationErrorKind::FailedToDecode { tx: tx_hash });
|
|
||||||
}
|
|
||||||
|
|
||||||
//Sanity check
|
//Sanity check
|
||||||
match tx_kind {
|
match tx_kind {
|
||||||
TxKind::Public => {
|
TxKind::Public => {
|
||||||
@ -206,6 +177,33 @@ impl SequencerCore {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Balance check
|
||||||
|
if let Ok(native_transfer_action) =
|
||||||
|
serde_json::from_slice::<PublicNativeTokenSend>(execution_input)
|
||||||
|
{
|
||||||
|
let from_balance = self
|
||||||
|
.store
|
||||||
|
.acc_store
|
||||||
|
.get_account_balance(&native_transfer_action.from);
|
||||||
|
let to_balance = self
|
||||||
|
.store
|
||||||
|
.acc_store
|
||||||
|
.get_account_balance(&native_transfer_action.to);
|
||||||
|
|
||||||
|
if from_balance >= native_transfer_action.moved_balance {
|
||||||
|
self.store.acc_store.set_account_balance(
|
||||||
|
&native_transfer_action.from,
|
||||||
|
from_balance - native_transfer_action.moved_balance,
|
||||||
|
);
|
||||||
|
self.store.acc_store.set_account_balance(
|
||||||
|
&native_transfer_action.to,
|
||||||
|
to_balance + native_transfer_action.moved_balance,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return Err(TransactionMalformationErrorKind::BalanceMismatch { tx: tx_hash });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Ok(tx)
|
Ok(tx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -170,7 +170,7 @@ mod tests {
|
|||||||
let acc1 = Account::new_with_balance(12);
|
let acc1 = Account::new_with_balance(12);
|
||||||
let acc2 = Account::new_with_balance(100);
|
let acc2 = Account::new_with_balance(100);
|
||||||
|
|
||||||
let acc1_addr = acc1.address.clone();
|
let acc1_addr = acc1.address;
|
||||||
|
|
||||||
let mut seq_acc_store = SequencerAccountsStore::new(&[acc1, acc2]);
|
let mut seq_acc_store = SequencerAccountsStore::new(&[acc1, acc2]);
|
||||||
|
|
||||||
@ -197,8 +197,8 @@ mod tests {
|
|||||||
let acc1 = Account::new_with_balance(12);
|
let acc1 = Account::new_with_balance(12);
|
||||||
let acc2 = Account::new_with_balance(100);
|
let acc2 = Account::new_with_balance(100);
|
||||||
|
|
||||||
let acc1_addr = acc1.address.clone();
|
let acc1_addr = acc1.address;
|
||||||
let acc2_addr = acc2.address.clone();
|
let acc2_addr = acc2.address;
|
||||||
|
|
||||||
let seq_acc_store = SequencerAccountsStore::new(&[acc1, acc2]);
|
let seq_acc_store = SequencerAccountsStore::new(&[acc1, acc2]);
|
||||||
|
|
||||||
@ -220,9 +220,9 @@ mod tests {
|
|||||||
let acc2 = Account::new_with_balance(15);
|
let acc2 = Account::new_with_balance(15);
|
||||||
let acc3 = Account::new_with_balance(10);
|
let acc3 = Account::new_with_balance(10);
|
||||||
|
|
||||||
let acc1_addr = acc1.address.clone();
|
let acc1_addr = acc1.address;
|
||||||
let acc2_addr = acc2.address.clone();
|
let acc2_addr = acc2.address;
|
||||||
let acc3_addr = acc3.address.clone();
|
let acc3_addr = acc3.address;
|
||||||
|
|
||||||
let seq_acc_store = SequencerAccountsStore::new(&[acc1, acc2, acc3]);
|
let seq_acc_store = SequencerAccountsStore::new(&[acc1, acc2, acc3]);
|
||||||
|
|
||||||
@ -230,15 +230,15 @@ mod tests {
|
|||||||
assert!(seq_acc_store.contains_account(&acc2_addr));
|
assert!(seq_acc_store.contains_account(&acc2_addr));
|
||||||
assert!(seq_acc_store.contains_account(&acc3_addr));
|
assert!(seq_acc_store.contains_account(&acc3_addr));
|
||||||
|
|
||||||
let acc_balance = seq_acc_store.get_account_balance(&[6; 32]);
|
let acc_balance = seq_acc_store.get_account_balance(&acc1_addr);
|
||||||
|
|
||||||
assert_eq!(acc_balance, 120);
|
assert_eq!(acc_balance, 120);
|
||||||
|
|
||||||
let acc_balance = seq_acc_store.get_account_balance(&[7; 32]);
|
let acc_balance = seq_acc_store.get_account_balance(&acc2_addr);
|
||||||
|
|
||||||
assert_eq!(acc_balance, 15);
|
assert_eq!(acc_balance, 15);
|
||||||
|
|
||||||
let acc_balance = seq_acc_store.get_account_balance(&[8; 32]);
|
let acc_balance = seq_acc_store.get_account_balance(&acc3_addr);
|
||||||
|
|
||||||
assert_eq!(acc_balance, 10);
|
assert_eq!(acc_balance, 10);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -137,6 +137,8 @@ impl JsonHandler {
|
|||||||
respond(helperstruct)
|
respond(helperstruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the initial accounts for testnet
|
||||||
|
/// ToDo: Useful only for testnet and needs to be removed later
|
||||||
async fn get_initial_testnet_accounts(&self, request: Request) -> Result<Value, RpcErr> {
|
async fn get_initial_testnet_accounts(&self, request: Request) -> Result<Value, RpcErr> {
|
||||||
let _get_initial_testnet_accounts_request =
|
let _get_initial_testnet_accounts_request =
|
||||||
GetInitialTestnetAccountsRequest::parse(Some(request.params))?;
|
GetInitialTestnetAccountsRequest::parse(Some(request.params))?;
|
||||||
@ -153,6 +155,8 @@ impl JsonHandler {
|
|||||||
};
|
};
|
||||||
|
|
||||||
respond(accounts_for_serialization)
|
respond(accounts_for_serialization)
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns the balance of the account at the given address.
|
/// Returns the balance of the account at the given address.
|
||||||
/// The address must be a valid hex string of the correct length.
|
/// The address must be a valid hex string of the correct length.
|
||||||
async fn process_get_account_balance(&self, request: Request) -> Result<Value, RpcErr> {
|
async fn process_get_account_balance(&self, request: Request) -> Result<Value, RpcErr> {
|
||||||
@ -165,8 +169,7 @@ impl JsonHandler {
|
|||||||
let balance = {
|
let balance = {
|
||||||
let state = self.sequencer_state.lock().await;
|
let state = self.sequencer_state.lock().await;
|
||||||
state.store.acc_store.get_account_balance(&address)
|
state.store.acc_store.get_account_balance(&address)
|
||||||
}
|
};
|
||||||
.unwrap_or(0);
|
|
||||||
|
|
||||||
let helperstruct = GetAccountBalanceResponse { balance };
|
let helperstruct = GetAccountBalanceResponse { balance };
|
||||||
|
|
||||||
@ -193,6 +196,7 @@ mod tests {
|
|||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use crate::{rpc_handler, JsonHandler};
|
use crate::{rpc_handler, JsonHandler};
|
||||||
|
use accounts::account_core::Account;
|
||||||
use common::rpc_primitives::RpcPollingConfig;
|
use common::rpc_primitives::RpcPollingConfig;
|
||||||
use sequencer_core::{
|
use sequencer_core::{
|
||||||
config::{AccountInitialData, SequencerConfig},
|
config::{AccountInitialData, SequencerConfig},
|
||||||
@ -206,14 +210,8 @@ mod tests {
|
|||||||
let tempdir = tempdir().unwrap();
|
let tempdir = tempdir().unwrap();
|
||||||
let home = tempdir.path().to_path_buf();
|
let home = tempdir.path().to_path_buf();
|
||||||
let initial_accounts = vec![
|
let initial_accounts = vec![
|
||||||
AccountInitialData {
|
AccountInitialData { balance: 100 },
|
||||||
addr: "cafe".repeat(16).to_string(),
|
AccountInitialData { balance: 200 },
|
||||||
balance: 100,
|
|
||||||
},
|
|
||||||
AccountInitialData {
|
|
||||||
addr: "feca".repeat(16).to_string(),
|
|
||||||
balance: 200,
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
SequencerConfig {
|
SequencerConfig {
|
||||||
@ -228,14 +226,24 @@ mod tests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn json_handler_for_tests() -> JsonHandler {
|
fn json_handler_for_tests() -> (JsonHandler, Vec<Account>) {
|
||||||
let config = sequencer_config_for_tests();
|
let config = sequencer_config_for_tests();
|
||||||
let sequencer_core = Arc::new(Mutex::new(SequencerCore::start_from_config(config)));
|
|
||||||
|
|
||||||
JsonHandler {
|
let sequencer_core = SequencerCore::start_from_config(config);
|
||||||
polling_config: RpcPollingConfig::default(),
|
let initial_accounts = sequencer_core
|
||||||
sequencer_state: sequencer_core,
|
.store
|
||||||
}
|
.testnet_initial_accounts_full_data
|
||||||
|
.clone();
|
||||||
|
|
||||||
|
let sequencer_core = Arc::new(Mutex::new(sequencer_core));
|
||||||
|
|
||||||
|
(
|
||||||
|
JsonHandler {
|
||||||
|
polling_config: RpcPollingConfig::default(),
|
||||||
|
sequencer_state: sequencer_core,
|
||||||
|
},
|
||||||
|
initial_accounts,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn call_rpc_handler_with_json(handler: JsonHandler, request_json: Value) -> Value {
|
async fn call_rpc_handler_with_json(handler: JsonHandler, request_json: Value) -> Value {
|
||||||
@ -261,7 +269,7 @@ mod tests {
|
|||||||
|
|
||||||
#[actix_web::test]
|
#[actix_web::test]
|
||||||
async fn test_get_account_balance_for_non_existent_account() {
|
async fn test_get_account_balance_for_non_existent_account() {
|
||||||
let json_handler = json_handler_for_tests();
|
let (json_handler, _) = json_handler_for_tests();
|
||||||
let request = serde_json::json!({
|
let request = serde_json::json!({
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"method": "get_account_balance",
|
"method": "get_account_balance",
|
||||||
@ -283,7 +291,7 @@ mod tests {
|
|||||||
|
|
||||||
#[actix_web::test]
|
#[actix_web::test]
|
||||||
async fn test_get_account_balance_for_invalid_hex() {
|
async fn test_get_account_balance_for_invalid_hex() {
|
||||||
let json_handler = json_handler_for_tests();
|
let (json_handler, _) = json_handler_for_tests();
|
||||||
let request = serde_json::json!({
|
let request = serde_json::json!({
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"method": "get_account_balance",
|
"method": "get_account_balance",
|
||||||
@ -306,7 +314,7 @@ mod tests {
|
|||||||
|
|
||||||
#[actix_web::test]
|
#[actix_web::test]
|
||||||
async fn test_get_account_balance_for_invalid_length() {
|
async fn test_get_account_balance_for_invalid_length() {
|
||||||
let json_handler = json_handler_for_tests();
|
let (json_handler, _) = json_handler_for_tests();
|
||||||
let request = serde_json::json!({
|
let request = serde_json::json!({
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"method": "get_account_balance",
|
"method": "get_account_balance",
|
||||||
@ -329,11 +337,14 @@ mod tests {
|
|||||||
|
|
||||||
#[actix_web::test]
|
#[actix_web::test]
|
||||||
async fn test_get_account_balance_for_existing_account() {
|
async fn test_get_account_balance_for_existing_account() {
|
||||||
let json_handler = json_handler_for_tests();
|
let (json_handler, initial_accounts) = json_handler_for_tests();
|
||||||
|
|
||||||
|
let acc1_addr = hex::encode(initial_accounts[0].address);
|
||||||
|
|
||||||
let request = serde_json::json!({
|
let request = serde_json::json!({
|
||||||
"jsonrpc": "2.0",
|
"jsonrpc": "2.0",
|
||||||
"method": "get_account_balance",
|
"method": "get_account_balance",
|
||||||
"params": { "address": "cafe".repeat(16) },
|
"params": { "address": acc1_addr },
|
||||||
"id": 1
|
"id": 1
|
||||||
});
|
});
|
||||||
let expected_response = serde_json::json!({
|
let expected_response = serde_json::json!({
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user