From 3bdd551d4022d19e19d329d3e30df07995afb12d Mon Sep 17 00:00:00 2001 From: Wyatt Verchere Date: Sun, 24 Dec 2023 15:53:58 -0800 Subject: [PATCH] fixes bug (#809) --- ...e3f9225c5b6b8b941812167b3b7002bfdb2a.json} | 5 +++-- src/routes/v3/organizations.rs | 5 +++-- tests/organizations.rs | 19 +++++++++++++++++++ 3 files changed, 25 insertions(+), 4 deletions(-) rename .sqlx/{query-f40153d1516fe93e4179c14d00e1667baa7bb9157f58a5017e710d09fd295eb0.json => query-dc64653d72645b76e42a1834124ce3f9225c5b6b8b941812167b3b7002bfdb2a.json} (71%) diff --git a/.sqlx/query-f40153d1516fe93e4179c14d00e1667baa7bb9157f58a5017e710d09fd295eb0.json b/.sqlx/query-dc64653d72645b76e42a1834124ce3f9225c5b6b8b941812167b3b7002bfdb2a.json similarity index 71% rename from .sqlx/query-f40153d1516fe93e4179c14d00e1667baa7bb9157f58a5017e710d09fd295eb0.json rename to .sqlx/query-dc64653d72645b76e42a1834124ce3f9225c5b6b8b941812167b3b7002bfdb2a.json index c1d945241..e1051cee0 100644 --- a/.sqlx/query-f40153d1516fe93e4179c14d00e1667baa7bb9157f58a5017e710d09fd295eb0.json +++ b/.sqlx/query-dc64653d72645b76e42a1834124ce3f9225c5b6b8b941812167b3b7002bfdb2a.json @@ -1,14 +1,15 @@ { "db_name": "PostgreSQL", - "query": "\n UPDATE team_members\n SET \n is_owner = TRUE,\n accepted = TRUE,\n permissions = $1,\n organization_permissions = NULL,\n role = 'Inherited Owner'\n WHERE (id = $1)\n ", + "query": "\n UPDATE team_members\n SET \n is_owner = TRUE,\n accepted = TRUE,\n permissions = $2,\n organization_permissions = NULL,\n role = 'Inherited Owner'\n WHERE (id = $1)\n ", "describe": { "columns": [], "parameters": { "Left": [ + "Int8", "Int8" ] }, "nullable": [] }, - "hash": "f40153d1516fe93e4179c14d00e1667baa7bb9157f58a5017e710d09fd295eb0" + "hash": "dc64653d72645b76e42a1834124ce3f9225c5b6b8b941812167b3b7002bfdb2a" } diff --git a/src/routes/v3/organizations.rs b/src/routes/v3/organizations.rs index 75c14cc3b..c703f38ea 100644 --- a/src/routes/v3/organizations.rs +++ b/src/routes/v3/organizations.rs @@ -858,12 +858,13 @@ pub async fn organization_projects_remove( SET is_owner = TRUE, accepted = TRUE, - permissions = $1, + permissions = $2, organization_permissions = NULL, role = 'Inherited Owner' WHERE (id = $1) ", - new_owner.id as database::models::ids::TeamMemberId + new_owner.id as database::models::ids::TeamMemberId, + ProjectPermissions::all().bits() as i64 ) .execute(&mut *transaction) .await?; diff --git a/tests/organizations.rs b/tests/organizations.rs index cad33fdc2..60ef3b196 100644 --- a/tests/organizations.rs +++ b/tests/organizations.rs @@ -459,6 +459,20 @@ async fn add_remove_organization_project_ownership_to_user() { .await; assert_eq!(resp.status(), 400); + // Set user's permissions within the project that it is a member of to none (for a later test) + let resp = test_env + .api + .edit_team_member( + alpha_team_id, + USER_USER_ID, + json!({ + "project_permissions": 0, + }), + FRIEND_USER_PAT, + ) + .await; + assert_eq!(resp.status(), 204); + // Remove project from organization with a user that is an organization member, and a project member // This should succeed let resp = test_env @@ -487,6 +501,7 @@ async fn add_remove_organization_project_ownership_to_user() { // For each of alpha and beta, confirm: // - There is one member of each project, the owner, USER_USER_ID + // - In addition to being the owner, they have full permissions (even though they were set to none earlier) // - They no longer have an attached organization for team_id in [alpha_team_id, beta_team_id] { let members = test_env @@ -497,6 +512,10 @@ async fn add_remove_organization_project_ownership_to_user() { let user_member = members.iter().filter(|m| m.is_owner).collect::>(); assert_eq!(user_member.len(), 1); assert_eq!(user_member[0].user.id.to_string(), USER_USER_ID); + assert_eq!( + user_member[0].permissions.unwrap(), + ProjectPermissions::all() + ); } for project_id in [alpha_project_id, beta_project_id] {