From 0ef33a9f9b7ff1dd252000c972c3a01848fb05fa Mon Sep 17 00:00:00 2001 From: Sebastian Rivera Date: Fri, 14 Oct 2022 10:44:25 -0400 Subject: [PATCH 1/2] Add filter[status] and query search params to list opts --- organization_membership.go | 7 ++++ organization_membership_integration_test.go | 40 +++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/organization_membership.go b/organization_membership.go index 396b3a94a..db57642a6 100644 --- a/organization_membership.go +++ b/organization_membership.go @@ -80,6 +80,13 @@ type OrganizationMembershipListOptions struct { // Optional: A list of organization member emails to filter by. Emails []string `url:"filter[email],omitempty"` + + // Optional: If specified, restricts results to those matching status value. + Status OrganizationMembershipStatus `url:"filter[status],omitempty"` + + // Optional: A query string to search organization memberships by user name + // and email. + Query string `url:"q,omitempty"` } // OrganizationMembershipCreateOptions represents the options for creating an organization membership. diff --git a/organization_membership_integration_test.go b/organization_membership_integration_test.go index ab4a0381d..76525aae4 100644 --- a/organization_membership_integration_test.go +++ b/organization_membership_integration_test.go @@ -103,6 +103,46 @@ func TestOrganizationMembershipsList(t *testing.T) { }) }) + t.Run("with status filter option", func(t *testing.T) { + _, memTest1Cleanup := createOrganizationMembership(t, client, orgTest) + t.Cleanup(memTest1Cleanup) + _, memTest2Cleanup := createOrganizationMembership(t, client, orgTest) + t.Cleanup(memTest2Cleanup) + + ml, err := client.OrganizationMemberships.List(ctx, orgTest.Name, &OrganizationMembershipListOptions{ + Status: OrganizationMembershipInvited, + }) + require.NoError(t, err) + + require.Len(t, ml.Items, 2) + for _, member := range ml.Items { + assert.Equal(t, member.Status, OrganizationMembershipInvited) + } + }) + + t.Run("with search query string", func(t *testing.T) { + memTest1, memTest1Cleanup := createOrganizationMembership(t, client, orgTest) + t.Cleanup(memTest1Cleanup) + _, memTest2Cleanup := createOrganizationMembership(t, client, orgTest) + t.Cleanup(memTest2Cleanup) + _, memTest3Cleanup := createOrganizationMembership(t, client, orgTest) + t.Cleanup(memTest3Cleanup) + + t.Run("using an email", func(t *testing.T) { + ml, err := client.OrganizationMemberships.List(ctx, orgTest.Name, &OrganizationMembershipListOptions{ + Query: memTest1.Email, + }) + require.NoError(t, err) + + require.Len(t, ml.Items, 1) + assert.Equal(t, ml.Items[0].Email, memTest1.Email) + }) + + t.Run("using a user name", func(t *testing.T) { + t.Skip("Skipping, missing Account API support in order to set usernames") + }) + }) + t.Run("without a valid organization", func(t *testing.T) { ml, err := client.OrganizationMemberships.List(ctx, badIdentifier, nil) assert.Nil(t, ml) From 739497bd6ed8dce9d4b9b72777e70f6a81e7e7b0 Mon Sep 17 00:00:00 2001 From: Sebastian Rivera Date: Fri, 14 Oct 2022 10:46:43 -0400 Subject: [PATCH 2/2] Update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ec582f136..5954d9db6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +# (Unreleased) + +## Enhancements +* Adds `Query` and `Status` fields to `OrganizationMembershipListOptions` to allow filtering memberships by status or username by @sebasslash [#550](https://github.com/hashicorp/go-tfe/pull/550) + # v1.10.0 ## Enhancements