Skip to content

Commit

Permalink
feat(organization_invitation): add support to expiration (#378)
Browse files Browse the repository at this point in the history
adds `expires_at` to the `organization_invitation` serializer and `expires_in_days` on the create params
NicolasLopes7 authored Jan 30, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 9c79ac7 commit 5af1efc
Showing 3 changed files with 10 additions and 4 deletions.
1 change: 1 addition & 0 deletions organization_invitation.go
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ type OrganizationInvitation struct {
Status string `json:"status"`
PublicMetadata json.RawMessage `json:"public_metadata"`
PrivateMetadata json.RawMessage `json:"private_metadata"`
ExpiresAt *int64 `json:"expires_at,omitempty"`
CreatedAt int64 `json:"created_at"`
UpdatedAt int64 `json:"updated_at"`
}
1 change: 1 addition & 0 deletions organizationinvitation/client.go
Original file line number Diff line number Diff line change
@@ -34,6 +34,7 @@ type CreateParams struct {
PublicMetadata *json.RawMessage `json:"public_metadata,omitempty"`
PrivateMetadata *json.RawMessage `json:"private_metadata,omitempty"`
OrganizationID string `json:"-"`
ExpiresInDays *int64 `json:"expires_in_days,omitempty"`
}

// Create creates and sends an invitation to join an organization.
12 changes: 8 additions & 4 deletions organizationinvitation/client_test.go
Original file line number Diff line number Diff line change
@@ -22,8 +22,8 @@ func TestOrganizationInvitationClientCreate(t *testing.T) {
config.HTTPClient = &http.Client{
Transport: &clerktest.RoundTripper{
T: t,
In: json.RawMessage(fmt.Sprintf(`{"email_address":"%s"}`, emailAddress)),
Out: json.RawMessage(fmt.Sprintf(`{"id":"%s","email_address":"%s","organization_id":"%s"}`, id, emailAddress, organizationID)),
In: json.RawMessage(fmt.Sprintf(`{"email_address":"%s", "expires_in_days": 1}`, emailAddress)),
Out: json.RawMessage(fmt.Sprintf(`{"id":"%s","email_address":"%s","organization_id":"%s", "expires_at": 1}`, id, emailAddress, organizationID)),
Method: http.MethodPost,
Path: "/v1/organizations/" + organizationID + "/invitations",
},
@@ -32,11 +32,13 @@ func TestOrganizationInvitationClientCreate(t *testing.T) {
invitation, err := client.Create(context.Background(), &CreateParams{
OrganizationID: organizationID,
EmailAddress: clerk.String(emailAddress),
ExpiresInDays: clerk.Int64(1),
})
require.NoError(t, err)
require.Equal(t, id, invitation.ID)
require.Equal(t, organizationID, invitation.OrganizationID)
require.Equal(t, emailAddress, invitation.EmailAddress)
require.Equal(t, int64(1), *invitation.ExpiresAt)
}

func TestOrganizationInvitationClientCreate_Error(t *testing.T) {
@@ -74,7 +76,7 @@ func TestOrganizationInvitationClientList(t *testing.T) {
config.HTTPClient = &http.Client{
Transport: &clerktest.RoundTripper{
T: t,
Out: json.RawMessage(fmt.Sprintf(`{"data":[{"id":"%s","object":"organization_invitation","email_address":"string","role":"string","organization_id":"%s","status":"string","public_metadata":{},"private_metadata":{},"created_at":0,"updated_at":0}],"total_count":1}`, id, organizationID)),
Out: json.RawMessage(fmt.Sprintf(`{"data":[{"id":"%s","object":"organization_invitation","email_address":"string","role":"string","organization_id":"%s","status":"string","public_metadata":{},"private_metadata":{},"expires_at":1,"created_at":0,"updated_at":0}],"total_count":1}`, id, organizationID)),
Method: http.MethodGet,
Path: "/v1/organizations/" + organizationID + "/invitations",
Query: &url.Values{
@@ -95,6 +97,7 @@ func TestOrganizationInvitationClientList(t *testing.T) {
require.Len(t, response.OrganizationInvitations, 1)
require.Equal(t, id, response.OrganizationInvitations[0].ID)
require.Equal(t, organizationID, response.OrganizationInvitations[0].OrganizationID)
require.Equal(t, int64(1), *response.OrganizationInvitations[0].ExpiresAt)
require.Equal(t, int64(1), response.TotalCount)
}

@@ -131,7 +134,7 @@ func TestOrganizationInvitationClientGet(t *testing.T) {
config.HTTPClient = &http.Client{
Transport: &clerktest.RoundTripper{
T: t,
Out: json.RawMessage(fmt.Sprintf(`{"id":"%s","object":"organization_invitation","email_address":"string","role":"string","role_name":"string","organization_id":"%s","status":"string","public_metadata":{},"private_metadata":{},"created_at":0,"updated_at":0}`, id, organizationID)),
Out: json.RawMessage(fmt.Sprintf(`{"id":"%s","object":"organization_invitation","email_address":"string","role":"string","role_name":"string","organization_id":"%s","status":"string","public_metadata":{},"private_metadata":{},"expires_at": 1,"created_at":0,"updated_at":0}`, id, organizationID)),
Method: http.MethodGet,
Path: "/v1/organizations/" + organizationID + "/invitations/" + id,
},
@@ -146,6 +149,7 @@ func TestOrganizationInvitationClientGet(t *testing.T) {
require.Equal(t, organizationID, response.OrganizationID)
require.Equal(t, "string", response.RoleName)
require.Equal(t, "string", response.Role)
require.Equal(t, int64(1), *response.ExpiresAt)
}

func TestOrganizationInvitationClientGet_Error(t *testing.T) {

0 comments on commit 5af1efc

Please sign in to comment.