forked from jmug/stoatchat
test: complete test for editing role positions
This commit is contained in:
@@ -1,28 +0,0 @@
|
||||
[
|
||||
{
|
||||
"_object_type": "User",
|
||||
"_id": "__ID:0__",
|
||||
"username": "Owner",
|
||||
"discriminator": "0001"
|
||||
},
|
||||
{
|
||||
"_object_type": "User",
|
||||
"_id": "__ID:1__",
|
||||
"username": "Member",
|
||||
"discriminator": "0001"
|
||||
},
|
||||
{
|
||||
"_object_type": "User",
|
||||
"_id": "__ID:2__",
|
||||
"username": "Member",
|
||||
"discriminator": "0002"
|
||||
},
|
||||
{
|
||||
"_object_type": "Channel",
|
||||
"_id": "__ID:3__",
|
||||
"channel_type": "Group",
|
||||
"name": "My Group",
|
||||
"owner": "__ID:0__",
|
||||
"recipients": ["__ID:0__", "__ID:1__"]
|
||||
}
|
||||
]
|
||||
@@ -3,18 +3,21 @@
|
||||
"_object_type": "User",
|
||||
"_id": "__ID:0__",
|
||||
"username": "Owner",
|
||||
"last_acknowledged_policy_change": "2025-06-07T04:04:48+0000",
|
||||
"discriminator": "0001"
|
||||
},
|
||||
{
|
||||
"_object_type": "User",
|
||||
"_id": "__ID:1__",
|
||||
"username": "Moderator",
|
||||
"last_acknowledged_policy_change": "2025-06-07T04:04:48+0000",
|
||||
"discriminator": "0001"
|
||||
},
|
||||
{
|
||||
"_object_type": "User",
|
||||
"_id": "__ID:2__",
|
||||
"username": "User",
|
||||
"last_acknowledged_policy_change": "2025-06-07T04:04:48+0000",
|
||||
"discriminator": "0001"
|
||||
},
|
||||
{
|
||||
@@ -46,7 +49,7 @@
|
||||
"__ID:5__": {
|
||||
"name": "Moderator",
|
||||
"permissions": {
|
||||
"a": 545270208,
|
||||
"a": 545270216,
|
||||
"d": 0
|
||||
},
|
||||
"rank": 1
|
||||
@@ -85,10 +85,9 @@ mod test {
|
||||
async fn edit_role_rankings() {
|
||||
let harness = TestHarness::new().await;
|
||||
|
||||
fixture!(harness.db, "server_with_roles",
|
||||
fixture!(harness.db, "server_with_many_roles",
|
||||
owner user 0
|
||||
moderator user 1
|
||||
user user 2
|
||||
server server 4);
|
||||
|
||||
// Moderator can re-order the roles below them
|
||||
@@ -104,7 +103,7 @@ mod test {
|
||||
|
||||
let response = harness
|
||||
.client
|
||||
.post(format!("/servers/{}/roles/ranks", server.id))
|
||||
.patch(format!("/servers/{}/roles/ranks", server.id))
|
||||
.header(ContentType::JSON)
|
||||
.body(
|
||||
json!(v0::DataEditRoleRanks {
|
||||
@@ -121,5 +120,58 @@ mod test {
|
||||
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
drop(response);
|
||||
|
||||
// ... but not above them
|
||||
let mut target_order: Vec<String> = server
|
||||
.ordered_roles()
|
||||
.into_iter()
|
||||
.map(|(id, _)| id)
|
||||
.collect();
|
||||
|
||||
// Swap the two lower ranked roles
|
||||
target_order.swap(0, 1);
|
||||
|
||||
let response = harness
|
||||
.client
|
||||
.patch(format!("/servers/{}/roles/ranks", server.id))
|
||||
.header(ContentType::JSON)
|
||||
.body(
|
||||
json!(v0::DataEditRoleRanks {
|
||||
ranks: target_order.clone()
|
||||
})
|
||||
.to_string(),
|
||||
)
|
||||
.header(Header::new(
|
||||
"x-session-token",
|
||||
moderator_session.token.to_string(),
|
||||
))
|
||||
.dispatch()
|
||||
.await;
|
||||
|
||||
assert_eq!(response.status(), Status::Forbidden);
|
||||
drop(response);
|
||||
|
||||
// The owner can set any order they want
|
||||
let (_, owner_session) = harness.account_from_user(owner.id).await;
|
||||
|
||||
let response = harness
|
||||
.client
|
||||
.patch(format!("/servers/{}/roles/ranks", server.id))
|
||||
.header(ContentType::JSON)
|
||||
.body(
|
||||
json!(v0::DataEditRoleRanks {
|
||||
ranks: target_order.clone()
|
||||
})
|
||||
.to_string(),
|
||||
)
|
||||
.header(Header::new(
|
||||
"x-session-token",
|
||||
owner_session.token.to_string(),
|
||||
))
|
||||
.dispatch()
|
||||
.await;
|
||||
|
||||
assert_eq!(response.status(), Status::Ok);
|
||||
drop(response);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user