Skip to content

Conversation

@aayushsingh2502
Copy link
Collaborator

Organization Membership functionalities implemented:

Create: Invite users to organizations via email with optional team assignments
List: Retrieve all organization memberships with flexible filtering and pagination
Read: Fetch individual membership details with relationship includes
Delete: Remove organization memberships

Note: Code cleanup done for comments mentioned in various files

Output from manul testing:

Testing Organization Membership List for: aayush-test
======================================================================

[Test 1] List all organization memberships:
    aayushsingh2512@gmail.com (ID: ou-fm7t9..., Status: active)
    sivaselvan.i@hashicorp.com (ID: ou-wQ23k..., Status: invited)
[OrganizationMembership(id='ou-fm7t92nqFwrDAqFv', status=<OrganizationMembershipStatus.ACTIVE: 'active'>, email='aayushsingh2512@gmail.com', organization=Organization(name=None, assessments_enforced=None, collaborator_auth_policy=None, cost_estimation_enabled=None, created_at=None, default_execution_mode=None, email=None, external_id=None, id='aayush-test', is_unified=None, owners_team_saml_role_id=None, permissions=None, saml_enabled=None, session_remember=None, session_timeout=None, trial_expires_at=None, two_factor_conformant=None, send_passing_statuses_for_untriggered_speculative_plans=None, remaining_testable_count=None, speculative_plan_management_enabled=None, aggregated_commit_status_enabled=None, allow_force_delete_workspaces=None, default_project=None, default_agent_pool=None, data_retention_policy=None, data_retention_policy_choice=None), user=User(id='user-CPS5eGKT5CQWuKkV', avatar_url='', email='', is_service_account=False, two_factor={}, unconfirmed_email='', username='', v2_only=False, is_site_admin=False, is_admin=False, is_sso_login=False, permissions={}), teams=[Team(id='team-dx24FR9xQUuwNTHA', name=None, is_unified=False, organization_access=None, visibility=None, permissions=None, user_count=0, sso_team_id=None, allow_member_token_management=False, users=None, organization_memberships=None)]), OrganizationMembership(id='ou-wQ23k4Bjsr4wt7Zh', status=<OrganizationMembershipStatus.INVITED: 'invited'>, email='sivaselvan.i@hashicorp.com', organization=Organization(name=None, assessments_enforced=None, collaborator_auth_policy=None, cost_estimation_enabled=None, created_at=None, default_execution_mode=None, email=None, external_id=None, id='aayush-test', is_unified=None, owners_team_saml_role_id=None, permissions=None, saml_enabled=None, session_remember=None, session_timeout=None, trial_expires_at=None, two_factor_conformant=None, send_passing_statuses_for_untriggered_speculative_plans=None, remaining_testable_count=None, speculative_plan_management_enabled=None, aggregated_commit_status_enabled=None, allow_force_delete_workspaces=None, default_project=None, default_agent_pool=None, data_retention_policy=None, data_retention_policy_choice=None), user=User(id='user-7o6ap6fG55kSp7PG', avatar_url='', email='', is_service_account=False, two_factor={}, unconfirmed_email='', username='', v2_only=False, is_site_admin=False, is_admin=False, is_sso_login=False, permissions={}), teams=[Team(id='team-dx24FR9xQUuwNTHA', name=None, is_unified=False, organization_access=None, visibility=None, permissions=None, user_count=0, sso_team_id=None, allow_member_token_management=False, users=None, organization_memberships=None)])]
    Total memberships: 2
    Success: Retrieved 2 membership(s)

[Test 2] Iterate with custom page size (3 items per page):
    aayushsingh2512@gmail.com
    sivaselvan.i@hashicorp.com
    Processed 2 memberships (fetched in batches of 3)
    Success: Pagination working correctly

[Test 3] Iterate with user relationships included:
    aayushsingh2512@gmail.com (User ID: user-CPS5eGKT5CQWuKkV)
    sivaselvan.i@hashicorp.com (User ID: user-7o6ap6fG55kSp7PG)
    Processed 2 memberships, 2 with user data
    Success: Include parameter working

[Test 4] Filter by status (invited only):
    Found 1 invited membership(s)
    sivaselvan.i@hashicorp.com
    Success: Status filter working

[Test 5] Filter by specific email address:
   Testing with email: aayushsingh2512@gmail.com
    Found 1 matching membership(s)
    aayushsingh2512@gmail.com
    Success: Email filter working correctly

[Test 6] Search memberships by query string:
   Searching for: gmail.com
    Found 1 membership(s) matching query
    aayushsingh2512@gmail.com
    Success: Query filter working

[Test 7] Combined filters: active members with user & teams included:
    Found 1 active membership(s)
    aayushsingh2512@gmail.com (Teams: 1,  User)
    Success: Combined filters working

[Test 8] Read a specific organization membership:
   Reading membership ID: ou-fm7t92nqFwrDAqFv
    Email: aayushsingh2512@gmail.com
    Status: active
    ID: ou-fm7t92nqFwrDAqFv
    Success: Read membership successfully

[Test 9] Read membership with options (include user & teams):
   Reading membership ID: ou-fm7t92nqFwrDAqFv
    Email: aayushsingh2512@gmail.com
    Status: active
    User ID: user-CPS5eGKT5CQWuKkV
    Teams: 1
    Success: Read with options working

[Create Example] Add a new organization membership:
    Error: TFEError: User is already an organization member

[Delete Example] Delete an organization membership:
   Attempting to delete membership: ou-9mG77c6uE5GScg9k
   ✗ Membership not found: not found
   ℹ The membership may have already been deleted or the ID is invalid


Output of integretion test:
Screenshot 2025-11-28 at 12 36 00 AM

@aayushsingh2502 aayushsingh2502 requested a review from a team as a code owner November 27, 2025 19:11
@hashicorp-cla-app
Copy link

hashicorp-cla-app bot commented Nov 27, 2025

CLA assistant check
All committers have signed the CLA.

@hashicorp-cla-app
Copy link

CLA assistant check

Thank you for your submission! We require that all contributors sign our Contributor License Agreement ("CLA") before we can accept the contribution. Read and sign the agreement

Learn more about why HashiCorp requires a CLA and what the CLA includes

Have you signed the CLA already but the status is still pending? Recheck it.

@aayushsingh2502 aayushsingh2502 merged commit 2a6d5bc into next-0.1.1 Dec 1, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants