@@ -479,7 +479,7 @@ specBindingUsers = describe "binding existing users to sso identities" $ do
479
479
(uid, teamid, idp, (_, privcreds)) <- registerTestIdPWithMeta
480
480
(subj, _, _) <- initialBind uid idp privcreds
481
481
uid' <-
482
- let Just perms = Galley. newPermissions mempty mempty
482
+ let perms = Galley. noPermissions
483
483
in call $ createTeamMember (env ^. teBrig) (env ^. teGalley) teamid perms
484
484
(_, sparresp) <- reBindSame uid' idp privcreds subj
485
485
checkDenyingAuthnResp sparresp " subject-id-taken"
@@ -530,24 +530,25 @@ testGetPutDelete whichone = do
530
530
whichone (env ^. teSpar) Nothing (IdPId UUID. nil) idpmeta
531
531
`shouldRespondWith` checkErrHspec 404 " not-found"
532
532
context " no zuser" $ do
533
- it " responds with 'client error '" $ do
533
+ it " responds with 'insufficient permissions '" $ do
534
534
env <- ask
535
535
(_, _, (^. idpId) -> idpid, (idpmeta, _)) <- registerTestIdPWithMeta
536
536
whichone (env ^. teSpar) Nothing idpid idpmeta
537
- `shouldRespondWith` checkErrHspec 400 " client-error"
537
+ `shouldRespondWith` checkErrHspec 403 " insufficient-permissions"
538
+
538
539
context " zuser has no team" $ do
539
- it " responds with 'no team member '" $ do
540
+ it " responds with 'insufficient permissions '" $ do
540
541
env <- ask
541
542
(_, _, (^. idpId) -> idpid, (idpmeta, _)) <- registerTestIdPWithMeta
542
543
(uid, _) <- call $ createRandomPhoneUser (env ^. teBrig)
543
544
whichone (env ^. teSpar) (Just uid) idpid idpmeta
544
- `shouldRespondWith` checkErrHspec 403 " no-team-member "
545
+ `shouldRespondWith` checkErrHspec 403 " insufficient-permissions "
545
546
context " zuser is a team member, but not a team owner" $ do
546
547
it " responds with 'insufficient-permissions' and a helpful message" $ do
547
548
env <- ask
548
549
(_, teamid, (^. idpId) -> idpid, (idpmeta, _)) <- registerTestIdPWithMeta
549
550
newmember <-
550
- let Just perms = Galley. newPermissions mempty mempty
551
+ let perms = Galley. noPermissions
551
552
in call $ createTeamMember (env ^. teBrig) (env ^. teGalley) teamid perms
552
553
whichone (env ^. teSpar) (Just newmember) idpid idpmeta
553
554
`shouldRespondWith` checkErrHspec 403 " insufficient-permissions"
@@ -571,12 +572,12 @@ specCRUDIdentityProvider = do
571
572
describe " GET /identity-providers/:idp" $ do
572
573
testGetPutDelete (\ o t i _ -> callIdpGet' o t i)
573
574
context " zuser has wrong team" $ do
574
- it " responds with 'no team member '" $ do
575
+ it " responds with 'insufficient permissions '" $ do
575
576
env <- ask
576
577
(_, _, (^. idpId) -> idpid) <- registerTestIdP
577
578
(uid, _) <- call $ createUserWithTeam (env ^. teBrig) (env ^. teGalley)
578
579
callIdpGet' (env ^. teSpar) (Just uid) idpid
579
- `shouldRespondWith` checkErrHspec 403 " no-team-member "
580
+ `shouldRespondWith` checkErrHspec 403 " insufficient-permissions "
580
581
context " known IdP, client is team owner" $ do
581
582
it " responds with 2xx and IdP" $ do
582
583
env <- ask
@@ -595,7 +596,7 @@ specCRUDIdentityProvider = do
595
596
(_owner :: UserId , teamid :: TeamId ) <-
596
597
call $ createUserWithTeam (env ^. teBrig) (env ^. teGalley)
597
598
member :: UserId <-
598
- let Just perms = Galley. newPermissions mempty mempty
599
+ let perms = Galley. noPermissions
599
600
in call $ createTeamMember (env ^. teBrig) (env ^. teGalley) teamid perms
600
601
callIdpGetAll' (env ^. teSpar) (Just member)
601
602
`shouldRespondWith` checkErrHspec 403 " insufficient-permissions"
@@ -631,7 +632,21 @@ specCRUDIdentityProvider = do
631
632
(_, _, (^. idpId) -> idpid) <- registerTestIdP
632
633
(uid, _) <- call $ createUserWithTeam (env ^. teBrig) (env ^. teGalley)
633
634
callIdpDelete' (env ^. teSpar) (Just uid) idpid
634
- `shouldRespondWith` checkErrHspec 403 " no-team-member"
635
+ `shouldRespondWith` checkErrHspec 403 " insufficient-permissions"
636
+ context " zuser is admin resp. member" $ do
637
+ it " responds 204 resp. 403" $ do
638
+ env <- ask
639
+ (_, tid, (^. idpId) -> idpid) <- registerTestIdP
640
+ let mkUser :: Galley. Role -> TestSpar UserId
641
+ mkUser role = do
642
+ let perms = Galley. rolePermissions role
643
+ call $ createTeamMember (env ^. teBrig) (env ^. teGalley) tid perms
644
+ admin <- mkUser Galley. RoleAdmin
645
+ member <- mkUser Galley. RoleMember
646
+ callIdpDelete' (env ^. teSpar) (Just member) idpid
647
+ `shouldRespondWith` checkErrHspec 403 " insufficient-permissions"
648
+ callIdpDelete' (env ^. teSpar) (Just admin) idpid
649
+ `shouldRespondWith` ((== 204 ) . statusCode)
635
650
context " known IdP, IdP empty, client is team owner, without email" $ do
636
651
it " responds with 2xx and removes IdP" $ do
637
652
env <- ask
@@ -838,7 +853,7 @@ specCRUDIdentityProvider = do
838
853
env <- ask
839
854
(_owner, tid, idp) <- registerTestIdP
840
855
newmember <-
841
- let Just perms = Galley. newPermissions mempty mempty
856
+ let perms = Galley. noPermissions
842
857
in call $ createTeamMember (env ^. teBrig) (env ^. teGalley) tid perms
843
858
callIdpCreate' (env ^. teSpar) (Just newmember) (idp ^. idpMetadata)
844
859
`shouldRespondWith` checkErrHspec 403 " insufficient-permissions"
@@ -1144,10 +1159,9 @@ specAux = do
1144
1159
liftIO $ userTeam parsedResp `shouldSatisfy` isJust
1145
1160
permses :: [Galley. Permissions ]
1146
1161
permses =
1147
- fromJust
1148
- <$> [ Just Galley. fullPermissions,
1149
- Galley. newPermissions mempty mempty
1150
- ]
1162
+ [ Galley. fullPermissions,
1163
+ Galley. noPermissions
1164
+ ]
1151
1165
sequence_ [check tryowner perms | tryowner <- [minBound .. ], perms <- [0 .. (length permses - 1 )]]
1152
1166
1153
1167
specSsoSettings :: SpecWith TestEnv
0 commit comments