1
0
Fork 0
ruma/crates/ruma-common/tests/it/api/no_fields.rs
Kévin Commaille 09a4473747 api: Add NoAccessToken authentication scheme
Because in some APIs it doesn't make sense to be able to provide a
`SendAccessToken`, we create a separate type for this and
`NoAuthentication` doesn't accept any input anymore.
2026-03-17 20:58:48 +01:00

98 lines
2.5 KiB
Rust

use std::borrow::Cow;
use ruma_common::api::{
MatrixVersion, OutgoingRequest as _, OutgoingResponse as _, SupportedVersions,
};
mod get {
use ruma_common::{
api::{auth_scheme::NoAuthentication, request, response},
metadata,
};
metadata! {
method: GET,
rate_limited: false,
authentication: NoAuthentication,
history: {
unstable => "/_matrix/my/endpoint",
}
}
/// Request type for the `no_fields` endpoint.
#[request]
pub struct Request {}
/// Response type for the `no_fields` endpoint.
#[response]
pub struct Response {}
}
mod post {
use ruma_common::{
api::{auth_scheme::NoAuthentication, request, response},
metadata,
};
metadata! {
method: POST,
rate_limited: false,
authentication: NoAuthentication,
history: {
unstable => "/_matrix/my/endpoint",
}
}
/// Request type for the `no_fields` endpoint.
#[request]
pub struct Request {}
/// Response type for the `no_fields` endpoint.
#[response]
pub struct Response {}
}
#[test]
fn empty_post_request_http_repr() {
let req = post::Request {};
let supported =
SupportedVersions { versions: [MatrixVersion::V1_1].into(), features: Default::default() };
let http_req = req
.try_into_http_request::<Vec<u8>>("https://homeserver.tld", (), Cow::Owned(supported))
.unwrap();
// Empty POST requests should contain an empty dictionary as a body...
assert_eq!(http_req.body(), b"{}");
}
#[test]
fn empty_get_request_http_repr() {
let req = get::Request {};
let supported =
SupportedVersions { versions: [MatrixVersion::V1_1].into(), features: Default::default() };
let http_req = req
.try_into_http_request::<Vec<u8>>("https://homeserver.tld", (), Cow::Owned(supported))
.unwrap();
// ... but GET requests' bodies should be empty.
assert_eq!(http_req.body().len(), 0);
}
#[test]
fn empty_post_response_http_repr() {
let res = post::Response {};
let http_res = res.try_into_http_response::<Vec<u8>>().unwrap();
// For the response, the body should be an empty dict again...
assert_eq!(http_res.body(), b"{}");
}
#[test]
fn empty_get_response_http_repr() {
let res = get::Response {};
let http_res = res.try_into_http_response::<Vec<u8>>().unwrap();
// ... even for GET requests.
assert_eq!(http_res.body(), b"{}");
}