34 lines
1.1 KiB
Rust
34 lines
1.1 KiB
Rust
/*
|
|
* Copyright (C) 2026 Mateusz Gruszczyński @linuxiarz.pl
|
|
* Source-Available Code / Dual-Licensed.
|
|
*
|
|
* Free for non-commercial and evaluation use under terms of BSL/GPLv3.
|
|
* Commercial or production use requires a valid paid license.
|
|
* See LICENSE file in repository root for details.
|
|
*/
|
|
|
|
use super::*;
|
|
|
|
#[test]
|
|
fn share_exchange_redirects_to_canonical_resource_path() {
|
|
let uri: Uri = "/w/private?view=all&share=secret&page=2".parse().unwrap();
|
|
assert_eq!(canonical_resource_url(&uri), "/w/private?view=all&page=2");
|
|
}
|
|
|
|
#[test]
|
|
fn encoded_or_repeated_parameters_are_parsed_without_rejection() {
|
|
let uri: Uri = "/w/private?%73hare=one&share=two".parse().unwrap();
|
|
assert_eq!(
|
|
share_token_from_query(uri.query()),
|
|
(true, Some("one".into()))
|
|
);
|
|
assert_eq!(canonical_resource_url(&uri), "/w/private");
|
|
}
|
|
|
|
#[test]
|
|
fn malformed_share_parameter_is_still_removed_from_the_url() {
|
|
let uri: Uri = "/w/private?share=%ZZ&keep=no".parse().unwrap();
|
|
assert_eq!(share_token_from_query(uri.query()), (true, None));
|
|
assert_eq!(canonical_resource_url(&uri), "/w/private?keep=no");
|
|
}
|