@ -238,12 +238,11 @@ func TestAPIEndpoint_CreateOrgs_LegacyAccessControl(t *testing.T) {
func TestAPIEndpoint_CreateOrgs_AccessControl ( t * testing . T ) {
sc := setupHTTPServer ( t , true )
setInitCtxSignedInViewer ( sc . initCtx )
setupOrgsDBForAccessControlTests ( t , sc . db , sc , 0 )
input := strings . NewReader ( fmt . Sprintf ( testCreateOrgCmd , 2 ) )
t . Run ( "AccessControl allows creating Orgs with correct permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsCreate } } , accesscontrol . GlobalOrgID )
response := callAPI ( sc . server , http . MethodPost , createOrgsURL , input , t )
assert . Equal ( t , http . StatusOK , response . Code )
@ -251,6 +250,7 @@ func TestAPIEndpoint_CreateOrgs_AccessControl(t *testing.T) {
input = strings . NewReader ( fmt . Sprintf ( testCreateOrgCmd , 3 ) )
t . Run ( "AccessControl prevents creating Orgs with incorrect permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : "orgs:invalid" } } , accesscontrol . GlobalOrgID )
response := callAPI ( sc . server , http . MethodPost , createOrgsURL , input , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
@ -282,16 +282,19 @@ func TestAPIEndpoint_DeleteOrgs_AccessControl(t *testing.T) {
setupOrgsDBForAccessControlTests ( t , sc . db , sc , 2 )
t . Run ( "AccessControl prevents deleting Orgs with incorrect permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : "orgs:invalid" } } , 2 )
response := callAPI ( sc . server , http . MethodDelete , fmt . Sprintf ( deleteOrgsURL , 2 ) , nil , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
} )
t . Run ( "AccessControl prevents deleting Orgs with correct permissions in another org" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsDelete } } , 1 )
response := callAPI ( sc . server , http . MethodDelete , fmt . Sprintf ( deleteOrgsURL , 2 ) , nil , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
} )
t . Run ( "AccessControl allows deleting Orgs with correct permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsDelete } } , 2 )
response := callAPI ( sc . server , http . MethodDelete , fmt . Sprintf ( deleteOrgsURL , 2 ) , nil , t )
assert . Equal ( t , http . StatusOK , response . Code )
@ -318,19 +321,21 @@ func TestAPIEndpoint_SearchOrgs_LegacyAccessControl(t *testing.T) {
func TestAPIEndpoint_SearchOrgs_AccessControl ( t * testing . T ) {
sc := setupHTTPServer ( t , true )
setInitCtxSignedInViewer ( sc . initCtx )
t . Run ( "AccessControl allows listing Orgs with correct permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsRead } } , accesscontrol . GlobalOrgID )
response := callAPI ( sc . server , http . MethodGet , searchOrgsURL , nil , t )
assert . Equal ( t , http . StatusOK , response . Code )
} )
t . Run ( "AccessControl prevents listing Orgs with correct permissions not granted globally" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsRead } } , 1 )
response := callAPI ( sc . server , http . MethodGet , searchOrgsURL , nil , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
} )
t . Run ( "AccessControl prevents listing Orgs with incorrect permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : "orgs:invalid" } } , accesscontrol . GlobalOrgID )
response := callAPI ( sc . server , http . MethodGet , searchOrgsURL , nil , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
@ -360,22 +365,24 @@ func TestAPIEndpoint_GetOrg_LegacyAccessControl(t *testing.T) {
func TestAPIEndpoint_GetOrg_AccessControl ( t * testing . T ) {
sc := setupHTTPServer ( t , true )
setInitCtxSignedInViewer ( sc . initCtx )
// Create two orgs, to fetch another one than the logged in one
setupOrgsDBForAccessControlTests ( t , sc . db , sc , 2 )
t . Run ( "AccessControl allows viewing another org with correct permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsRead } } , 2 )
response := callAPI ( sc . server , http . MethodGet , fmt . Sprintf ( getOrgsURL , 2 ) , nil , t )
assert . Equal ( t , http . StatusOK , response . Code )
} )
t . Run ( "AccessControl prevents viewing another org with correct permissions in another org" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsRead } } , 1 )
response := callAPI ( sc . server , http . MethodGet , fmt . Sprintf ( getOrgsURL , 2 ) , nil , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
} )
t . Run ( "AccessControl prevents viewing another org with incorrect permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : "orgs:invalid" } } , 2 )
response := callAPI ( sc . server , http . MethodGet , fmt . Sprintf ( getOrgsURL , 2 ) , nil , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
@ -405,17 +412,18 @@ func TestAPIEndpoint_GetOrgByName_LegacyAccessControl(t *testing.T) {
func TestAPIEndpoint_GetOrgByName_AccessControl ( t * testing . T ) {
sc := setupHTTPServer ( t , true )
setInitCtxSignedInViewer ( sc . initCtx )
// Create two orgs, to fetch another one than the logged in one
setupOrgsDBForAccessControlTests ( t , sc . db , sc , 2 )
t . Run ( "AccessControl allows viewing another org with correct permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsRead } } , accesscontrol . GlobalOrgID )
response := callAPI ( sc . server , http . MethodGet , fmt . Sprintf ( getOrgsByNameURL , "TestOrg2" ) , nil , t )
assert . Equal ( t , http . StatusOK , response . Code )
} )
t . Run ( "AccessControl prevents viewing another org with incorrect permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : "orgs:invalid" } } , accesscontrol . GlobalOrgID )
response := callAPI ( sc . server , http . MethodGet , fmt . Sprintf ( getOrgsByNameURL , "TestOrg2" ) , nil , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
@ -447,25 +455,27 @@ func TestAPIEndpoint_PutOrg_LegacyAccessControl(t *testing.T) {
func TestAPIEndpoint_PutOrg_AccessControl ( t * testing . T ) {
sc := setupHTTPServer ( t , true )
setInitCtxSignedInViewer ( sc . initCtx )
sc . hs . orgService = orgimpl . ProvideService ( sc . db , sc . cfg )
// Create two orgs, to update another one than the logged in one
setupOrgsDBForAccessControlTests ( t , sc . db , sc , 2 )
input := strings . NewReader ( testUpdateOrgNameForm )
t . Run ( "AccessControl allows updating another org with correct permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsWrite } } , 2 )
response := callAPI ( sc . server , http . MethodPut , fmt . Sprintf ( putOrgsURL , 2 ) , input , t )
assert . Equal ( t , http . StatusOK , response . Code )
} )
t . Run ( "AccessControl prevents updating another org with correct permissions in another org" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsWrite } } , 1 )
response := callAPI ( sc . server , http . MethodPut , fmt . Sprintf ( putOrgsURL , 2 ) , input , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
} )
t . Run ( "AccessControl prevents updating another org with incorrect permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : "orgs:invalid" } } , 2 )
response := callAPI ( sc . server , http . MethodPut , fmt . Sprintf ( putOrgsURL , 2 ) , input , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
@ -497,13 +507,13 @@ func TestAPIEndpoint_PutOrgAddress_LegacyAccessControl(t *testing.T) {
func TestAPIEndpoint_PutOrgAddress_AccessControl ( t * testing . T ) {
sc := setupHTTPServer ( t , true )
setInitCtxSignedInViewer ( sc . initCtx )
// Create two orgs, to update another one than the logged in one
setupOrgsDBForAccessControlTests ( t , sc . db , sc , 2 )
input := strings . NewReader ( testUpdateOrgAddressForm )
t . Run ( "AccessControl allows updating another org address with correct permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsWrite } } , 2 )
response := callAPI ( sc . server , http . MethodPut , fmt . Sprintf ( putOrgsAddressURL , 2 ) , input , t )
assert . Equal ( t , http . StatusOK , response . Code )
@ -511,12 +521,14 @@ func TestAPIEndpoint_PutOrgAddress_AccessControl(t *testing.T) {
input = strings . NewReader ( testUpdateOrgAddressForm )
t . Run ( "AccessControl prevents updating another org address with correct permissions in the current org" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : ActionOrgsWrite } } , 1 )
response := callAPI ( sc . server , http . MethodPut , fmt . Sprintf ( putOrgsAddressURL , 2 ) , input , t )
assert . Equal ( t , http . StatusForbidden , response . Code )
} )
t . Run ( "AccessControl prevents updating another org address with incorrect permissions" , func ( t * testing . T ) {
setInitCtxSignedInViewer ( sc . initCtx )
setAccessControlPermissions ( sc . acmock , [ ] accesscontrol . Permission { { Action : "orgs:invalid" } } , 2 )
response := callAPI ( sc . server , http . MethodPut , fmt . Sprintf ( putOrgsAddressURL , 2 ) , input , t )
assert . Equal ( t , http . StatusForbidden , response . Code )