Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions src/tests/authentication.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::tests::TestApp;
use crate::tests::util::{MockRequestExt, RequestHelper, Response};
use crate::tests::util::{MockRequestExt, MockTokenUser, RequestHelper, Response};

use crate::tests::builders::PublishBuilder;
use crate::tests::util::encode_session_header;
use http::{Method, StatusCode, header};
use insta::assert_snapshot;
Expand All @@ -18,11 +19,11 @@ async fn anonymous_user_unauthorized() {

#[tokio::test(flavor = "multi_thread")]
async fn token_auth_cannot_find_token() {
let (_, anon) = TestApp::init().empty().await;
let mut request = anon.request_builder(Method::GET, URL);
request.header(header::AUTHORIZATION, "cio1tkfake-token");
let response: Response<()> = anon.run(request).await;
let (app, _anon) = TestApp::full().empty().await;

let client = MockTokenUser::with_auth_header("cio1tkfake-token".to_string(), app.clone());
let pb = PublishBuilder::new("foo", "1.0.0");
let response = client.publish_crate(pb).await;
assert_snapshot!(response.status(), @"403 Forbidden");
assert_snapshot!(response.text(), @r#"{"errors":[{"detail":"authentication failed"}]}"#);
}
Expand Down
13 changes: 6 additions & 7 deletions src/tests/token.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use crate::tests::util::MockRequestExt;
use crate::tests::builders::PublishBuilder;
use crate::tests::util::MockTokenUser;
use crate::tests::{RequestHelper, TestApp};
use crate::{models::ApiToken, views::EncodableMe};
use diesel::prelude::*;
use diesel_async::RunQueryDsl;
use http::header;
use insta::assert_snapshot;

#[tokio::test(flavor = "multi_thread")]
Expand Down Expand Up @@ -35,12 +35,11 @@ async fn using_token_updates_last_used_at() {

#[tokio::test(flavor = "multi_thread")]
async fn old_tokens_give_specific_error_message() {
let url = "/api/v1/me";
let (_, anon) = TestApp::init().empty().await;
let (app, _anon) = TestApp::full().empty().await;

let mut request = anon.get_request(url);
request.header(header::AUTHORIZATION, "oldtoken");
let response = anon.run::<()>(request).await;
let client = MockTokenUser::with_auth_header("oldtoken".to_string(), app.clone());
let pb = PublishBuilder::new("foo", "1.0.0");
let response = client.publish_crate(pb).await;
assert_snapshot!(response.status(), @"401 Unauthorized");
assert_snapshot!(response.text(), @r#"{"errors":[{"detail":"The given API token does not match the format used by crates.io. Tokens generated before 2020-07-14 were generated with an insecure random number generator, and have been revoked. You can generate a new token at https://crates.io/me. For more information please see https://blog.rust-lang.org/2020/07/14/crates-io-security-advisory.html. We apologize for any inconvenience."}]}"#);
}