diff --git a/.woodpecker.yml b/.woodpecker.yml index dfa4d02..e9545d3 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -43,4 +43,5 @@ steps: - PASSWORD=password - INSTANCE_URL=http://mcaptcha:7000 commands: - - . .env_sample && make test + - mv .env_sample .env.local + - make test diff --git a/Cargo.toml b/Cargo.toml index 089f9af..685d796 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,4 @@ url = "2.5.0" [dev-dependencies] actix-rt = "2.9.0" +dotenv = "0.15.0" diff --git a/Makefile b/Makefile index 2bcba49..628f9d4 100644 --- a/Makefile +++ b/Makefile @@ -9,16 +9,13 @@ test.env: $(eval WIDGET_URL = $(shell . ./venv/bin/activate && python ./scripts/create_captcha.py widget_url $(INSTANCE_URL) $(SITEKEY))) $(eval TOKEN = $(shell ./scripts/download-cli.sh gen_pow $(WIDGET_URL))) @-rm .env.local - echo "export SECRET=$(SECRET)" > .env.local - echo "export SITEKEY=$(SITEKEY)" >> .env.local - echo "export WIDGET_URL=$(WIDGET_URL)" >> .env.local - echo "export TOKEN=$(TOKEN)" >> .env.local + echo "SECRET=$(SECRET)" > .env.local + echo "SITEKEY=$(SITEKEY)" >> .env.local + echo "TOKEN=$(TOKEN)" >> .env.local test: - SITEKEY=$(SITEKEY) SECRET=$(SECRET) \ - INSTANCE_URL=$(INSTANCE_URL) \ - TOKEN=$(TOKEN) cargo test + cargo test lint: black src/ scripts/ diff --git a/src/lib.rs b/src/lib.rs index 9dab94e..82e3b0b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -28,11 +28,9 @@ impl MCaptcha { .post(self.verify_path.clone()) .json(&payload) .send() - .await - .unwrap() + .await? .json() - .await - .unwrap(); + .await?; Ok(res.valid) } @@ -62,16 +60,24 @@ impl<'a> CaptchaVerfiyPayload<'a> { #[cfg(test)] mod tests { - use super::*; use std::env; + use super::*; + #[actix_rt::test] async fn verify_works() { + dotenv::from_filename(".env.local").ok(); + let instance_url = env::var("INSTANCE_URL").expect("instance url not set"); let sitekey = env::var("SITEKEY").expect("sitekey not set"); let secret = env::var("SECRET").expect("secret not set"); let token = env::var("TOKEN").expect("token not set"); + println!("token={token}"); + println!("sitekey={sitekey}"); + println!("secret={secret}"); + println!("instance_url={instance_url}"); + let mcaptcha = MCaptcha::new( sitekey, secret,