pub fn get_user(&self, authorization: &HeaderValue) -> Option<String> {
match self {
AuthMethod::Basic => {
- let value: Vec<u8> = general_purpose::STANDARD_NO_PAD
+ let value: Vec<u8> = general_purpose::STANDARD
.decode(strip_prefix(authorization.as_bytes(), b"Basic ")?)
.ok()?;
let parts: Vec<&str> = std::str::from_utf8(&value).ok()?.split(':').collect();
) -> Option<()> {
match self {
AuthMethod::Basic => {
- let basic_value: Vec<u8> = general_purpose::STANDARD_NO_PAD
+ let basic_value: Vec<u8> = general_purpose::STANDARD
.decode(strip_prefix(authorization.as_bytes(), b"Basic ")?)
.ok()?;
let parts: Vec<&str> = std::str::from_utf8(&basic_value).ok()?.split(':').collect();
}
#[rstest]
+#[case(server(&["--auth", "/@user:pass", "--auth-method", "basic", "-A"]), "user", "pass")]
+#[case(server(&["--auth", "/@u1:p1", "--auth-method", "basic", "-A"]), "u1", "p1")]
fn auth_basic(
- #[with(&["--auth", "/@user:pass", "--auth-method", "basic", "-A"])] server: TestServer,
+ #[case] server: TestServer,
+ #[case] user: &str,
+ #[case] pass: &str,
) -> Result<(), Error> {
let url = format!("{}file1", server.url());
let resp = fetch!(b"PUT", &url).body(b"abc".to_vec()).send()?;
assert_eq!(resp.status(), 401);
let resp = fetch!(b"PUT", &url)
.body(b"abc".to_vec())
- .basic_auth("user", Some("pass"))
+ .basic_auth(user, Some(pass))
.send()?;
assert_eq!(resp.status(), 201);
Ok(())