Class Test_PasswordResetTokenRepository
Comprehensive test suite for the PasswordResetTokenRepository class.
Inherited Members
Namespace: OEMS.UnitTests.Infrastructure
Assembly: OEMS.UnitTests.dll
Syntax
[TestClass]
public sealed class Test_PasswordResetTokenRepository
Remarks
This test class verifies the repository's database operations for password reset tokens including:
- Token creation and persistence
- Token validation and retrieval
- Token expiration handling
- Token usage tracking
- Cleanup operations for expired tokens
Test categories following testkonzept guidelines:
- Valid operations: Create, retrieve, update tokens
- Invalid operations: Missing tokens, invalid IDs
- Edge cases: Expired tokens, concurrent access, boundary conditions
Methods
ConcurrentTokenCreation_MultipleThreads_HandledCorrectly()
Tests concurrent token operations.
Declaration
[TestMethod]
public Task ConcurrentTokenCreation_MultipleThreads_HandledCorrectly()
Returns
Type | Description |
---|---|
Task |
Remarks
Edge case test: Concurrency handling. Verifies repository handles concurrent operations correctly.
CreateAsync_NullToken_ReturnsFalse()
Tests token creation with null token object.
Declaration
[TestMethod]
public Task CreateAsync_NullToken_ReturnsFalse()
Returns
Type | Description |
---|---|
Task |
Remarks
Invalid parameter test: Null reference passed to repository. Should handle gracefully and return false.
CreateAsync_ValidToken_CreatesSuccessfully()
Tests successful creation of a new password reset token.
Declaration
[TestMethod]
public Task CreateAsync_ValidToken_CreatesSuccessfully()
Returns
Type | Description |
---|---|
Task |
Remarks
Valid parameter test: All required fields provided, user exists. Verifies token is properly persisted with all properties.
DeleteExpiredTokensAsync_RemovesExpiredTokens()
Tests cleanup of expired tokens.
Declaration
[TestMethod]
public Task DeleteExpiredTokensAsync_RemovesExpiredTokens()
Returns
Type | Description |
---|---|
Task |
Remarks
Edge case test: Data maintenance operations. Verifies repository can clean up old expired tokens.
GetByTokenAsync_CaseSensitive_ReturnsNull()
Tests that token retrieval is case-sensitive.
Declaration
[TestMethod]
public Task GetByTokenAsync_CaseSensitive_ReturnsNull()
Returns
Type | Description |
---|---|
Task |
Remarks
Security test: Token case sensitivity. Verifies tokens are matched exactly as stored.
GetByTokenAsync_EmptyOrNullToken_ReturnsNull()
Tests token retrieval with empty or null token string.
Declaration
[TestMethod]
public Task GetByTokenAsync_EmptyOrNullToken_ReturnsNull()
Returns
Type | Description |
---|---|
Task |
Remarks
Security test: Input validation. Should handle invalid input gracefully.
GetByTokenAsync_ExistingToken_ReturnsToken()
Tests successful retrieval of a password reset token by token string.
Declaration
[TestMethod]
public Task GetByTokenAsync_ExistingToken_ReturnsToken()
Returns
Type | Description |
---|---|
Task |
Remarks
Valid parameter test: Token exists in database. Verifies repository correctly retrieves token with all properties.
GetByTokenAsync_NonExistentToken_ReturnsNull()
Tests retrieval of non-existent token.
Declaration
[TestMethod]
public Task GetByTokenAsync_NonExistentToken_ReturnsNull()
Returns
Type | Description |
---|---|
Task |
Remarks
Invalid parameter test: Token does not exist in database. Should return null without throwing exceptions.
GetByTokenAsync_WithWhitespace_ReturnsNull()
Tests that whitespace in tokens is significant.
Declaration
[TestMethod]
public Task GetByTokenAsync_WithWhitespace_ReturnsNull()
Returns
Type | Description |
---|---|
Task |
Remarks
Security test: Token exact matching. Verifies whitespace and formatting are preserved.
GetValidTokensByUserIdAsync_ExpiredTokens_NotIncluded()
Tests that expired tokens are not returned as valid.
Declaration
[TestMethod]
public Task GetValidTokensByUserIdAsync_ExpiredTokens_NotIncluded()
Returns
Type | Description |
---|---|
Task |
Remarks
Edge case test: Token expiration boundary condition. Verifies repository correctly handles token expiration logic.
GetValidTokensByUserIdAsync_NonExistentUser_ReturnsEmpty()
Tests retrieval of valid tokens for non-existent user.
Declaration
[TestMethod]
public Task GetValidTokensByUserIdAsync_NonExistentUser_ReturnsEmpty()
Returns
Type | Description |
---|---|
Task |
Remarks
Invalid parameter test: User ID does not exist in database. Should return empty collection.
GetValidTokensByUserIdAsync_UsedTokens_NotIncluded()
Tests that used tokens are not returned as valid.
Declaration
[TestMethod]
public Task GetValidTokensByUserIdAsync_UsedTokens_NotIncluded()
Returns
Type | Description |
---|---|
Task |
Remarks
Edge case test: Token reuse prevention. Verifies repository correctly handles used token logic.
GetValidTokensByUserIdAsync_UserWithValidTokens_ReturnsOnlyValidTokens()
Tests successful retrieval of valid tokens for a user.
Declaration
[TestMethod]
public Task GetValidTokensByUserIdAsync_UserWithValidTokens_ReturnsOnlyValidTokens()
Returns
Type | Description |
---|---|
Task |
Remarks
Valid parameter test: User exists and has valid tokens. Verifies repository returns only valid (unused and not expired) tokens.
InvalidateAllUserTokensAsync_InvalidatesAllUserTokens()
Tests invalidation of all tokens for a user.
Declaration
[TestMethod]
public Task InvalidateAllUserTokensAsync_InvalidatesAllUserTokens()
Returns
Type | Description |
---|---|
Task |
Remarks
Edge case test: Bulk token invalidation. Verifies repository can invalidate all user tokens at once.
MarkAsUsedAsync_NonExistentTokenId_ReturnsFalse()
Tests marking non-existent token as used.
Declaration
[TestMethod]
public Task MarkAsUsedAsync_NonExistentTokenId_ReturnsFalse()
Returns
Type | Description |
---|---|
Task |
Remarks
Invalid parameter test: Token ID does not exist in database. Should handle gracefully and return false.
MarkAsUsedAsync_ValidToken_MarksAsUsed()
Tests successful marking of a token as used.
Declaration
[TestMethod]
public Task MarkAsUsedAsync_ValidToken_MarksAsUsed()
Returns
Type | Description |
---|---|
Task |
Remarks
Valid parameter test: Token exists and is valid. Verifies token usage status is correctly updated in database.
SetUp()
Initializes test environment with in-memory database before each test.
Declaration
[TestInitialize]
public Task SetUp()
Returns
Type | Description |
---|---|
Task |
Remarks
Creates a fresh database context for each test to ensure isolation. Sets up test data that covers various token states and scenarios.
TearDown()
Cleans up test resources after each test
Declaration
[TestCleanup]
public void TearDown()