Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor Mock and Test Setup #651

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

ronilan
Copy link
Contributor

@ronilan ronilan commented May 10, 2022

Overview

This pull request refactors the S3 mocking setup (see: #540) simplifying implementation, separates the S3 tests from the build tests, introduces test apps using alternative bucket specification (see: #576) and production/staging hosts (see: #533) and enables easy switch between mock bucket and real bucket (given status of: #613).

This pull request comes "on top" of (i.e. includes changes from) #648, #649, #650.

Change

Code

  • Refactored mock setup (e3c9772)
    • mock modules moved to lib/mock.
    • mock modules are self contained and have a signature similar to that of other modules in the package.
    • simplified http mock to remove no longer needed interface.
    • modified http mock to support path style bucket access.
    • set http mock to work with default npg-mock-bucket bucket.
  • Refactored test setup (9085b88)
    • separated s3 tests from build tests.
    • refactored fetch test and proxy-bcrypt test to work with refactored mock setup.
  • Refactored test apps and increased test coverage (4572c86)
    • set hosts of test apps to point to mock bucket.
    • added app1.1 - identical to app1 but using production and staging binary host option.
    • added app1.2 - identical to app1 but using explicit host, region, bucket options.
  • Added service script to switch test apps bucket from mock to S3 and vis versa. Removed previous one (c2c54c5)

Testing

  • "Out of the Box" (repo clone) tests will skip interaction with S3.
  • Setting the environment variable node_pre_gyp_mock_s3 to true will run them against the mock (see: repo CI).
  • To run against a real bucket:
    • unset environment variable node_pre_gyp_mock_s3.
    • set environment variables AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY.
    • run npm run bucket {name-of-your-us-east-1-bucket}
  • To switch back to mock:
    • set environment variable node_pre_gyp_mock_s3 to true.
    • run npm run bucket
  • Manually configuring regions other than us-east-1 also works but switch is more work.
  • Results of running npm run coverage differ depending on what bucket is used (real s3 or mock).

Tests

  • All tests pass in both real bucket and mock bucket setups (including node 18).

lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
@ronilan ronilan force-pushed the Refactor-Mock-and-Test-Setup branch from 46fb6aa to 0839a6a Compare June 29, 2024 02:15
lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
lib/mock/http.js Fixed Show fixed Hide fixed
@ronilan ronilan force-pushed the Refactor-Mock-and-Test-Setup branch 5 times, most recently from 4c57192 to 80b4aac Compare June 29, 2024 07:07
ronilan and others added 5 commits June 30, 2024 14:27
- mocking setup can be more easily used by automated tests and/or manually by developer.
- mock modules moved to lib/mock.
- mock modules are self contained and have a signature similar to that of other modules in the package.
- simplified http mock to remove no longer needed interface.
- modified http mock to support path style bucket access.
- set http mock to work with default npg-mock-bucket bucket.
- separated s3 tests from build tests.
- refactored fetch test and proxy-bcrypt test to work with refactored mock setup.
- set hosts of test apps to point to mock bucket.
- added app1.1 - identical to app1 but using production and staging binary host option.
- added app1.2 - identical to app1 but using explicit host, region, bucket options.
…is versa. Removed previous one.

Fix CodeQL errors.
@ronilan ronilan force-pushed the Refactor-Mock-and-Test-Setup branch from 80b4aac to 7e50d3d Compare June 30, 2024 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant