Skip to content

Commit 06526c9

Browse files
Swaroop AkkineniSwaroop Akkineni
authored andcommitted
lol
1 parent 8760520 commit 06526c9

File tree

3 files changed

+60
-49
lines changed

3 files changed

+60
-49
lines changed

pkg/authorization/authorization_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ func TestAuthorizationListResourcesForMembershipWithDefaultClient(t *testing.T)
256256
_, err := ListResourcesForMembership(context.Background(), ListResourcesForMembershipOpts{
257257
OrganizationMembershipId: "om_01JF",
258258
PermissionSlug: "read:document",
259-
ParentResource: ParentResourceIdentifierById{
259+
ParentResourceIdentifier: ParentResourceIdentifierById{
260260
ParentResourceId: "resource_parent_01",
261261
},
262262
})
@@ -336,7 +336,7 @@ func TestAuthorizationListMembershipsForResourceWithDefaultClient(t *testing.T)
336336
Id: "om_01JF",
337337
UserId: "user_01JF",
338338
OrganizationId: "org_01JF",
339-
Status: "active",
339+
Status: MembershipStatusActive,
340340
CreatedAt: "2024-01-01T00:00:00.000Z",
341341
UpdatedAt: "2024-01-01T00:00:00.000Z",
342342
},
@@ -351,7 +351,7 @@ func TestAuthorizationListMembershipsForResourceWithDefaultClient(t *testing.T)
351351
Id: "om_01JF",
352352
UserId: "user_01JF",
353353
OrganizationId: "org_01JF",
354-
Status: "active",
354+
Status: MembershipStatusActive,
355355
CreatedAt: "2024-01-01T00:00:00.000Z",
356356
UpdatedAt: "2024-01-01T00:00:00.000Z",
357357
},
@@ -360,7 +360,7 @@ func TestAuthorizationListMembershipsForResourceWithDefaultClient(t *testing.T)
360360
Id: "om_02JF",
361361
UserId: "user_02JF",
362362
OrganizationId: "org_01JF",
363-
Status: "active",
363+
Status: MembershipStatusActive,
364364
CreatedAt: "2024-01-02T00:00:00.000Z",
365365
UpdatedAt: "2024-01-02T00:00:00.000Z",
366366
},
@@ -409,7 +409,7 @@ func TestAuthorizationListMembershipsForResourceWithDefaultClient(t *testing.T)
409409
require.Len(t, result.Data, 2)
410410
require.Equal(t, twoItemResponse, result)
411411
require.Equal(t, "om_01JF", result.Data[0].Id)
412-
require.Equal(t, "active", result.Data[0].Status)
412+
require.Equal(t, MembershipStatusActive, result.Data[0].Status)
413413
require.Equal(t, "om_02JF", result.Data[1].Id)
414414
require.Equal(t, expectedPath, capturedPath)
415415
})
@@ -531,7 +531,7 @@ func TestAuthorizationListMembershipsForResourceWithDefaultClient(t *testing.T)
531531
_, err := ListMembershipsForResource(context.Background(), ListMembershipsForResourceOpts{
532532
ResourceId: "resource_01JF",
533533
PermissionSlug: "read:document",
534-
Assignment: "direct",
534+
Assignment: AssignmentDirect,
535535
})
536536

537537
require.NoError(t, err)
@@ -549,7 +549,7 @@ func TestAuthorizationListMembershipsForResourceWithDefaultClient(t *testing.T)
549549
result, err := ListMembershipsForResource(context.Background(), ListMembershipsForResourceOpts{
550550
ResourceId: "resource_01JF",
551551
PermissionSlug: "read:document",
552-
Assignment: "direct",
552+
Assignment: AssignmentDirect,
553553
Limit: 5,
554554
Before: "cursor_before",
555555
After: "cursor_after",
@@ -611,7 +611,7 @@ func TestAuthorizationListMembershipsForResourceByExternalIdWithDefaultClient(t
611611
Id: "om_01JF",
612612
UserId: "user_01JF",
613613
OrganizationId: "org_01JF",
614-
Status: "active",
614+
Status: MembershipStatusActive,
615615
CreatedAt: "2024-01-01T00:00:00.000Z",
616616
UpdatedAt: "2024-01-01T00:00:00.000Z",
617617
},
@@ -626,7 +626,7 @@ func TestAuthorizationListMembershipsForResourceByExternalIdWithDefaultClient(t
626626
Id: "om_01JF",
627627
UserId: "user_01JF",
628628
OrganizationId: "org_01JF",
629-
Status: "active",
629+
Status: MembershipStatusActive,
630630
CreatedAt: "2024-01-01T00:00:00.000Z",
631631
UpdatedAt: "2024-01-01T00:00:00.000Z",
632632
},
@@ -635,7 +635,7 @@ func TestAuthorizationListMembershipsForResourceByExternalIdWithDefaultClient(t
635635
Id: "om_02JF",
636636
UserId: "user_02JF",
637637
OrganizationId: "org_01JF",
638-
Status: "active",
638+
Status: MembershipStatusActive,
639639
CreatedAt: "2024-01-02T00:00:00.000Z",
640640
UpdatedAt: "2024-01-02T00:00:00.000Z",
641641
},
@@ -824,7 +824,7 @@ func TestAuthorizationListMembershipsForResourceByExternalIdWithDefaultClient(t
824824
ResourceTypeSlug: "document",
825825
ExternalId: "my-doc-1",
826826
PermissionSlug: "read:document",
827-
Assignment: "direct",
827+
Assignment: AssignmentDirect,
828828
})
829829

830830
require.NoError(t, err)
@@ -844,7 +844,7 @@ func TestAuthorizationListMembershipsForResourceByExternalIdWithDefaultClient(t
844844
ResourceTypeSlug: "document",
845845
ExternalId: "my-doc-1",
846846
PermissionSlug: "read:document",
847-
Assignment: "direct",
847+
Assignment: AssignmentDirect,
848848
Limit: 5,
849849
Before: "cursor_before",
850850
After: "cursor_after",

pkg/authorization/client.go

Lines changed: 38 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -196,18 +196,24 @@ type AccessCheckResponse struct {
196196
Authorized bool `json:"authorized"`
197197
}
198198

199+
// MembershipStatus represents the status of an organization membership.
200+
type MembershipStatus string
201+
202+
const (
203+
MembershipStatusActive MembershipStatus = "active"
204+
MembershipStatusInactive MembershipStatus = "inactive"
205+
MembershipStatusPending MembershipStatus = "pending"
206+
)
207+
199208
// AuthorizationOrganizationMembership represents a membership returned by authorization queries.
200209
type AuthorizationOrganizationMembership struct {
201-
Object string `json:"object"`
202-
Id string `json:"id"`
203-
OrganizationId string `json:"organization_id"`
204-
// todo can this be an enum here the values are active, inactive, pending
205-
Status string `json:"status"`
206-
UserId string `json:"user_id"`
207-
CreatedAt string `json:"created_at"`
208-
UpdatedAt string `json:"updated_at"`
209-
// todo remove custom attributes from the response
210-
CustomAttributes map[string]interface{} `json:"custom_attributes"`
210+
Object string `json:"object"`
211+
Id string `json:"id"`
212+
OrganizationId string `json:"organization_id"`
213+
Status MembershipStatus `json:"status"`
214+
UserId string `json:"user_id"`
215+
CreatedAt string `json:"created_at"`
216+
UpdatedAt string `json:"updated_at"`
211217
}
212218

213219
// List response types
@@ -473,38 +479,43 @@ type RemoveRoleAssignmentOpts struct {
473479
type ListResourcesForMembershipOpts struct {
474480
OrganizationMembershipId string `json:"-" url:"-"`
475481
PermissionSlug string `url:"permission_slug"`
476-
// todo let's rename this to ParentResourceIdentifier
477-
ParentResource ParentResourceIdentifier `json:"-" url:"-"`
482+
ParentResourceIdentifier ParentResourceIdentifier `json:"-" url:"-"`
478483
Limit int `url:"limit,omitempty"`
479484
Before string `url:"before,omitempty"`
480485
After string `url:"after,omitempty"`
481486
Order common.Order `url:"order,omitempty"`
482487
}
483488

489+
// Assignment represents the type of role assignment filter.
490+
type Assignment string
491+
492+
const (
493+
AssignmentDirect Assignment = "direct"
494+
AssignmentIndirect Assignment = "indirect"
495+
)
496+
484497
// ListMembershipsForResourceOpts contains the options for listing memberships with access to a resource.
485498
type ListMembershipsForResourceOpts struct {
486499
ResourceId string `json:"-" url:"-"`
487500
PermissionSlug string `url:"permission_slug"`
488-
// TODO can we turn assignment into an enum, where the values are direct and indirect, akin to /Users/swaroopakkineni/Documents/repos/public_repos/workos-node/src/authorization/interfaces/list-memberships-for-resource-by-external-id-options.interface.ts line 8
489-
Assignment string `url:"assignment,omitempty"`
490-
Limit int `url:"limit,omitempty"`
491-
Before string `url:"before,omitempty"`
492-
After string `url:"after,omitempty"`
493-
Order common.Order `url:"order,omitempty"`
501+
Assignment Assignment `url:"assignment,omitempty"`
502+
Limit int `url:"limit,omitempty"`
503+
Before string `url:"before,omitempty"`
504+
After string `url:"after,omitempty"`
505+
Order common.Order `url:"order,omitempty"`
494506
}
495507

496508
// ListMembershipsForResourceByExternalIdOpts contains the options for listing memberships by resource external Id.
497509
type ListMembershipsForResourceByExternalIdOpts struct {
498510
OrganizationId string `json:"-" url:"-"`
499511
ResourceTypeSlug string `json:"-" url:"-"`
500512
ExternalId string `json:"-" url:"-"`
501-
PermissionSlug string `url:"permission_slug"`
502-
// TODO can we turn assignment into an enum, where the values are direct and indirect, akin to /Users/swaroopakkineni/Documents/repos/public_repos/workos-node/src/authorization/interfaces/list-memberships-for-resource-by-external-id-options.interface.ts line 8
503-
Assignment string `url:"assignment,omitempty"`
504-
Limit int `url:"limit,omitempty"`
505-
Before string `url:"before,omitempty"`
506-
After string `url:"after,omitempty"`
507-
Order common.Order `url:"order,omitempty"`
513+
PermissionSlug string `url:"permission_slug"`
514+
Assignment Assignment `url:"assignment,omitempty"`
515+
Limit int `url:"limit,omitempty"`
516+
Before string `url:"before,omitempty"`
517+
After string `url:"after,omitempty"`
518+
Order common.Order `url:"order,omitempty"`
508519
}
509520

510521
// Stub method implementations
@@ -735,8 +746,8 @@ func (c *Client) ListResourcesForMembership(ctx context.Context, opts ListResour
735746
}
736747

737748
// Append parent resource identifier query params if provided
738-
if opts.ParentResource != nil {
739-
for k, v := range opts.ParentResource.parentResourceIdentifierParams() {
749+
if opts.ParentResourceIdentifier != nil {
750+
for k, v := range opts.ParentResourceIdentifier.parentResourceIdentifierParams() {
740751
q.Set(k, fmt.Sprintf("%v", v))
741752
}
742753
}

pkg/authorization/client_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ func TestListResourcesForMembership(t *testing.T) {
257257
_, err := client.ListResourcesForMembership(context.Background(), ListResourcesForMembershipOpts{
258258
OrganizationMembershipId: "om_01JF",
259259
PermissionSlug: "read:document",
260-
ParentResource: ParentResourceIdentifierById{
260+
ParentResourceIdentifier: ParentResourceIdentifierById{
261261
ParentResourceId: "resource_parent_01",
262262
},
263263
})
@@ -276,7 +276,7 @@ func TestListResourcesForMembership(t *testing.T) {
276276
_, err := client.ListResourcesForMembership(context.Background(), ListResourcesForMembershipOpts{
277277
OrganizationMembershipId: "om_01JF",
278278
PermissionSlug: "read:document",
279-
ParentResource: ParentResourceIdentifierByExternalId{
279+
ParentResourceIdentifier: ParentResourceIdentifierByExternalId{
280280
ParentResourceExternalId: "parent-ext-1",
281281
ParentResourceTypeSlug: "folder",
282282
},
@@ -373,7 +373,7 @@ func TestListMembershipsForResource(t *testing.T) {
373373
Id: "om_01JF",
374374
UserId: "user_01JF",
375375
OrganizationId: "org_01JF",
376-
Status: "active",
376+
Status: MembershipStatusActive,
377377
CreatedAt: "2024-01-01T00:00:00.000Z",
378378
UpdatedAt: "2024-01-01T00:00:00.000Z",
379379
},
@@ -388,7 +388,7 @@ func TestListMembershipsForResource(t *testing.T) {
388388
Id: "om_01JF",
389389
UserId: "user_01JF",
390390
OrganizationId: "org_01JF",
391-
Status: "active",
391+
Status: MembershipStatusActive,
392392
CreatedAt: "2024-01-01T00:00:00.000Z",
393393
UpdatedAt: "2024-01-01T00:00:00.000Z",
394394
},
@@ -397,7 +397,7 @@ func TestListMembershipsForResource(t *testing.T) {
397397
Id: "om_02JF",
398398
UserId: "user_02JF",
399399
OrganizationId: "org_01JF",
400-
Status: "active",
400+
Status: MembershipStatusActive,
401401
CreatedAt: "2024-01-02T00:00:00.000Z",
402402
UpdatedAt: "2024-01-02T00:00:00.000Z",
403403
},
@@ -591,7 +591,7 @@ func TestListMembershipsForResource(t *testing.T) {
591591
result, err := client.ListMembershipsForResource(context.Background(), ListMembershipsForResourceOpts{
592592
ResourceId: "resource_01JF",
593593
PermissionSlug: "read:document",
594-
Assignment: "direct",
594+
Assignment: AssignmentDirect,
595595
Limit: 5,
596596
Before: "cursor_before",
597597
After: "cursor_after",
@@ -669,7 +669,7 @@ func TestListMembershipsForResourceByExternalId(t *testing.T) {
669669
Id: "om_01JF",
670670
UserId: "user_01JF",
671671
OrganizationId: "org_01JF",
672-
Status: "active",
672+
Status: MembershipStatusActive,
673673
CreatedAt: "2024-01-01T00:00:00.000Z",
674674
UpdatedAt: "2024-01-01T00:00:00.000Z",
675675
},
@@ -684,7 +684,7 @@ func TestListMembershipsForResourceByExternalId(t *testing.T) {
684684
Id: "om_01JF",
685685
UserId: "user_01JF",
686686
OrganizationId: "org_01JF",
687-
Status: "active",
687+
Status: MembershipStatusActive,
688688
CreatedAt: "2024-01-01T00:00:00.000Z",
689689
UpdatedAt: "2024-01-01T00:00:00.000Z",
690690
},
@@ -693,7 +693,7 @@ func TestListMembershipsForResourceByExternalId(t *testing.T) {
693693
Id: "om_02JF",
694694
UserId: "user_02JF",
695695
OrganizationId: "org_01JF",
696-
Status: "active",
696+
Status: MembershipStatusActive,
697697
CreatedAt: "2024-01-02T00:00:00.000Z",
698698
UpdatedAt: "2024-01-02T00:00:00.000Z",
699699
},
@@ -869,7 +869,7 @@ func TestListMembershipsForResourceByExternalId(t *testing.T) {
869869
client := newAuthorizationTestClient(server)
870870

871871
opts := baseOpts()
872-
opts.Assignment = "direct"
872+
opts.Assignment = AssignmentDirect
873873
opts.Limit = 5
874874
opts.Before = "cursor_before"
875875
opts.After = "cursor_after"

0 commit comments

Comments
 (0)