The Complaint Tracker is intended to connect complaints data across the OHS ecosystem for greater visibility into status and actions taken to address a complaint.
brew install postgresql@12
echo 'export PATH="/usr/local/opt/postgresql@12/bin:$PATH"' >> ~/.zshrc
brew services start postgresql@12
bundle install
brew install --cask chromedriver
xattr -d com.apple.quarantine $(which chromedriver)
(this is the only option if you are on Big Sur)yarn install
bundle exec rake db:create
bundle exec rake db:migrate
bundle exec rails s
Environment variables can be set in development using the dotenv gem.
Consistent but sensitive credentials should be added to config/credentials.yml.env
by using $ rails credentials:edit
Any changes to variables in .env
that should not be checked into git should be set
in .env.local
.
If you wish to override a config globally for the test
Rails environment you can set it in .env.test.local
.
However, any config that should be set on other machines should either go into .env
or be explicitely set as part
of the test.
The Complaint Tracker is utilizing the HSES Staging environment for non-production authentication. If you need an account reach out in the #ph-ohs-oneteam Slack channel for help in requesting one.
HSES Authentication can be bypassed depending on the value of RAILS_ENV
Environment | HSES Bypass |
---|---|
test | always bypassed |
development | set CT_BYPASS_AUTH environment variable to true |
ci | always bypassed |
production | never bypassed |
When bypassing auth, you may use CT_CURRENT_USER_UID
and/or CT_CURRENT_USER_NAME
to override the current user's HSES name or username.
API data will come from real APIs or the Api::FakeData depending on the value of RAILS_ENV
Environment | Connects to Real API Endpoints |
---|---|
test | when CT_USE_REAL_API_DATA environment variable is true |
development | when CT_USE_REAL_API_DATA environment variable is true |
ci | never connects to real APIs |
production | always attempts to connect to real APIs |
Documentation about the API specifications is available in docs/api_integrations.
<script>
and <style>
securityThe system's Content-Security-Policy header prevents <script>
and <style>
tags from working without further
configuration. See the CSP compliant script tag helpers ADR for
more information on setting these up successfully.
bundle exec rake spec
bundle exec rake standard
bundle exec rake bundle:audit
bundle exec rake yarn:audit
bundle exec rake brakeman
Run everything: bundle exec rake
If you are testing manually, there are a couple features built into the fake data behavior to help you imitate errors.
/complaints?error=400
: Set the error parameter for the list of complaints to see how the app displays 400, 401, 403, and 500 errors-401
, -403
, -404
, or -500
to a complaint to test these errorsIf you would like the linter to run before you commit, symlink .githooks/pre-commit
to .git/hooks/pre-commit
.
cd .git/hooks
ln -s ../../.githooks/pre-commit pre-commit
To bypass the hook in order to commit something that's not perfect yet, run one of the following:
git commit -n # --no-verify
GitHub actions are used to run all tests and scans as part of pull requests.
Security scans are also run on a scheduled basis. Weekly for static code scans, and daily for dependency scans.
GitHub Actions are used to deploy to staging after any PR is merged into main
.
Branch protection rules prevent any direct pushes to main
or PRs from being merged into main
until all tests and scans pass.
TBD
All configuration that needs to be added to the deployed application's ENV should be added to
the env:
block in manifest.yml
Items that are both public and consistent across staging and production can be set directly there.
Otherwise, they are set as a ((variable))
within manifest.yml
and the variable is defined depending on sensitivity:
env:
block of the deploy action as in this example--var
addition to the push_arguments
line on the deploy action as in this exampleConfiguration that changes from staging to production, but is public, should be added to config/deployment/stage.yml
and config/deployment/production.yml
Architectural Decision Records (ADR) are stored in doc/adr
To create a new ADR, first install ADR-tools if you don't
already have it installed.
brew install adr-tools
Then create the ADR:
adr new Title Of Architectural Decision
This will create a new, numbered ADR in the doc/adr
directory.
~This will continue to evolve as the project moves forward.~
TBD