---
title: "Verify expired invitations explain expiry and support a valid resend"
description: "Expire one organization invitation using controlled fixtures, then verify the old link fails and the administrator can resend a usable invitation."
canonical_url: "https://vostride.com/agent-library/organization-membership/expired-invitation-resend.md"
md_url: "https://vostride.com/agent-library/organization-membership/expired-invitation-resend.md"
content_kind: "recipe"
topic: "organization-membership"
---

# Verify expired invitations explain expiry and support a valid resend

Expire one organization invitation using controlled fixtures, then verify the old link fails and the administrator can resend a usable invitation.

## Risk

Invitation expiry should avoid creating half-joined accounts or trapping an intended teammate. The replacement flow needs a distinct valid link and clear membership state so an expired invitation does not count against the organization twice.

## Fixtures

- A test organization with room for a new member and a controlled recipient inbox.
- An application-supported hook to expire only the seeded invitation.
- A documented resend policy and invitation-state reader reporting active invitations and membership count.

## Steps

1. Create an invitation and retrieve its run-specific link, then expire it with the supported fixture hook.
2. Open the expired link as the recipient and verify a clear expiry explanation with no organization access.
3. In the administrator interface, locate the expired invitation and use the documented resend or reissue control.
4. Retrieve the replacement message, verify it is associated with the new request, and accept it as the intended recipient.
5. Reload the member list and inspect invitation state; verify one active membership, the intended role, and no duplicate active pending invitation.

## Expected results

- The expired invitation cannot create membership.
- Reissue produces an independently valid acceptance path.
- Final membership and invitation counts reflect one recipient rather than two invitation attempts.

## False-pass traps

- A displayed expired badge does not prove the original email link is refused.
- Reusing the same inbox message by mistake can make the resend implementation look broken.

## Cleanup

- Remove the recipient membership and clear the account-scoped expiry fixture and messages.

## Use with agent-qa

Adapt this test design to your application's acceptance criteria and configured target using the [recipe execution guide](/agent-library/software-factory/turn-a-recipe-into-an-agent-qa-test.md). External fixture setup and non-UI checks require your own supported hooks or test tooling. Validate the authored test, execute it, and inspect the completed evidence; this recipe is not a recorded test result.

## References

- [agent-qa test](/docs/agent-qa/configuration/test.md)
- [agent-qa hooks](/docs/agent-qa/guides/hooks.md)
- [agent-qa auth state](/docs/agent-qa/guides/auth-state.md)

- [Organization membership QA recipes](/agent-library/organization-membership.md)
- [Software factory QA library](/agent-library.md)
