diff --git a/.env.local b/.env.local new file mode 100644 index 0000000..d97c0f2 --- /dev/null +++ b/.env.local @@ -0,0 +1,17 @@ +# KSM GitHub Action - Local Testing Configuration +# Copy this file to .env.local and fill in your values + +# Required: Your KSM configuration (base64 encoded) +KSM_TEST_CONFIG=eyJob3N0bmFtZSI6ImtlZXBlcnNlY3VyaXR5LmNvbSIsImNsaWVudElkIjoiM3ZtT1VsU29maGNIZFpSMzBoQk9OdE1YVFcrTVZvTUo0QWVuczQ2Sjd0VTc2eXdPZ0xXMVkzWUxJMW53dGlUaE9MeWdicmt5QXl1UXdhOXdjTEU3dUE9PSIsInByaXZhdGVLZXkiOiJNSUdIQWdFQU1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhCRzB3YXdJQkFRUWdQTS9uMVdXRVl0N3dkMHMrU1lhRUJ2MElkUTR5MWRDQWxiVDZZRFNZMm11aFJBTkNBQVFjUDBIdG0rUVM5dzFKeU84QXI2OTN3UUJsalQxWTJXVzFjNVVKamdlQW10d1N2ZFdKSXRDOW5lSVRzd1dZcjBoRCtTRGNEM05HRDl4bGdwazlpdFl4Iiwic2VydmVyUHVibGljS2V5SWQiOiIxMCIsImFwcEtleSI6IjVMRUt5bU9yN3ZnSDFFc0lUTkxBOVR5clNaNkROZ0ZHWjlLTFVRYzkrcE09IiwiYXBwT3duZXJQdWJsaWNLZXkiOiJCTld1VlROKzVDVmtRaEd5LzlsaHFuc1M4RzVrQ1JkZm15VnYxZytjb1VXU1pVSktPYVFnMVhHOUxhUHV0L1lhclpESFBQMk5YbEpMWWs5RG9PZTU5b1U9In0= + +# Required: A record UID that your KSM app has read/write access to +KSM_TEST_RECORD_UID=A7Pu-DNINF8d14VD5NGETA + +# Required for create-if-missing tests: Folder UID where new records can be created +KSM_TEST_FOLDER_UID=02s3nG_SRZ76R07PEUZXXg + +# Optional: Set to 'true' to skip tests that modify data +KSM_TEST_SKIP_DESTRUCTIVE=false + +# Optional: Additional test configuration +KSM_TEST_TIMEOUT=30000 \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 59d3cb5..0eef074 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,6 +20,10 @@ jobs: test: # make sure the action works on a clean machine without building environment: prod runs-on: ubuntu-latest + env: + # Use repository variable if available, otherwise use default test record UID + # This can be set in GitHub repository settings under Settings > Secrets and variables > Actions > Variables + TEST_RECORD_UID: ${{ vars.KSM_TEST_RECORD_UID || 'MC5EQRXjBQMiKidoMQuoSQ' }} steps: - uses: actions/checkout@v4 - name: "Run KSM Action from source" @@ -28,12 +32,12 @@ jobs: with: keeper-secret-config: ${{ secrets.KSM_ACTION_TEST_CONFIG }} secrets: | - b7K1o8Fwoot8bryzH6pZJg/field/login > username - b7K1o8Fwoot8bryzH6pZJg/field/password > password - b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > ./ch1.txt - b7K1o8Fwoot8bryzH6pZJg/field/login > env:USERNAME - b7K1o8Fwoot8bryzH6pZJg/field/password > env:PASSWORD - b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > file:./ch1.txt + ${{ env.TEST_RECORD_UID }}/field/login > username + ${{ env.TEST_RECORD_UID }}/field/password > password + ${{ env.TEST_RECORD_UID }}/file/file.txt > ./ch1.txt + ${{ env.TEST_RECORD_UID }}/field/login > env:USERNAME + ${{ env.TEST_RECORD_UID }}/field/password > env:PASSWORD + ${{ env.TEST_RECORD_UID }}/file/file.txt > file:./ch1.txt - name: Print secrets run: | username="${{ steps.ksm.outputs.username }}" @@ -48,12 +52,12 @@ jobs: with: keeper-secret-config: ${{ secrets.KSM_ACTION_TEST_CONFIG }} secrets: | - b7K1o8Fwoot8bryzH6pZJg/field/login > username2 - b7K1o8Fwoot8bryzH6pZJg/field/password > password2 - b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > ./ch12.txt - b7K1o8Fwoot8bryzH6pZJg/field/login > env:USERNAME2 - b7K1o8Fwoot8bryzH6pZJg/field/password > env:PASSWORD2 - b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > file:./ch12.txt + ${{ env.TEST_RECORD_UID }}/field/login > username2 + ${{ env.TEST_RECORD_UID }}/field/password > password2 + ${{ env.TEST_RECORD_UID }}/file/file.txt > ./ch12.txt + ${{ env.TEST_RECORD_UID }}/field/login > env:USERNAME2 + ${{ env.TEST_RECORD_UID }}/field/password > env:PASSWORD2 + ${{ env.TEST_RECORD_UID }}/file/file.txt > file:./ch12.txt - name: Print secrets2 run: | username="${{ steps.ksm2.outputs.username2 }}" diff --git a/package-lock.json b/package-lock.json index d15777f..9ff7c75 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "devDependencies": { "@actions/core": "^1.10.1", "@keeper-security/secrets-manager-core": "16.6.2", - "@types/node": "^20.11.26", + "@types/node": "^22.0.2", "@typescript-eslint/parser": "^7.2.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.57.0", @@ -1473,12 +1473,12 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.26", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.26.tgz", - "integrity": "sha512-YwOMmyhNnAWijOBQweOJnQPl068Oqd4K3OFbTc6AHJwzweUwwWG3GIFY74OKks2PJUDkQPeddOQES9mLn1CTEQ==", + "version": "22.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.0.2.tgz", + "integrity": "sha512-yPL6DyFwY5PiMVEwymNeqUTKsDczQBJ/5T7W/46RwLU/VH+AA8aT5TZkvBviLKLbbm0hlfftEkGrNzfRk/fofQ==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.11.1" } }, "node_modules/@types/semver": { @@ -6744,9 +6744,9 @@ } }, "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.11.1.tgz", + "integrity": "sha512-mIDEX2ek50x0OlRgxryxsenE5XaQD4on5U2inY7RApK3SOJpofyw7uW2AyfMKkhAxXIceo2DeWGVGwyvng1GNQ==", "dev": true }, "node_modules/update-browserslist-db": { diff --git a/package.json b/package.json index 777f8d5..9b1f17f 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@actions/core": "^1.10.1", "@keeper-security/secrets-manager-core": "16.6.2", - "@types/node": "^20.11.26", + "@types/node": "^22.0.2", "@typescript-eslint/parser": "^7.2.0", "@vercel/ncc": "^0.38.1", "eslint": "^8.57.0", diff --git a/test-fix.patch b/test-fix.patch new file mode 100644 index 0000000..296c239 --- /dev/null +++ b/test-fix.patch @@ -0,0 +1,53 @@ +diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml +index 1234567..2345678 100644 +--- a/.github/workflows/test.yml ++++ b/.github/workflows/test.yml +@@ -19,6 +19,10 @@ jobs: + test: # make sure the action works on a clean machine without building + environment: prod + runs-on: ubuntu-latest ++ env: ++ # Use repository variable if available, otherwise use default test record UID ++ # This can be set in GitHub repository settings under Settings > Secrets and variables > Actions > Variables ++ TEST_RECORD_UID: ${{ vars.KSM_TEST_RECORD_UID || 'MC5EQRXjBQMiKidoMQuoSQ' }} + steps: + - uses: actions/checkout@v4 + - name: "Run KSM Action from source" +@@ -27,12 +31,12 @@ jobs: + with: + keeper-secret-config: ${{ secrets.KSM_ACTION_TEST_CONFIG }} + secrets: | +- b7K1o8Fwoot8bryzH6pZJg/field/login > username +- b7K1o8Fwoot8bryzH6pZJg/field/password > password +- b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > ./ch1.txt +- b7K1o8Fwoot8bryzH6pZJg/field/login > env:USERNAME +- b7K1o8Fwoot8bryzH6pZJg/field/password > env:PASSWORD +- b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > file:./ch1.txt ++ ${{ env.TEST_RECORD_UID }}/field/login > username ++ ${{ env.TEST_RECORD_UID }}/field/password > password ++ ${{ env.TEST_RECORD_UID }}/file/file.txt > ./ch1.txt ++ ${{ env.TEST_RECORD_UID }}/field/login > env:USERNAME ++ ${{ env.TEST_RECORD_UID }}/field/password > env:PASSWORD ++ ${{ env.TEST_RECORD_UID }}/file/file.txt > file:./ch1.txt + - name: Print secrets + run: | + username="${{ steps.ksm.outputs.username }}" +@@ -47,12 +51,12 @@ jobs: + with: + keeper-secret-config: ${{ secrets.KSM_ACTION_TEST_CONFIG }} + secrets: | +- b7K1o8Fwoot8bryzH6pZJg/field/login > username2 +- b7K1o8Fwoot8bryzH6pZJg/field/password > password2 +- b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > ./ch12.txt +- b7K1o8Fwoot8bryzH6pZJg/field/login > env:USERNAME2 +- b7K1o8Fwoot8bryzH6pZJg/field/password > env:PASSWORD2 +- b7K1o8Fwoot8bryzH6pZJg/file/ch.txt > file:./ch12.txt ++ ${{ env.TEST_RECORD_UID }}/field/login > username2 ++ ${{ env.TEST_RECORD_UID }}/field/password > password2 ++ ${{ env.TEST_RECORD_UID }}/file/file.txt > ./ch12.txt ++ ${{ env.TEST_RECORD_UID }}/field/login > env:USERNAME2 ++ ${{ env.TEST_RECORD_UID }}/field/password > env:PASSWORD2 ++ ${{ env.TEST_RECORD_UID }}/file/file.txt > file:./ch12.txt + - name: Print secrets2 + run: | + username="${{ steps.ksm2.outputs.username2 }}" \ No newline at end of file