Conversation
- Implemented the Invitations method in the OrganizationAPI interface to list invitations for an organization. - Generated corresponding mock methods in organization_mock.go for testing. - This change enhances the API's functionality by allowing retrieval of organization invitations, aligning with the management API documentation.
- Introduced `invitationsOrganizationCmd` to handle invitations management. - Added `listInvitationsOrganizationCmd` for listing organization invitations with options for pagination and output formats. - Implemented `getOrgInvitationsWithSpinner` and `getOrgInvitations` methods for fetching invitations from the API. - Created `invitationsView` struct for displaying invitation details in a structured format.
…tions - Introduced a new section for managing invitations within organizations. - Added a new file `auth0_orgs_invitations.md` detailing the invitation management commands. - Created `auth0_orgs_invitations_list.md` to document the command for listing invitations. - Updated existing documentation files to include links to the new invitations section. This change enhances the usability of the Auth0 CLI by providing clear guidance on managing organization invitations.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1424 +/- ##
==========================================
- Coverage 64.51% 58.79% -5.72%
==========================================
Files 108 118 +10
Lines 17959 20535 +2576
==========================================
+ Hits 11586 12074 +488
- Misses 5615 7673 +2058
- Partials 758 788 +30 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
- Implemented CreateInvitation method in OrganizationAPI interface to facilitate creating invitations for organizations. - Added corresponding mock methods in organization_mock.go for testing purposes. - This change enhances the API's functionality, allowing users to manage organization invitations more effectively.
- Added `create` command to manage organization invitations, allowing users to create new invitations. - Introduced flags for inviter name, invitee email, client ID, connection ID, TTL seconds, and metadata. - Updated `auth0_orgs_invitations.md` to include the new command. - Created detailed documentation in `auth0_orgs_invitations_create.md` for usage and examples. - Enhanced `auth0_orgs_invitations_list.md` to reference the new create command. - Updated `invitations.go` to reflect changes in field names for consistency.
…ality - Implemented the DeleteInvitation method in the OrganizationAPI interface to allow deletion of invitations. - Added DeleteInvitation mock methods in organization_mock.go for testing purposes. - Created a new delete command in organizations.go to handle invitation deletions, including interactive and non-interactive modes. - Introduced invitationPickerOptions method to facilitate selection of invitations for deletion. - Added unit tests for invitationPickerOptions to ensure correct behavior under various scenarios.
… options - Fixed PickMany to validate if the command can prompt for required arguments. - This prevents making redundant GET api calls to list picker options. - Removed the unused selectArgument function to streamline the code.
- Implemented the `show` command for displaying organization invitations. - Added `Invitation` method to the `OrganizationAPI` interface in `organization.go`. - Created mock methods in `organization_mock.go` for testing the new functionality. - Updated `invitations.go` to include a new renderer method for showing invitations.
- Introduced aliases for the invitations commands to enhance usability: - Updated examples in the command documentation to reflect the new aliases. - This change aims to streamline command usage and improve user experience.
- Implemented new test cases for listing, creating, showing, and deleting organization invitations. - Added tests to verify behavior with valid and invalid inputs, including edge cases for missing arguments and invalid IDs. - Created a new script `get-org-invitation-id.sh` to facilitate the retrieval of invitation IDs for testing. - Updated existing `get-app-id.sh` script to ensure compatibility with the organization-invitation functionality.
- Added new required scopes for managing organization invitations: - `read:organization_invitations` - `create:organization_invitations` - `delete:organization_invitations` This change is necessary to ensure that the application has the appropriate permissions to handle organization invitations effectively.
…tion_invitations - Replaced the previous organization invitation scopes with generic extra scopes for better test coverage.
- Introduced a new script `delete-app-id.sh` to remove the app identifier file created during integration tests. - This script ensures that the identifier file is deleted only if the app is successfully removed, preventing stale data in subsequent test runs. - Updated the test case for app deletion to call this cleanup script after the app is deleted.
…n invitationsView
| if !canPrompt(cmd) { | ||
| return fmt.Errorf("Missing a required argument: %s", a.GetName()) | ||
| } | ||
|
|
There was a problem hiding this comment.
Don't update the existing Pick logic in arguments.go
There was a problem hiding this comment.
The existing Pick function was making API calls to fetch options and then checking whether those could be prompted. This change doesn’t affect the existing logic, but it avoids a redundant API call.
| ShortForm: "c", | ||
| Help: "Auth0 client ID. Used to resolve the application's login initiation endpoint.", | ||
| IsRequired: true, | ||
| } | ||
|
|
||
| connectionID = Flag{ | ||
| Name: "Connection ID", | ||
| LongForm: "connection-id", |
There was a problem hiding this comment.
To avoid confusion, remove shortform for clientID too..
as we didn't include shortform for connectionID
| } | ||
|
|
||
| func (cli *cli) invitationPickerOptions(ctx context.Context, orgID string) (pickerOptions, error) { | ||
| invitations, err := cli.getOrgInvitations(ctx, orgID, 1000) |
There was a problem hiding this comment.
why are we fetching only 1000 invitations..?
| applicationMetadata = Flag{ | ||
| Name: "App Metadata", | ||
| LongForm: "app-metadata", | ||
| ShortForm: "a", | ||
| Help: "Application metadata for the invited user in key=value format.", | ||
| } | ||
|
|
||
| userMetadata = Flag{ | ||
| Name: "User Metadata", | ||
| LongForm: "user-metadata", | ||
| ShortForm: "u", | ||
| Help: "User metadata for the invited user in key=value format.", | ||
| } |
There was a problem hiding this comment.
Clearly mention in the Help of Metadata logic : formatted as JSON.
| Use: "invitations", | ||
| Aliases: []string{"invs"}, | ||
| Short: "Manage invitations of an organization", | ||
| Long: "Manage invitations of an organization.", |
There was a problem hiding this comment.
Update Long more descriptive by taking the reference from : https://auth0.com/docs/manage-users/organizations/configure-organizations/invite-members
| Args: cobra.MaximumNArgs(2), | ||
| Short: "Show an organization invitation", | ||
| Long: "Display information about an organization invitation.", | ||
| Example: ` auth0 orgs invs show |
There was a problem hiding this comment.
Don't follow args format, Instead create separate flags for -orgId and -invId ..
| Short: "Create a new invitation to an organization", | ||
| Long: "Create a new invitation to an organization.", | ||
| Example: ` auth0 orgs invs create | ||
| auth0 orgs invs create <org-id> |
There was a problem hiding this comment.
Parse org-id as a flag and use picker logic on top of it
| inputs.OrgID = args[0] | ||
| args = args[1:] |
| return err | ||
| } | ||
|
|
||
| sortInvitations(invitations) |
There was a problem hiding this comment.
Why are we manually sorting, we have a field supporting --sort
| }, | ||
| } | ||
|
|
||
| organizationNumber.Help = "Number of organization invitations to retrieve. Minimum 1, maximum 1000." |
There was a problem hiding this comment.
Why are we limiting the range to 1 and 1000.
and why are we defining help Here..?
This PR introduces comprehensive support for managing organization invitations through the Auth0 CLI. Users can now create, list, show, and delete organization invitations directly from the command line.
🔧 Changes
Key additions:
auth0 orgs invitationscommand group with four subcommands:list,create,show, anddeleteinvsfor shorter command invocationOrganizationAPIinterface with four new methods:Invitations(),CreateInvitation(),Invitation(), andDeleteInvitation()read:organization_invitations,create:organization_invitations, anddelete:organization_invitationsCommand capabilities:
📚 References
#490
🔬 Testing
Automated Tests:
Integration Test Enhancements:
get-org-invitation-id.sh: Extracts invitation IDs from command output for use in subsequent testsdelete-app-id.sh: Cleanup script to remove test artifacts after app deletion testsget-app-id.shscript for better compatibility with invitation-related testsManual Testing:
All commands have been manually tested with:
📝 Checklist