Add unit tests for models and services
- Implemented unit tests for the Package model, covering methods such as generateId, findById, findByName, and version management. - Created unit tests for the Repository model, including repository creation, name validation, and retrieval methods. - Added tests for the Session model, focusing on session creation, validation, and invalidation. - Developed unit tests for the User model, ensuring user creation, password hashing, and retrieval methods function correctly. - Implemented AuthService tests, validating login, token refresh, and session management. - Added TokenService tests, covering token creation, validation, and revocation processes.
This commit is contained in:
104
test/helpers/storage.helper.ts
Normal file
104
test/helpers/storage.helper.ts
Normal file
@@ -0,0 +1,104 @@
|
||||
/**
|
||||
* Storage helper - S3/MinIO verification utilities for tests
|
||||
*
|
||||
* NOTE: These are stub implementations for testing.
|
||||
* The actual smartbucket API should be verified against the real library.
|
||||
*/
|
||||
|
||||
import { testConfig } from '../test.config.ts';
|
||||
|
||||
// Storage is optional for unit/integration tests
|
||||
// E2E tests with actual S3 operations would need proper implementation
|
||||
let storageAvailable = false;
|
||||
|
||||
/**
|
||||
* Check if test storage is available
|
||||
*/
|
||||
export async function checkStorageAvailable(): Promise<boolean> {
|
||||
try {
|
||||
// Try to connect to MinIO
|
||||
const response = await fetch(`${testConfig.s3.endpoint}/minio/health/live`, {
|
||||
method: 'GET',
|
||||
});
|
||||
storageAvailable = response.ok;
|
||||
return storageAvailable;
|
||||
} catch {
|
||||
storageAvailable = false;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize test storage connection
|
||||
*/
|
||||
export async function setupTestStorage(): Promise<void> {
|
||||
await checkStorageAvailable();
|
||||
if (storageAvailable) {
|
||||
console.log('[Test Storage] MinIO available at', testConfig.s3.endpoint);
|
||||
} else {
|
||||
console.log('[Test Storage] MinIO not available, storage tests will be skipped');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if an object exists in storage (stub)
|
||||
*/
|
||||
export async function objectExists(_key: string): Promise<boolean> {
|
||||
if (!storageAvailable) return false;
|
||||
// Would implement actual check here
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* List objects with a given prefix (stub)
|
||||
*/
|
||||
export async function listObjects(_prefix: string): Promise<string[]> {
|
||||
if (!storageAvailable) return [];
|
||||
// Would implement actual list here
|
||||
return [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an object from storage (stub)
|
||||
*/
|
||||
export async function deleteObject(_key: string): Promise<void> {
|
||||
if (!storageAvailable) return;
|
||||
// Would implement actual delete here
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete all objects with a given prefix
|
||||
*/
|
||||
export async function deletePrefix(prefix: string): Promise<void> {
|
||||
const objects = await listObjects(prefix);
|
||||
for (const key of objects) {
|
||||
await deleteObject(key);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Clean up test storage
|
||||
*/
|
||||
export async function cleanupTestStorage(): Promise<void> {
|
||||
if (!storageAvailable) return;
|
||||
|
||||
try {
|
||||
// Delete all test objects
|
||||
await deletePrefix('npm/');
|
||||
await deletePrefix('oci/');
|
||||
await deletePrefix('maven/');
|
||||
await deletePrefix('cargo/');
|
||||
await deletePrefix('pypi/');
|
||||
await deletePrefix('composer/');
|
||||
await deletePrefix('rubygems/');
|
||||
} catch {
|
||||
// Ignore errors
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if storage is available
|
||||
*/
|
||||
export function isStorageAvailable(): boolean {
|
||||
return storageAvailable;
|
||||
}
|
||||
Reference in New Issue
Block a user