Skip to content

Use API endpoint that actually supports token auth for token tests #11357

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jun 13, 2025
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."}]}"#);
}