Skip to content

Commit

Permalink
feat: integrate MinIO for object store management in E2E tests
Browse files Browse the repository at this point in the history
  • Loading branch information
huynguyen-hl committed Mar 2, 2025
1 parent e0f0c3e commit b50eafd
Show file tree
Hide file tree
Showing 4 changed files with 124 additions and 86 deletions.
67 changes: 46 additions & 21 deletions e2e/cypress.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,21 @@ import { defineConfig } from 'cypress';
import fs from 'fs';
import path from 'path';
import util from 'util';
import { Client, ClientOptions } from 'minio';

const execPromise = util.promisify(exec);
export default defineConfig({
env: {
idrBucketName: process.env.IDR_BUCKET_NAME || 'idr-bucket-1',
idrGS1Prefix: process.env.IDR_GS1_PREFIX || 'gs1',
idrMinioConfig: {
endPoint: process.env.IDR_MINIO_ENDPOINT || 'localhost',
port: parseInt(process.env.IDR_MINIO_PORT || '9000', 10),
useSSL: process.env.IDR_MINIO_USE_SSL === 'true',
accessKey: process.env.IDR_MINIO_ACCESS_KEY || 'minioadmin',
secretKey: process.env.IDR_MINIO_SECRET_KEY || 'minioadmin',
},
},
e2e: {
baseUrl: 'http://localhost:3003', // Replace with your application's base URL
supportFile: 'cypress/support/e2e.ts',
Expand All @@ -16,7 +28,7 @@ export default defineConfig({
runMode: 2, // Retries in headless mode
openMode: 0, // No retries in interactive mode
},
defaultCommandTimeout: 4000,
defaultCommandTimeout: 10000,
defaultBrowser: 'chrome',
setupNodeEvents(on) {
on('task', {
Expand All @@ -34,29 +46,42 @@ export default defineConfig({
throw error;
}
},
resetData(file?: string) {

const targetDir = path.resolve(
process.cwd(),
`../minio_data/identity-resolver-service-object-store/data-test/idr-bucket-1/gs1${file ? `/${file}` : ''}`
);

if (fs.existsSync(targetDir)) {
console.log(`Found folder: ${targetDir}`);
console.log('Deleting folder...');

fs.rmdirSync(targetDir, { recursive: true });
async clearObjectStore({ bucketName, prefix, minioConfig }: { bucketName: string; prefix?: string; minioConfig: ClientOptions }) {
try {
if (!bucketName) {
return {
success: false,
message: 'Bucket name is required.',
}
}

if (!fs.existsSync(targetDir)) {
console.log('Folder deleted successfully.');
return { success: true };
} else {
console.log('Failed to delete the folder.');
return { success: false };
const minioClient = new Client(minioConfig);
const bucketExists = await minioClient.bucketExists(bucketName);
if (!bucketExists) {
return {
success: false,
message: `Bucket ${bucketName} does not exist.`,
};
}

const objects: string[] = [];
const bucketStream = minioClient.listObjectsV2(bucketName, prefix, true); // true for recursive

// Collect all object names
await new Promise<void>((resolve, reject) => {
bucketStream.on('data', (obj) => obj.name && objects.push(obj.name));
bucketStream.on('error', (err) => reject(err));
bucketStream.on('end', () => resolve());
});

if (objects.length > 0) {
await minioClient.removeObjects(bucketName, objects);
}
} else {
console.log(`Folder not found: ${targetDir}`);

return { success: true };
} catch (error) {
console.log(error);
throw error;
}
},
async runUntpTest({ type, version, testData }) {
Expand Down
5 changes: 4 additions & 1 deletion e2e/cypress/support/commands/common.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
after(() => {
// cy.task('resetData');
const idrBucketName = Cypress.env('idrBucketName');
const idrGS1Prefix = Cypress.env('idrGS1Prefix');
const idrMinioConfig = Cypress.env('idrMinioConfig');
cy.task('clearObjectStore', { bucketName: idrBucketName, prefix: idrGS1Prefix, minioConfig: idrMinioConfig });
Cypress.env('lastCredential', undefined);
});
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
"@types/uuid": "^9.0.7",
"cross-env": "^7.0.3",
"cypress": "^13.16.1",
"minio": "^8.0.4",
"eslint-plugin-prettier": "^5.1.3",
"husky": "^8.0.0",
"jest": "29.7.0",
Expand Down
137 changes: 73 additions & 64 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2541,10 +2541,10 @@
pump "^3.0.0"
tar-fs "^2.1.1"

"@next/env@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/env/-/env-15.1.7.tgz#14e2678f893aec50ff2dcb7a6665092fb9e1263d"
integrity sha512-d9jnRrkuOH7Mhi+LHav2XW91HOgTAWHxjMPkXMGBc9B2b7614P7kjt8tAplRvJpbSt4nbO1lugcT/kAaWzjlLQ==
"@next/env@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/env/-/env-15.0.3.tgz#a2e9bf274743c52b74d30f415f3eba750d51313a"
integrity sha512-t9Xy32pjNOvVn2AS+Utt6VmyrshbpfUMhIjFO60gI58deSo/KgLOp31XZ4O+kY/Is8WAGYwA5gR7kOb1eORDBA==

"@next/[email protected]":
version "15.0.3"
Expand All @@ -2553,45 +2553,45 @@
dependencies:
fast-glob "3.3.1"

"@next/swc-darwin-arm64@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.7.tgz#ecc6eacf174df36a6c73f7c319ed864ec6e08079"
integrity sha512-hPFwzPJDpA8FGj7IKV3Yf1web3oz2YsR8du4amKw8d+jAOHfYHYFpMkoF6vgSY4W6vB29RtZEklK9ayinGiCmQ==

"@next/swc-darwin-x64@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.7.tgz#d25b4c131d13439ea4b263dbcd0fd518a835f31c"
integrity sha512-2qoas+fO3OQKkU0PBUfwTiw/EYpN+kdAx62cePRyY1LqKtP09Vp5UcUntfZYajop5fDFTjSxCHfZVRxzi+9FYQ==

"@next/swc-linux-arm64-gnu@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.7.tgz#b19abc7b56918042b5309f55f7010e7932ee4967"
integrity sha512-sKLLwDX709mPdzxMnRIXLIT9zaX2w0GUlkLYQnKGoXeWUhcvpCrK+yevcwCJPdTdxZEUA0mOXGLdPsGkudGdnA==

"@next/swc-linux-arm64-musl@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.7.tgz#cb2ac35d3024e9d46ce0d4ff03bf491e0773519f"
integrity sha512-zblK1OQbQWdC8fxdX4fpsHDw+VSpBPGEUX4PhSE9hkaWPrWoeIJn+baX53vbsbDRaDKd7bBNcXRovY1hEhFd7w==

"@next/swc-linux-x64-gnu@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.7.tgz#cf6e338a1fbb1c9b019c158a76a7ab4f143929ce"
integrity sha512-GOzXutxuLvLHFDAPsMP2zDBMl1vfUHHpdNpFGhxu90jEzH6nNIgmtw/s1MDwpTOiM+MT5V8+I1hmVFeAUhkbgQ==

"@next/swc-linux-x64-musl@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.7.tgz#94c9117ece8e5851e7e6674f12d6b82b435e3a6f"
integrity sha512-WrZ7jBhR7ATW1z5iEQ0ZJfE2twCNSXbpCSaAunF3BKcVeHFADSI/AW1y5Xt3DzTqPF1FzQlwQTewqetAABhZRQ==

"@next/swc-win32-arm64-msvc@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.7.tgz#4947f3b7f41c7347114985bf3c91e2eacddfe124"
integrity sha512-LDnj1f3OVbou1BqvvXVqouJZKcwq++mV2F+oFHptToZtScIEnhNRJAhJzqAtTE2dB31qDYL45xJwrc+bLeKM2Q==

"@next/swc-win32-x64-msvc@15.1.7":
version "15.1.7"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.7.tgz#0adb399deb15291b61be94909a97e0d6ce1f61fa"
integrity sha512-dC01f1quuf97viOfW05/K8XYv2iuBgAxJZl7mbCKEjMgdQl5JjAKJ0D2qMKZCgPWDeFbFT0Q0nYWwytEW0DWTQ==
"@next/swc-darwin-arm64@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.3.tgz#4c40c506cf3d4d87da0204f4cccf39e6bdc46a71"
integrity sha512-s3Q/NOorCsLYdCKvQlWU+a+GeAd3C8Rb3L1YnetsgwXzhc3UTWrtQpB/3eCjFOdGUj5QmXfRak12uocd1ZiiQw==

"@next/swc-darwin-x64@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.3.tgz#8e06cacae3dae279744f9fbe88dea679ec2c1ca3"
integrity sha512-Zxl/TwyXVZPCFSf0u2BNj5sE0F2uR6iSKxWpq4Wlk/Sv9Ob6YCKByQTkV2y6BCic+fkabp9190hyrDdPA/dNrw==

"@next/swc-linux-arm64-gnu@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.3.tgz#c144ad1f21091b9c6e1e330ecc2d56188763191d"
integrity sha512-T5+gg2EwpsY3OoaLxUIofmMb7ohAUlcNZW0fPQ6YAutaWJaxt1Z1h+8zdl4FRIOr5ABAAhXtBcpkZNwUcKI2fw==

"@next/swc-linux-arm64-musl@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.3.tgz#3ccb71c6703bf421332f177d1bb0e10528bc73a2"
integrity sha512-WkAk6R60mwDjH4lG/JBpb2xHl2/0Vj0ZRu1TIzWuOYfQ9tt9NFsIinI1Epma77JVgy81F32X/AeD+B2cBu/YQA==

"@next/swc-linux-x64-gnu@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.3.tgz#b90aa9b07001b4000427c35ab347a9273cbeebb3"
integrity sha512-gWL/Cta1aPVqIGgDb6nxkqy06DkwJ9gAnKORdHWX1QBbSZZB+biFYPFti8aKIQL7otCE1pjyPaXpFzGeG2OS2w==

"@next/swc-linux-x64-musl@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.3.tgz#0ac9724fb44718fc97bfea971ac3fe17e486590e"
integrity sha512-QQEMwFd8r7C0GxQS62Zcdy6GKx999I/rTO2ubdXEe+MlZk9ZiinsrjwoiBL5/57tfyjikgh6GOU2WRQVUej3UA==

"@next/swc-win32-arm64-msvc@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.3.tgz#932437d4cf27814e963ba8ae5f033b4421fab9ca"
integrity sha512-9TEp47AAd/ms9fPNgtgnT7F3M1Hf7koIYYWCMQ9neOwjbVWJsHZxrFbI3iEDJ8rf1TDGpmHbKxXf2IFpAvheIQ==

"@next/swc-win32-x64-msvc@15.0.3":
version "15.0.3"
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.3.tgz#940a6f7b370cdde0cc67eabe945d9e6d97e0be9f"
integrity sha512-VNAz+HN4OGgvZs6MOoVfnn41kBzT+M+tB+OK4cww6DNyWS6wKaDpaAm/qLeOUbnMh0oVx1+mg0uoYARF69dJyA==

"@nicolo-ribaudo/[email protected]":
version "5.1.1-v1"
Expand Down Expand Up @@ -4705,12 +4705,12 @@
resolved "https://registry.yarnpkg.com/@swc/counter/-/counter-0.1.3.tgz#cc7463bd02949611c6329596fccd2b0ec782b0e9"
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==

"@swc/[email protected].15":
version "0.5.15"
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.15.tgz#79efab344c5819ecf83a43f3f9f811fc84b516d7"
integrity sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==
"@swc/[email protected].13":
version "0.5.13"
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c"
integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==
dependencies:
tslib "^2.8.0"
tslib "^2.4.0"

"@swc/types@^0.1.17":
version "0.1.17"
Expand Down Expand Up @@ -14049,27 +14049,27 @@ neo-async@^2.5.0, neo-async@^2.6.2:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==

next@^15.0.3:
version "15.1.7"
resolved "https://registry.yarnpkg.com/next/-/next-15.1.7.tgz#e814845e7cdb0294aee88ceab0bb962de83e8e6f"
integrity sha512-GNeINPGS9c6OZKCvKypbL8GTsT5GhWPp4DM0fzkXJuXMilOO2EeFxuAY6JZbtk6XIl6Ws10ag3xRINDjSO5+wg==
[email protected]:
version "15.0.3"
resolved "https://registry.yarnpkg.com/next/-/next-15.0.3.tgz#804f5b772e7570ef1f088542a59860914d3288e9"
integrity sha512-ontCbCRKJUIoivAdGB34yCaOcPgYXr9AAkV/IwqFfWWTXEPUgLYkSkqBhIk9KK7gGmgjc64B+RdoeIDM13Irnw==
dependencies:
"@next/env" "15.1.7"
"@next/env" "15.0.3"
"@swc/counter" "0.1.3"
"@swc/helpers" "0.5.15"
"@swc/helpers" "0.5.13"
busboy "1.6.0"
caniuse-lite "^1.0.30001579"
postcss "8.4.31"
styled-jsx "5.1.6"
optionalDependencies:
"@next/swc-darwin-arm64" "15.1.7"
"@next/swc-darwin-x64" "15.1.7"
"@next/swc-linux-arm64-gnu" "15.1.7"
"@next/swc-linux-arm64-musl" "15.1.7"
"@next/swc-linux-x64-gnu" "15.1.7"
"@next/swc-linux-x64-musl" "15.1.7"
"@next/swc-win32-arm64-msvc" "15.1.7"
"@next/swc-win32-x64-msvc" "15.1.7"
"@next/swc-darwin-arm64" "15.0.3"
"@next/swc-darwin-x64" "15.0.3"
"@next/swc-linux-arm64-gnu" "15.0.3"
"@next/swc-linux-arm64-musl" "15.0.3"
"@next/swc-linux-x64-gnu" "15.0.3"
"@next/swc-linux-x64-musl" "15.0.3"
"@next/swc-win32-arm64-msvc" "15.0.3"
"@next/swc-win32-x64-msvc" "15.0.3"
sharp "^0.33.5"

no-case@^3.0.4:
Expand Down Expand Up @@ -18421,7 +18421,7 @@ tslib@^1.13.0, tslib@^1.8.1:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==

tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.0, tslib@^2.6.2, tslib@^2.7.0, tslib@^2.8.0, tslib@^2.8.1:
tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0, tslib@^2.4.0, tslib@^2.6.0, tslib@^2.6.2, tslib@^2.7.0, tslib@^2.8.1:
version "2.8.1"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
Expand Down Expand Up @@ -19583,7 +19583,7 @@ workerpool@^6.5.1:
resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544"
integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==

"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
Expand All @@ -19601,6 +19601,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"

wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
dependencies:
ansi-styles "^4.0.0"
string-width "^4.1.0"
strip-ansi "^6.0.0"

wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
Expand Down

0 comments on commit b50eafd

Please sign in to comment.