Commit Graph

53 Commits

Author SHA1 Message Date
Volodymyr Zotov
b10aa9ed81 Fix tests 2025-08-14 11:39:57 -05:00
Volodymyr Zotov
2fa8a509ca Point to the latest main for acceptance tests 2025-08-13 16:08:37 -05:00
Volodymyr Zotov
40b6ef7b57 Remove verify cli version step from a job to reduce complexity.
This should be properly tested in op-cli-installer package. Current test will confirm that secrets are loaded correctly.
2025-08-08 19:28:20 -05:00
Volodymyr Zotov
c0724d8845 Add more tests to check that action works correctly with provided stable or beta version 2025-08-05 11:45:36 -05:00
Eddy Filip
39cf694bee Reference the reusable workflow from main
This is a safer approach since the main branch is protected. Therefore any chages to the reusable workflow will be intentional.
2025-03-05 10:25:55 +01:00
Eddy Filip
39b7248332 Add checking out from forked head 2025-03-05 10:25:52 +01:00
Eddy Filip
7d16183347 Add fork workflow for acceptance tests
This file contains the same acceptance test jobs with the following differences:
- They only run if the `ok-to-test` command triggered the workflow and a sha has been passed.
- They checkout from the external contributor's commit.

Lastly, this workflow contains an extra job which updates the status in the PR based on the jobs executed. The result of a job is the parent result of all the matrix variants executed as part of it.
2025-03-04 11:01:13 +01:00
Eddy Filip
0cbceff209 Add ok-to-test command
This command will trigger an end-to-end workflow with the external contributor's code.
2025-03-04 11:01:09 +01:00
Eddy Filip
fec5c39dcc Add condition to run tests only on maintainer's branches 2025-03-04 11:01:06 +01:00
Eduard Filip
a525a84c53 Refactor acceptance tests (#99)
This workflow is the acceptance tests executed based on the following inputs:
- secret references
- whether the secrets are provided as a step output or environment variables.
2025-03-03 14:49:37 +01:00
Eduard Filip
6483669c68 Fix workflow branch syntax (#90)
In a previous PR we used `branch` syntax to trigger the pipeline when a push on `main` was made. This was a mistake and `branches` is the correct syntax that achieves this.
2024-12-18 14:35:57 +01:00
Eduard Filip
3e2909a6b2 Add lint to workflow (#88)
* Add lint in workflow

This will check for code formatting, as well as for any ES lint issues.

* Format code

run `npm run check:write`

* Run lint and fix errors

Run `npm run lint` and then fix the errors shown.
2024-12-17 11:05:12 +01:00
Eduard Filip
734cd437f8 Make workflow targets more specific (#87)
This ensures that:
- Acceptance tests ar run on Pull requests
- Lint is run on `main`
- The workflows are executed only once on PRs
2024-12-17 11:04:57 +01:00
Eduard Filip
555e0c6a63 Update bug bounty process (#86)
* Update bug bounty process

* Fix docker compose command
2024-12-12 18:14:15 +01:00
Eduard Filip
a51c02d593 Run 1Password/check-signed-commits-action for PRs (#73)
Add the 1Password/check-signed-commits-action that will leave a handy comment if a PR contains commits that are not signed.
2024-05-28 19:34:06 +02:00
Eduard Filip
cf1a288161 Remove protocol prepending (#66)
This code is no longer needed. Instead, we will enforce users to add the protocol themselves.
2024-02-21 21:19:05 +01:00
Eduard Filip
2792fede48 Migrate action to Typescript (#36)
* Make function for executing script

* Migrate auth validation

* Migrate load secret functionality

  We make use of the following in the migration:
  - `op-js` package (make direct calls to the CLI and nicely get the output of the commands)
  - `core.exportVariable` to nicely export a secret as an environment variable
  - `core.setOutput` to nicely export a secret a the step’s output.
  - `core.setSecret` to mask the value of the secret if logged on the action’s output.

  Note: `core.exportVariable` and `core.setOutput` work with multiline secrets without any additional work on our side.

  Also, we export the temporary path where the CLI is installed to make sure the `op-js` package can find it.

* Fix CLI installation process

* Fix conditional of appending protocol

  Fix conditional of appending `http://` to the Connect host.

* Update CLI version and improve script

* Use core.addPath

  This is a safer and nicer way to ensure the path to the CLI is included later in the pipeline (including this GitHub action).

* Use version from package.json

  This eliminates the duplication of version in the code

* Upgrade to Typescript 5

* Prettify test.yml

* Move constants to constants.ts

  This shows better what constants we use and they will be later used in both code and tests.

* Move 'validateAuth' to 'utils.ts'

* Add validate auth tests

* Extract functionality for extracting a secret

  This will enable us to easily test the functionality of the action regarding the extraction of secret and how it provides it to the rest of the pipeline based on user's input

* Add tests for extracting secret

* Move 'unsetPrevious' to 'utils.ts'

* Add unit test pipeline

* Add tests for 'unsetPrevious'

* Improve disabling eslint rules

  Disable the ES Lint rules only for the next line and add a comment explaining why it’s disabled.

* Improve code based on PR review feedback

  This contains code improvements that were easy to address based on PR review feedback.

* Improve CLI installation functionality

  Two key elements are improved:
  - The action will now automatically fetch the latest stable version of the CLI. There’s no longer the need to hardcode the version and manually update it.
  - The action will now perform a check if the CLI exists in the pipeline and install it if it’s not available.

* Simplify extractSecret functionality

  Eliminate the nested conditionals to have a cleaner and more readable code.

* Fix CLI version

  The curl would return the version number, but we forgot to append the `v` in the version (i.e. from 2.18.0 to v2.18.0). Now it should be fixed.

* Move loadSecrets function to utils.ts

  This is done to keep things modular and narrow down the scope and complexity of index.ts.

  `installCLI` will be kept in `index.ts` for the following reasons:
  - Moving it to utils brings complications (`import.meta.url` doesn’t work)
  - This code will be removed once the action will make use of the separate install CLI action

* Simplify code related to mocking

* Use semverToInt from op-js

  Version `0.1.9` of the `op-js` exports function `semverToInt`, therefore we no longer need to duplicate it in our code.

* Improve CLI installation script

  - Add architectures for Linux runners. Fail if the architecture is not supported.
  - Fail if the runner’s operating system is not supported.

* Change from debug messages to info

  In pre-TS GitHub Action, we’d print some messages to the output as info (e.g. authenticated as, populating variable, unsetting previous values). Therefore, we apply the same principle here since there’s useful info.

* use toHaveBeenCalled consistently in tests

  `toBeCalled` is an alias for `toHaveBeenCalled` and `toBeCalledWith` is an alias for `toHaveBeenCalledWith`. For consistency, we will use `toHaveBeenCalled` and `toHaveBeenCalledWith` consistently across our tests.

* Add warning if both configs are provided

  1Password CLI will prioritize Connect config (with `OP_CONNECT_HOST` and `OP_CONNECT_TOKEN`) over service account one (with `OP_SERVICE_ACCOUNT_TOKEN`). This shouldn’t happen, therefore we print a warning to the user if both are provided.

* Add comment about cli validation process

  The code itself seems a bit confusing, therefore we add a comment explaining how it works.

* test: assertions for loadSecrets function

* Improve loadSecrets function

  Return early if no env vars with valid secret references are found

* Update dependencies

* Upgrade action to use Node20

---------

Co-authored-by: Dustin Ruetz <dustin.ruetz@agilebits.com>
2024-02-21 17:38:38 +01:00
Dustin Ruetz
15d95ae871 style: auto-formatting fixes via Prettier 2023-05-09 14:23:45 -04:00
Eddy Filip
9bb44334eb Compress tests
Since we use matrices now for os and authentication type, we’ve optimized the yaml file to have only 3 jobs, each one making 3 separate piepeline tests (2 for service accounts, 1 for Connect)
2023-04-10 16:52:51 +02:00
Eddy Filip
1ec261f63f exclude macos runners for Connect tests 2023-04-10 16:46:08 +02:00
Eddy Filip
2e386ac304 Try an authentication matrix 2023-04-10 16:37:39 +02:00
Eddy Filip
0b706bbe43 Add os matrix for tests 2023-04-10 16:12:29 +02:00
Eddy Filip
e23df52c69 Update checkout version 2023-04-10 16:10:52 +02:00
Dustin Ruetz
ade3078eb5 Tooling improvements (#34)
* feat: update tsconfig, uninstall vercel/ncc package and use tsc to build project

* feat: install 1password/front-end-style and configure Prettier

* feat: configure ESLint and fix lint errors

* build(deps): update types/node package to latest version

* feat: configure Jest

* feat: add 'validate' script to run formatting/linting/testing/building all together

* build: rebuild the dist/index.js file

* feat: make NPM scripts more granular

* refactor: make it clearer that Prettier config is being loaded from an existing dependency

* feat: add Husky and lint-staged to run pre-commit and pre-push checks

* fix: lint-staged testing step and Jest config file

* build(deps): update types/node package to latest version

* refactor: remove findrelated test script

* fix: move tsconfig.json to root directory, reinstall vercel/ncc for building

* fix: call to run function in index.ts

* build: rebuild the dist/index.js file

* fix: replace CommonJS __dirname with an ESModule equivalent

* fix: ignore config/.husky during ShellCheck

* fix: ignore .husky directory during ShellCheck

* fix: update lint.yml config to match ShellCheck README.md

* fix: remove coveragePathIgnorePatterns option from Jest config since node_modules is already the default value

* refactor: use './' prefix to refer to folders in the current directory in tsconfig.json

* fix: handle edge case where Error constructor is modified and add comments for context

* feat: bump package.json version to 1.2.0 to match current release

* fix: update lint.yml to use ShellCheck 2.0.0 exact version

* build(deps): update types/node package to latest version

* fix: update package-lock.json version 1.2.0

* feat: remove pre-commit and pre-push NPM scripts to simplify package.json

* fix: remove empty 'Default' column from 'configure Action Inputs' table

* fix: change the default values in action.yml to strings as per YAML validation
2023-03-29 11:34:37 -04:00
Eduard Filip
0a7975f916 Ensure that the action is backwards-compatible (#25)
Some checks failed
Run acceptance tests / use-connect-without-export-env (push) Has been cancelled
Run acceptance tests / use-connect-with-export-env (push) Has been cancelled
Run acceptance tests / use-connect-with-references-with-id (push) Has been cancelled
Run acceptance tests / use-service-account-without-export-env (push) Has been cancelled
Run acceptance tests / use-service-account-with-export-env (push) Has been cancelled
Run acceptance tests / use-service-account-with-references-with-id (push) Has been cancelled
Run acceptance tests / run-on-macos-12 (push) Has been cancelled
Bring 2 changes that ensure that the GitHub Action is backwards compatible:

- Append `http://` if the prefix is not provided in the `OP_CONNECT_HOST` (this is caused by the fact that `curl` guesses the protocol if not provided (https://linux.die.net/man/1/curl), which we missed when switching to using the 1Password CLI as the backend of the action)
- Set the default of export-env to true, since that was the default behavior of the action until we added the possibility to export secrets as step's output.

Also, the documentation is adjusted to reflect these changes.
2022-12-22 12:46:28 +02:00
volodymyrZotov
e3b137e007 added macos test case 2022-08-19 14:02:58 +03:00
Eddy Filip
c53c263a7e Add service account token in env
It was accidentally removed
2022-08-16 14:05:33 +01:00
Eddy Filip
7d858c7ad5 Make dedicated tests for secret references with IDs
The item and vault IDs are changed as well.
2022-08-16 13:38:07 +01:00
volodymyrZotov
ce8b31d0b9 added more secrets to test 2022-08-15 18:21:18 +03:00
volodymyrZotov
2ac8886444 fixed multiline secret ref 2022-08-15 18:18:33 +03:00
volodymyrZotov
641b0d93ec use ids for multiline secret 2022-08-15 18:14:55 +03:00
volodymyrZotov
c27a045581 use references that has ids instead of names 2022-08-15 17:22:28 +03:00
volodymyrZotov
e9bd76c87a removed test-connect-export case 2022-08-15 14:33:00 +03:00
volodymyrZotov
8052f86fc6 added additional test cases 2022-08-11 18:32:47 +03:00
volodymyrZotov
858b6a838e added env variables to test secret section 2022-08-10 12:59:29 +03:00
volodymyrZotov
b38b493d73 rename tests 2022-08-10 11:45:24 +03:00
volodymyrZotov
bb28cdf0c6 added test case for load secrets via op cli 2022-08-10 11:44:12 +03:00
volodymyrZotov
9fdfd04a6f revert back test change 2022-08-10 10:34:38 +03:00
volodymyrZotov
b38d01591f test should fail cause not existing field provided 2022-08-10 10:33:04 +03:00
volodymyrZotov
d78889ad20 updated test.yml 2022-08-10 10:26:19 +03:00
volodymyrZotov
6c02b8909f updated configure script 2022-08-10 10:23:14 +03:00
Eddy Filip
ac12d2e3c4 Switch to node action
This is done to be able to pass loaded secrets as output. This is not available with a composite action, unless we hard-code the action's outputs, which is not a desired outcome.
2021-09-01 18:20:57 +02:00
Eddy Filip
e8da10d005 Use op cli alpha v2 2021-09-01 16:20:47 +02:00
Floris van der Grinten
8d95cf6d0d Fix item and vault loading by name 2021-06-09 12:41:01 +02:00
Floris van der Grinten
c3679bd18a Only mask concealed or note fields 2021-05-27 14:19:07 +02:00
Floris van der Grinten
860c5ff00e Remove use of undocumented API in unset mechanism 2021-05-26 14:03:52 +02:00
Floris van der Grinten
6ee4db8bcd Rename to load-secrets-action 2021-05-20 20:49:22 +02:00
Floris van der Grinten
2d364e111f Add ShellCheck workflow 2021-05-20 17:13:25 +02:00
Floris van der Grinten
4d815b6e11 Add comment in test workflow to demonstrate real-world workflow 2021-05-20 11:27:13 +02:00
Floris van der Grinten
7bbc7abc2f Add subaction to persist Connect details 2021-05-20 11:27:13 +02:00