Skip to content

Commit

Permalink
Add CI
Browse files Browse the repository at this point in the history
  • Loading branch information
tarrencev committed Mar 18, 2024
1 parent 961655d commit 6189750
Show file tree
Hide file tree
Showing 14 changed files with 111 additions and 42 deletions.
67 changes: 67 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: ci

on:
push:
branches:
- main
pull_request:

env:
CARGO_TERM_COLOR: always
RUST_VERSION: nightly

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
components: llvm-tools-preview
- uses: taiki-e/install-action@cargo-llvm-cov
- run: cargo llvm-cov --all-features --lcov --output-path lcov.info
- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: lcov.info

ensure-wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
target: wasm32-unknown-unknown
- run: cargo build -r --target wasm32-unknown-unknown -p account-sdk

cairo-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.5.3"
- run: scarb fmt --check
- run: scarb test

clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
components: clippy
- run: cargo clippy --all-targets --all-features

fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
toolchain: ${{ env.RUST_VERSION }}
components: rustfmt
- run: cargo +nightly fmt --check --all
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,5 @@ Cargo.lock

# Logs
**/log/

lcov.info
3 changes: 1 addition & 2 deletions crates/account_sdk/src/felt_ser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -395,8 +395,7 @@ mod tests {
let serialized = vec![val.a, val.i.into(), val.x.into()];
let seq = (0..100).map(|_| val.clone()).collect::<Vec<_>>();
let mut result = (0..100)
.map(|_| serialized.clone())
.flatten()
.flat_map(|_| serialized.clone())
.collect::<Vec<_>>();
result.insert(0, seq.len().into());
assert_eq!(to_felts(&seq), result);
Expand Down
21 changes: 10 additions & 11 deletions crates/account_sdk/src/tests/deployment_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ pub async fn create_account<'a>(
SigningKey,
) {
let provider = *from.provider();
let class_hash = declare(provider, &from).await;
let class_hash = declare(provider, from).await;
let private_key = SigningKey::from_random();
let deployed_address = deploy(
provider,
&from,
from,
private_key.verifying_key().scalar(),
class_hash,
)
Expand Down Expand Up @@ -53,13 +53,12 @@ pub async fn declare(
client: &JsonRpcClient<HttpTransport>,
account: &SingleOwnerAccount<&JsonRpcClient<HttpTransport>, LocalWallet>,
) -> FieldElement {
let DeclareTransactionResult { class_hash, .. } =
AccountDeclaration::cartridge_account(&client)
.declare(&account)
.await
.unwrap()
.wait_for_completion()
.await;
let DeclareTransactionResult { class_hash, .. } = AccountDeclaration::cartridge_account(client)
.declare(account)
.await
.unwrap()
.wait_for_completion()
.await;

class_hash
}
Expand All @@ -72,8 +71,8 @@ pub async fn deploy(
) -> FieldElement {
let DeployResult {
deployed_address, ..
} = AccountDeployment::new(&client)
.deploy(vec![public_key], FieldElement::ZERO, &account, class_hash)
} = AccountDeployment::new(client)
.deploy(vec![public_key], FieldElement::ZERO, account, class_hash)
.await
.unwrap()
.wait_for_completion()
Expand Down
8 changes: 4 additions & 4 deletions crates/account_sdk/src/tests/session/uitls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ use crate::{abigen::account::Call, tests::runners::TestnetRunner};

use crate::session_token::Session;

pub async fn create_session_account<'a, T>(
runner: &'a T,
pub async fn create_session_account<T>(
runner: &T,
) -> (
SessionAccount<&'a JsonRpcClient<HttpTransport>, LocalWallet>,
SessionAccount<&JsonRpcClient<HttpTransport>, LocalWallet>,
SigningKey,
SingleOwnerAccount<&'a JsonRpcClient<HttpTransport>, LocalWallet>,
SingleOwnerAccount<&JsonRpcClient<HttpTransport>, LocalWallet>,
)
where
T: TestnetRunner,
Expand Down
2 changes: 1 addition & 1 deletion crates/cartridge_account/src/lib.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ mod Account {
}

fn _execute_single_call(call: Call) -> Span<felt252> {
let Call{to, selector, calldata } = call;
let Call { to, selector, calldata } = call;
starknet::call_contract_syscall(to, selector, calldata).unwrap()
}
}
6 changes: 2 additions & 4 deletions crates/webauthn/auth/src/deserializable_endpoints.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,11 @@ fn verify_hashed_ecdsa_endpoint(
verify_hashed_ecdsa(pub_key_point, msg_hash, r, s)
}

fn expand_auth_data_endpoint(
auth_data: Array<u8>
) -> AuthenticatorData {
fn expand_auth_data_endpoint(auth_data: Array<u8>) -> AuthenticatorData {
let data: Option<AuthenticatorData> = ImplArrayu8TryIntoAuthData::try_into(auth_data);
return data.unwrap();
}

fn extract_u256_from_u8_array_endpoint(bytes: Array<u8>, offset: u32) -> Option<u256> {
extract_u256_from_u8_array(@bytes, offset)
}
}
1 change: 0 additions & 1 deletion crates/webauthn/session/src/tests.cairo
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
mod signature_deserialization;


6 changes: 6 additions & 0 deletions crates/webauthn/tests/src/arg_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,12 @@ impl ArgsBuilder {
}
}

impl Default for ArgsBuilder {
fn default() -> Self {
Self::new()
}
}

pub trait FeltSerialize {
fn to_felts(self) -> Vec<Felt252>;
}
2 changes: 1 addition & 1 deletion crates/webauthn/tests/src/auth/expand_auth_data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ impl FeltSerialize for AuthenticatorData {

#[test]
fn test_expand_auth_data_1() {
let d: Vec<u8> = (0_u8..32_u8).into_iter().collect();
let d: Vec<u8> = (0_u8..32_u8).collect();
let auth_data = AuthenticatorData {
rp_id_hash: d.try_into().unwrap(),
flags: 0,
Expand Down
27 changes: 13 additions & 14 deletions crates/webauthn/tests/src/auth/verify_signature.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ fn verify_signature(
.add_array(hash.iter().cloned())
.add_array(auth_data.iter().cloned())
.add_struct(pub_key.to_felts())
.add_array(r.into_iter().copied().chain(s.iter().copied()));
.add_array(r.iter().copied().chain(s.iter().copied()));
let result: [Felt252; 2] = VERIFY_SIGNATURE.run(args.build());
result == [0.into(), 0.into()]
}
Expand All @@ -39,7 +39,7 @@ fn test_verify_signature_1() {
let hash: &[u8] = b"hello world";
let auth_data = b"dummy auth data";
let signing_key = SigningKey::random(&mut OsRng);
let (signature, _) = signing_key.sign(&vec![auth_data, hash].concat());
let (signature, _) = signing_key.sign(&[auth_data, hash].concat());
assert!(verify_signature(hash, auth_data, signing_key, signature))
}

Expand All @@ -48,7 +48,7 @@ fn test_verify_signature_2() {
let hash: &[u8] = b"1234567890987654321";
let auth_data = b"auuuuuuuuuuth daaaaataaaaaaaaaa";
let signing_key = SigningKey::random(&mut OsRng);
let (signature, _) = signing_key.sign(&vec![auth_data, hash].concat());
let (signature, _) = signing_key.sign(&[auth_data, hash].concat());
assert!(verify_signature(hash, auth_data, signing_key, signature))
}

Expand All @@ -58,11 +58,8 @@ fn test_verify_signature_should_fail_1() {
let auth_data = b"dummy auth data";
let wrong_hash: &[u8] = b"definetly not hello world";
let signing_key = SigningKey::random(&mut OsRng);
let (signature, _) = signing_key.sign(&vec![auth_data, wrong_hash].concat());
assert_eq!(
verify_signature(hash, auth_data, signing_key, signature),
false
)
let (signature, _) = signing_key.sign(&[auth_data, wrong_hash].concat());
assert!(!verify_signature(hash, auth_data, signing_key, signature),)
}

#[test]
Expand All @@ -71,11 +68,13 @@ fn test_verify_signature_should_fail_2() {
let auth_data = b"dummy auth data";
let signing_key = SigningKey::random(&mut OsRng);
let other_signing_key = SigningKey::random(&mut OsRng);
let (signature, _) = signing_key.sign(&vec![auth_data, hash].concat());
assert_eq!(
verify_signature(hash, auth_data, other_signing_key, signature),
false
)
let (signature, _) = signing_key.sign(&[auth_data, hash].concat());
assert!(!verify_signature(
hash,
auth_data,
other_signing_key,
signature
))
}

proptest! {
Expand All @@ -90,7 +89,7 @@ proptest! {
.prop_map(|b| SigningKey::from(SecretKey::from_bytes(&b.into()).unwrap()))
),
) {
let (signature, _) = signing_key.sign(&vec![auth_data.clone(), hash.clone()].concat());
let (signature, _) = signing_key.sign(&[auth_data.clone(), hash.clone()].concat());
assert!(verify_signature(&hash, &auth_data, signing_key, signature))
}
}
2 changes: 1 addition & 1 deletion crates/webauthn/tests/src/prop_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use proptest::prelude::*;
pub struct Felt252Strategy;

impl Felt252Strategy {
pub fn new() -> impl Strategy<Value = Felt252> {
pub fn new_strategy() -> impl Strategy<Value = Felt252> {
prop::collection::vec(any::<u8>(), 32..=32).prop_map(|b| Felt252::from_bytes_be(&b))
}
}
2 changes: 1 addition & 1 deletion crates/webauthn/tests/src/session/prop_signature_proofs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ fn vec_vec_felt252_strategy(
) -> impl Strategy<Value = (Vec<Vec<Felt252>>, usize)> {
(
prop::collection::vec(
prop::collection::vec(Felt252Strategy::new(), inner_len..=inner_len),
prop::collection::vec(Felt252Strategy::new_strategy(), inner_len..=inner_len),
outer_len..=outer_len,
),
Just(inner_len),
Expand Down
4 changes: 2 additions & 2 deletions crates/webauthn/tests/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ use cairo_args_runner::errors::SierraRunnerError;
use cairo_args_runner::SuccessfulRun;
use cairo_args_runner::{Arg, Felt252};

pub const WEBAUTHN_SIERRA_TARGET: &'static str = "../../../target/dev/webauthn_auth.sierra.json";
pub const SESSION_SIERRA_TARGET: &'static str = "../../../target/dev/webauthn_session.sierra.json";
pub const WEBAUTHN_SIERRA_TARGET: &str = "../../../target/dev/webauthn_auth.sierra.json";
pub const SESSION_SIERRA_TARGET: &str = "../../../target/dev/webauthn_session.sierra.json";

#[derive(Debug, Clone, Copy)]
pub struct Function<'a, AP, RE>
Expand Down

0 comments on commit 6189750

Please sign in to comment.