From 77d54eb5570e83444ab6ee11efa200e9c7269709 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Mon, 17 Apr 2023 11:36:03 -0400 Subject: [PATCH 01/51] Add reset state script --- terraform/development/providers.tf | 2 +- terraform/development/reset.sh | 65 ++++++++++++++++++++++++++++++ terraform/development/run.sh | 2 +- 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100755 terraform/development/reset.sh diff --git a/terraform/development/providers.tf b/terraform/development/providers.tf index 59bb98a70..d8ae4488e 100644 --- a/terraform/development/providers.tf +++ b/terraform/development/providers.tf @@ -3,7 +3,7 @@ terraform { required_providers { cloudfoundry = { source = "cloudfoundry-community/cloudfoundry" - version = "0.50.5" + version = "0.50.7" } } } diff --git a/terraform/development/reset.sh b/terraform/development/reset.sh new file mode 100755 index 000000000..4e11c0e28 --- /dev/null +++ b/terraform/development/reset.sh @@ -0,0 +1,65 @@ +#!/usr/bin/env bash + +username=`whoami` +org="gsa-tts-benefits-studio-prototyping" + +usage=" +$0: Reset terraform state so run.sh can be run again or for a new username + +Usage: + $0 -h + $0 [-u ] + +Options: +-h: show help and exit +-u : your username. Default: $username + +Notes: +* Requires cf-cli@8 +" + +while getopts ":hu:" opt; do + case "$opt" in + u) + username=${OPTARG} + ;; + h) + echo "$usage" + exit 0 + ;; + esac +done + +read -p "Are you sure you want to import terraform state and remove existing service keys for $username (y/n)? " verify + +if [[ $verify != "y" ]]; then + exit 0 +fi + +# ensure we're in the correct directory +cd $(dirname $0) + +service_account="$username-terraform" + +if [[ ! -s "secrets.auto.tfvars" ]]; then + # create user in notify-local-dev space to create s3 buckets + ../create_service_account.sh -s notify-local-dev -u $service_account > secrets.auto.tfvars + + # grant user access to notify-staging to create a service key for SES and SNS + cg_username=`cf service-key $service_account service-account-key | tail -n +2 | jq -r '.credentials.username'` + cf set-space-role $cg_username $org notify-staging SpaceDeveloper +fi + +echo "Importing terraform state for $username" +terraform init + +key_name=$username-api-dev-key + +cf t -s notify-local-dev +terraform import -var "username=$username" module.csv_upload_bucket.cloudfoundry_service_instance.bucket $(cf service --guid $username-csv-upload-bucket) +cf delete-service-key -f $username-csv-upload-bucket $key_name +cf t -s notify-staging +cf delete-service-key -f notify-api-ses-staging $key_name +cf delete-service-key -f notify-api-sns-staging $key_name + +./run.sh -u $username diff --git a/terraform/development/run.sh b/terraform/development/run.sh index 0285d0946..c0297b2bb 100755 --- a/terraform/development/run.sh +++ b/terraform/development/run.sh @@ -8,7 +8,7 @@ $0: Create development infrastructure Usage: $0 -h - $0 [-u ] [-k] + $0 [-u ] [-k] [-d] Options: -h: show help and exit From d8c5c29d2dc2511a35bcd6140388f67fd25b2ecb Mon Sep 17 00:00:00 2001 From: Andrew Shumway Date: Mon, 17 Apr 2023 15:56:08 -0600 Subject: [PATCH 02/51] Added coverage commands to make test and dir to gitignore --- .gitignore | 2 ++ Makefile | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index ede52acef..08b0bf758 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,7 @@ pip-delete-this-directory.txt htmlcov/ .tox/ .coverage +.coverage_cache .coverage.* .cache .pytest_cache @@ -76,6 +77,7 @@ environment.sh varsfile celerybeat-schedule +celerybeat-schedule.db # CloudFoundry .cf diff --git a/Makefile b/Makefile index e6c70bc05..990327956 100644 --- a/Makefile +++ b/Makefile @@ -53,10 +53,12 @@ generate-version-file: ## Generates the app version file .PHONY: test test: export NEW_RELIC_ENVIRONMENT=test -test: ## Run tests +test: ## Run tests and create coverage report pipenv run flake8 . pipenv run isort --check-only ./app ./tests - pipenv run pytest -n4 --maxfail=10 + pipenv run coverage run -m pytest -n4 --maxfail=10 + pipenv run coverage report + pipenv run coverage html -d .coverage_cache .PHONY: freeze-requirements freeze-requirements: ## Pin all requirements including sub dependencies into requirements.txt From 1047b7079231124d520ecda9deabd7eb82afc89d Mon Sep 17 00:00:00 2001 From: Andrew Shumway Date: Tue, 18 Apr 2023 13:51:48 -0600 Subject: [PATCH 03/51] Added fail coverage threshold under 50% --- .github/workflows/checks.yml | 6 ++++-- Makefile | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 0e9535f73..c2e958f90 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -46,8 +46,10 @@ jobs: run: pipenv run flake8 . - name: Check imports alphabetized run: pipenv run isort --check-only ./app ./tests - - name: Run tests - run: pipenv run pytest -n4 --maxfail=10 + - name: Run tests with coverage + run: pipenv run coverage run --omit=*/notifications_utils/* -m pytest -n4 --maxfail=10 + - name: Check coverage threshold + run: pipenv run coverage report --fail-under=50 env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api diff --git a/Makefile b/Makefile index 990327956..625c761db 100644 --- a/Makefile +++ b/Makefile @@ -56,8 +56,8 @@ test: export NEW_RELIC_ENVIRONMENT=test test: ## Run tests and create coverage report pipenv run flake8 . pipenv run isort --check-only ./app ./tests - pipenv run coverage run -m pytest -n4 --maxfail=10 - pipenv run coverage report + pipenv run coverage run --omit=*/notifications_utils/* -m pytest -n4 --maxfail=10 + pipenv run coverage report --fail-under=50 pipenv run coverage html -d .coverage_cache .PHONY: freeze-requirements From 0ac1cd9e532b4c1b80fe8f3f4e73cd05c3abd99b Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Tue, 18 Apr 2023 16:27:51 -0400 Subject: [PATCH 04/51] First cut at an operations run book --- docs/infra-overview.md | 10 +- docs/run-book.md | 177 ++++++++++++++++++++++++++++++++ docs/toll-free-registration.png | Bin 0 -> 949332 bytes 3 files changed, 182 insertions(+), 5 deletions(-) create mode 100644 docs/run-book.md create mode 100644 docs/toll-free-registration.png diff --git a/docs/infra-overview.md b/docs/infra-overview.md index 7f366af79..636dc743e 100644 --- a/docs/infra-overview.md +++ b/docs/infra-overview.md @@ -100,6 +100,8 @@ TODO: create env vars for these origin and destination email addresses for the r #### Move SNS out of sandbox. +This should be complete for all regions U.S. Notify has been deployed to or is currently planned to be deployed to. + 1. Visit the SNS console for the region you will be sending from. Notes: 1. SNS settings are per-region, so each environment must have its own region 1. Pinpoint and SNS have confusing regional availability, so ensure both are available before submitting any requests. @@ -115,10 +117,8 @@ TODO: create env vars for these origin and destination email addresses for the r 1. Select `Toll-free registrations` and `Create registration` 1. Select the number you just created and then `Register existing toll-free number` 1. Complete and submit the form. Approval usually takes about 2 weeks. -1. Set this phone number as the `AWS_US_TOLL_FREE_NUMBER` in the environment you are creating +1. See the run book for information on how to set those numbers. -#### Current Production Phone Numbers +Example answers for toll-free registration form -* +18447952263 - in use as default number. Notify's OTP messages and trial service messages are sent from this number -* +18447891134 - to be used by Pilot Partner 1 -* +18888402596 - to be used by Pilot Partner 2 +![example answers for toll-free registration form](./toll-free-registration.png) diff --git a/docs/run-book.md b/docs/run-book.md new file mode 100644 index 000000000..12513ba13 --- /dev/null +++ b/docs/run-book.md @@ -0,0 +1,177 @@ +Run Book +======== + +Policies and Procedures needed before and during US Notify Operations + +1. [Alerts, Notifications, Monitoring](#alerts) +1. [Restaging Apps](#restaging-apps) +1. [Smoke-testing the App](#smoke-testing) +1. [Configuration Management](#cm) +1. [Known Gotchas](#gotcha) +1. [User Account Management](#ac) +1. [SMS Phone Number Management](#phone-numbers) + +## Alerts, Notifications, Monitoring + +Operational alerts are posted to the [#pb-notify-alerts](https://gsa-tts.slack.com/archives/C04U9BGHUDB) Slack channel. Please join this channel and enable push notifications for all messages whenever you are on call. + +[NewRelic](https://one.newrelic.com/) is being used for monitoring the application. + +[Cloud.gov Logging](https://logs.fr.cloud.gov/) is used to view and search application and platform logs. + +## Restaging Apps + +Our apps must be restaged whenever cloud.gov releases updates to buildpacks. Cloud.gov will send email notifications whenever buildpack updates affect a deployed app. + +Restaging the apps rebuilds them with the new buildpack, enabling us to take advantage of whatever bugfixes or security updates are present in the new buildpack. + +There are two GitHub Actions that automate this process. Each are run manually and must be run once for each environment to enable testing any changes in staging before running within demo and production environments. + +When `notify-api-`, `notify-admin-`, `egress-proxy-notify-api-`, and/or `egress-proxy-notify-admin-` need to be restaged: + +1. Navigate to [the Restage apps GitHub Action](https://github.com/GSA/notifications-api/actions/workflows/restage-apps.yml) +1. Click the `Run workflow` button to open a popup +1. Leave `Use workflow from` on it's default of `Branch: main` +1. Select the environment you need to restage from the dropdown +1. Click `Run workflow` within the popup +1. Repeat for other environments + +When `ssb-sms`, and/or `ssb-smtp` need to be restaged: + +1. Navigate to the [SSB Restage apps GitHub Action](https://github.com/GSA/usnotify-ssb/actions/workflows/restage-apps.yml) +1. Click the `Run workflow` button to open a popup +1. Leave `Use workflow from` on it's default of `Branch: main` +1. Select the environment (either `staging` or `production`) you need to restage from the dropdown +1. Click `Run workflow` within the popup +1. Repeat for other environments + +When `ssb-devel-sms` and/or `ssb-devel-smtp` need to be restaged: + +1. Navigate to the [SSB Restage apps GitHub Action](https://github.com/GSA/usnotify-ssb/actions/workflows/restage-apps.yml) +1. Click the `Run workflow` button to open a popup +1. Leave `Use workflow from` on it's default of `Branch: main` +1. Select the `development` environment from the dropdown +1. Click `Run workflow` within the popup + + +## Smoke-testing the App + +To ensure that notifications are passing through the application properly, the following steps can be taken to ensure all parts are operating correctly: + +1. Send yourself a password reset email. This will verify SES integration. The email can be deleted once received if you don't wish to change your password. +1. Log into the app. This will verify SNS integration for a one-off message. +1. Upload a CSV and schedule send for the soonest time after "Now". This will verify S3 connections as well as scheduler and worker processes are running properly. + +## Configuration Management + +Also known as: **How to move code from my machine to production** + +### Common Policies and Procedures + +1. All changes must be made in a feature branch and opened as a PR targetting the `main` branch. +1. All PRs must be approved by another developer +1. PRs to `main` and `production` branches must be merged by a someone with the `Administrator` role. +1. PR documentation includes a Security Impact Analysis +1. PRs that will impact the Security Posture must be approved by the US Notify ISSO. +1. Any PRs waiting for approval should be talked about during daily Standup meetings. + +### notifications-api & notifications-admin + +1. Changes are deployed to the `staging` environment after a successful `checks.yml` run on `main` branch. Branch Protections prevent pushing directly to `main` +1. Changes are deployed to the `demo` _and_ `production` environments after merging `main` into `production`. Branch Protections prevent pushing directly to `production` + +### usnotify-ssb + +1. Changes are deployed to `staging` and `production` environments after merging to the `main` branch. The `staging` deployment must be successful before `production` is attempted. Branch Protections prevent pushing directly to `main` + +### ttsnotify-brokerpak-sms + +1. A new release is created by pushing a tag to the repository on the `main` branch. +1. To include the new version in released SSB code, create a PR in the `usnotify-ssb` repo updating the version in use in `app-setup-sms.sh` + +### datagov-brokerpak-smtp + +1. To include new verisons of the SMTP borkerpak in released SSB code, create a PR in the `usnotify-ssb` repo updating the version in use in `app-setup-smtp.sh` + +### Vulnerability Mitigation Changes + +US_Notify Administrators are responsible for ensuring that remediations for vulnerabilities are implemented. Response times vary based on the level of vulnerability as follows: + +* Critical (Very High) - 15 days +* High - 30 days +* Medium - 90 days +* Low - 180 days +* Informational - 365 days (depending on the analysis of the issue) + +## Known Gotchas + +### SSB Service Bindings are failing + +
+
Problem:
+
Creating or deleting service keys is failing. SSB Logs reference failing to verify certificate/certificate valid for GUID A but not for GUID B
+
Solution:
+
Restage SSB apps using the restage apps action +
+ +### SNS Topic Subscriptions Don't Succeed + +
+
Problem:
+
When deploying a new environment, a race condition prevents SNS topic subscriptions from being successfully verified on the AWS side
+
Solution:
+
Manually re-request subscription confirmation from the AWS Console.
+
+ +## User Account Management + +Important policies: + +* Infrastructure Accounts and Application Platform Administrators must be approved by the System Owner (Amy) before creation, but people with `Administrator` role can actually do the creation and role assignments. +* At least one agency partner must act as the `User Manager` for their service, with permissions to manage their team according to their agency's policies and procedures. +* All users must utilize `.gov` email addresses. +* Users who leave the team or otherwise have role changes must have their accounts updated to reflect the new roles required (or disabled) within 14 days. +* SpaceDeployer credentials must be rotated within 14 days of anyone with SpaceDeveloper cloud.gov access leaving the team. + +### Types of Infrastructure Users + +| Role Name | System | Permissions | Who | Responsibilities | +| --------- | ------ | ----------- | --- | ---------------- | +| Administrator | GitHub | Admin | PBS Fed | Approve & Merge PRs into main and production | +| Administrator | AWS | `NotifyAdministrators` IAM UserGroup | PBS Fed | Read audit logs, verify & fix any AWS service issues within Production AWS account | +| Administrator | Cloud.gov | `OrgManager` | PBS Fed | Manage cloud.gov roles and permissions. Access to production spaces | +| DevOps Engineer | Cloud.gov | `SpaceManager` | PBS Fed or Contractor | Access to non-production spaces | +| DevOps Engineer | AWS | `NotifyAdministrators` IAM UserGroup | PBS Fed or Contractor | Access to non-production AWS accounts to verify & fix any AWS issues in the lower environments | +| Engineer | GitHub | Write | PBS Fed or Contractor | Write code & issues, submit PRs | + +### Types of Application Users + +| Role Name | Permissions | Who | Responsibilities | +| --------- | ----------- | --- | ---------------- | +| Platform Administrator | `platform_admin` | PBS Fed | Administer system settings within US Notify across Services | +| User Manager | `MANAGE_USERS` | Agency Partner | Manage service team members | +| User | any except `MANAGE_USERS` | Agency Partner | Use US Notify | + +### Service Accounts + +| Role Name | System | Permissions | Notes | +| --------- | ------ | ----------- | ----- | +| Cloud.gov Service Account | Cloud.gov | `OrgManager` and `SpaceDeveloper` | Creds stored in GitHub Environment secrets within api and admin app repos | +| SSB Deployment Account | AWS | `IAMFulLAccess` | Creds stored in GitHub Environment secrets within usnotify-ssb repo | +| SSB Cloud.gov Service Account | Cloud.gov | `SpaceDeveloper` | Creds stored in GitHub Environment secrets within usnotify-ssb repo | +| SSB AWS Accounts | AWS | `sms_broker` or `smtp_broker` IAM role | Creds created and maintained by usnotify-ssb terraform | + +## SMS Phone Number Management + +See [Infrastructure Overview](./infra-overview.md#request-new-phone-numbers) for information about SMS phone numbers in AWS. + +Once you have a number, it must be set in the app in one of two ways: + +* For the default phone number, to be used by Notify itself for OTP codes and the default from number for services, set the phone number as the `AWS_US_TOLL_FREE_NUMBER` ENV variable in the environment you are creating +* For service-specific phone numbers, set the phone number in the Service's `Text message senders` in the settings tab. + +### Current Production Phone Numbers + +* +18447952263 - in use as default number. Notify's OTP messages and trial service messages are sent from this number +* +18447891134 - to be used by Pilot Partner 1 +* +18888402596 - to be used by Pilot Partner 2 diff --git a/docs/toll-free-registration.png b/docs/toll-free-registration.png new file mode 100644 index 0000000000000000000000000000000000000000..bca4c27b2358568ae693be0b7371965abc63e00e GIT binary patch literal 949332 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%0AHWSzb#bt&BT!)tpENF8&8v8 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

6j9TguT4Ij< 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

bFqNMP(?z9$rS2uvkD9u&RO!{%1E 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 F{{l}A6|n#S literal 0 HcmV?d00001 From 17c6083f6d91319a9136b7d9937cf5ab98de6396 Mon Sep 17 00:00:00 2001 From: Andrew Shumway Date: Tue, 18 Apr 2023 14:27:56 -0600 Subject: [PATCH 05/51] Check coverage in actions without omit --- .github/workflows/checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index c2e958f90..7f8d15c8c 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -47,7 +47,7 @@ jobs: - name: Check imports alphabetized run: pipenv run isort --check-only ./app ./tests - name: Run tests with coverage - run: pipenv run coverage run --omit=*/notifications_utils/* -m pytest -n4 --maxfail=10 + run: pipenv run coverage run -m pytest -n4 --maxfail=10 - name: Check coverage threshold run: pipenv run coverage report --fail-under=50 env: From cbcb955f1f294a8371a180866e6d8409b0d008ce Mon Sep 17 00:00:00 2001 From: Andrew Shumway Date: Tue, 18 Apr 2023 15:48:10 -0600 Subject: [PATCH 06/51] Moved env: flag under test run --- .github/workflows/checks.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 7f8d15c8c..261d16a61 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -47,11 +47,11 @@ jobs: - name: Check imports alphabetized run: pipenv run isort --check-only ./app ./tests - name: Run tests with coverage - run: pipenv run coverage run -m pytest -n4 --maxfail=10 - - name: Check coverage threshold - run: pipenv run coverage report --fail-under=50 + run: pipenv run coverage run --omit=*/notifications_utils/* -m pytest -n4 --maxfail=10 env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api + - name: Check coverage threshold + run: pipenv run coverage report --fail-under=50 validate-new-relic-config: runs-on: ubuntu-latest From db62e318ca4b6300b2d239c49b4e69eeff9040f9 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Wed, 19 Apr 2023 09:27:16 -0400 Subject: [PATCH 07/51] Address moderate and low owasp findings * CORS headers removed because browsers should not interact with API directly * Updated error handling to return expected content-type for JSON error messages --- app/__init__.py | 24 ++++++++++++++++++------ docs/testing.md | 2 +- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index 20d93c37c..5d863d312 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -290,9 +290,7 @@ def init_app(app): def after_request(response): CONCURRENT_REQUESTS.dec() - response.headers.add('Access-Control-Allow-Origin', '*') - response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization') - response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE') + response.headers.add('X-Content-Type-Options', 'nosniff') return response @app.errorhandler(Exception) @@ -301,20 +299,34 @@ def init_app(app): # error.code is set for our exception types. msg = getattr(error, 'message', str(error)) code = getattr(error, 'code', 500) - return jsonify(result='error', message=msg), code + response = make_response( + jsonify(result='error', message=msg), + code, + error.get_headers() + ) + response.content_type = "application/json" + return response @app.errorhandler(WerkzeugHTTPException) def werkzeug_exception(e): - return make_response( + response = make_response( jsonify(result='error', message=e.description), e.code, e.get_headers() ) + response.content_type = 'application/json' + return response @app.errorhandler(404) def page_not_found(e): msg = e.description or "Not found" - return jsonify(result='error', message=msg), 404 + response = make_response( + jsonify(result='error', message=msg), + 404, + e.get_headers() + ) + response.content_type = 'application/json' + return response def create_uuid(): diff --git a/docs/testing.md b/docs/testing.md index f4b1f5e93..40012b245 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -56,5 +56,5 @@ docker run -v $(pwd):/zap/wrk/:rw --network="notify-network" -t owasp/zap2docker The equivalent command if you are running the API locally: ``` -docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-weekly zap-api-scan.py -t http://host.docker.internal:6011/docs/openapi.yml -f openapi -c zap.conf +docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-weekly zap-api-scan.py -t http://host.docker.internal:6011/docs/openapi.yml -f openapi -c zap.conf -r report.html ``` From 7e4043f85a58ed67303e3a03cb82742278665bfe Mon Sep 17 00:00:00 2001 From: Andrew Shumway Date: Wed, 19 Apr 2023 08:56:34 -0600 Subject: [PATCH 08/51] Test github actions coverage PR fail --- .github/workflows/checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 261d16a61..b71608a57 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -51,7 +51,7 @@ jobs: env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api - name: Check coverage threshold - run: pipenv run coverage report --fail-under=50 + run: pipenv run coverage report --fail-under=60 validate-new-relic-config: runs-on: ubuntu-latest From b623caa366c13ef0d96c0e530f964a7dc4073d82 Mon Sep 17 00:00:00 2001 From: Andrew Shumway Date: Wed, 19 Apr 2023 09:20:22 -0600 Subject: [PATCH 09/51] Test actions with 50% threshold --- .github/workflows/checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index b71608a57..261d16a61 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -51,7 +51,7 @@ jobs: env: SQLALCHEMY_DATABASE_TEST_URI: postgresql://user:password@localhost:5432/test_notification_api - name: Check coverage threshold - run: pipenv run coverage report --fail-under=60 + run: pipenv run coverage report --fail-under=50 validate-new-relic-config: runs-on: ubuntu-latest From 26cc90e1f2a0ede359266477e3e4973c0023362f Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Fri, 21 Apr 2023 11:57:42 -0400 Subject: [PATCH 10/51] Deploy bundled proxy instead of building it each time --- .github/actions/deploy-proxy/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/deploy-proxy/action.yml b/.github/actions/deploy-proxy/action.yml index ff9d1cbe8..13bdc494f 100644 --- a/.github/actions/deploy-proxy/action.yml +++ b/.github/actions/deploy-proxy/action.yml @@ -36,7 +36,7 @@ runs: - name: Copy config files shell: bash run: cp ./deploy-config/egress_proxy/${{ inputs.app }}.*.acl ${{ steps.create-temp-dir.outputs.path }} - - name: Build and deploy proxy + - name: Deploy proxy shell: bash working-directory: ${{ steps.create-temp-dir.outputs.path }} - run: make && ./bin/cf-deployproxy -a ${{ inputs.app }} -p egress-proxy -e egress_proxy + run: ./bin/cf-deployproxy -a ${{ inputs.app }} -p egress-proxy -e egress_proxy From 001954538e1a5449f56dec6137d28bb27bc50484 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 25 Apr 2023 07:50:56 -0700 Subject: [PATCH 11/51] notify-243 remove statsd --- Makefile | 2 +- Pipfile | 3 +- Pipfile.lock | 347 +++++++++--------- app/__init__.py | 8 +- app/celery/nightly_tasks.py | 3 +- app/celery/process_ses_receipts_tasks.py | 7 +- app/clients/email/aws_ses.py | 8 +- app/clients/email/aws_ses_stub.py | 6 +- app/clients/sms/aws_sns.py | 8 +- app/commands.py | 2 - app/config.py | 3 - app/delivery/send_to_providers.py | 28 +- sample.env | 1 - statsd_mapping.yml | 11 - .../celery/test_process_ses_receipts_tasks.py | 8 +- tests/app/clients/test_aws_ses.py | 8 - tests/app/clients/test_aws_sns.py | 2 - tests/app/clients/test_sms.py | 3 +- tests/app/v2/test_errors.py | 2 - 19 files changed, 178 insertions(+), 282 deletions(-) delete mode 100644 statsd_mapping.yml diff --git a/Makefile b/Makefile index 625c761db..02cd34162 100644 --- a/Makefile +++ b/Makefile @@ -56,7 +56,7 @@ test: export NEW_RELIC_ENVIRONMENT=test test: ## Run tests and create coverage report pipenv run flake8 . pipenv run isort --check-only ./app ./tests - pipenv run coverage run --omit=*/notifications_utils/* -m pytest -n4 --maxfail=10 + pipenv run coverage run --omit=*/notifications_utils/* -m pytest --maxfail=10 pipenv run coverage report --fail-under=50 pipenv run coverage html -d .coverage_cache diff --git a/Pipfile b/Pipfile index b896c7240..7490293e9 100644 --- a/Pipfile +++ b/Pipfile @@ -59,7 +59,8 @@ werkzeug = "~=2.2" prometheus-client = "==0.14.1" gds-metrics = {version = "==0.2.4", ref = "6f1840a57b6fb1ee40b7e84f2f18ec229de8aa72", git = "https://github.com/alphagov/gds_metrics_python.git"} packaging = "==21.3" -notifications-utils = {editable = true, ref = "main", git = "https://github.com/GSA/notifications-utils.git"} +# TODO revert to main +notifications-utils = {editable = true, ref = "notify-243", git = "https://github.com/GSA/notifications-utils.git"} newrelic = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 9b8b628f9..abe85e280 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "56817ca82b5c531caab713deb89868f0fc1330f0b2f3f7bd123a47963388f5cc" + "sha256": "f99ef7d5dbcae426e1dc5512454ea13d352b3259524b144c55bf2ae135102215" }, "pipfile-spec": 6, "requires": { @@ -277,28 +277,28 @@ }, "cryptography": { "hashes": [ - "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405", - "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356", - "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472", - "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41", - "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a", - "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88", - "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554", - "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db", - "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778", - "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c", - "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917", - "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797", - "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160", - "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c", - "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c", - "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2", - "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4", - "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122", - "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94" + "sha256:05dc219433b14046c476f6f09d7636b92a1c3e5808b9a6536adf4932b3b2c440", + "sha256:0dcca15d3a19a66e63662dc8d30f8036b07be851a8680eda92d079868f106288", + "sha256:142bae539ef28a1c76794cca7f49729e7c54423f615cfd9b0b1fa90ebe53244b", + "sha256:3daf9b114213f8ba460b829a02896789751626a2a4e7a43a28ee77c04b5e4958", + "sha256:48f388d0d153350f378c7f7b41497a54ff1513c816bcbbcafe5b829e59b9ce5b", + "sha256:4df2af28d7bedc84fe45bd49bc35d710aede676e2a4cb7fc6d103a2adc8afe4d", + "sha256:4f01c9863da784558165f5d4d916093737a75203a5c5286fde60e503e4276c7a", + "sha256:7a38250f433cd41df7fcb763caa3ee9362777fdb4dc642b9a349721d2bf47404", + "sha256:8f79b5ff5ad9d3218afb1e7e20ea74da5f76943ee5edb7f76e56ec5161ec782b", + "sha256:956ba8701b4ffe91ba59665ed170a2ebbdc6fc0e40de5f6059195d9f2b33ca0e", + "sha256:a04386fb7bc85fab9cd51b6308633a3c271e3d0d3eae917eebab2fac6219b6d2", + "sha256:a95f4802d49faa6a674242e25bfeea6fc2acd915b5e5e29ac90a32b1139cae1c", + "sha256:adc0d980fd2760c9e5de537c28935cc32b9353baaf28e0814df417619c6c8c3b", + "sha256:aecbb1592b0188e030cb01f82d12556cf72e218280f621deed7d806afd2113f9", + "sha256:b12794f01d4cacfbd3177b9042198f3af1c856eedd0a98f10f141385c809a14b", + "sha256:c0764e72b36a3dc065c155e5b22f93df465da9c39af65516fe04ed3c68c92636", + "sha256:c33c0d32b8594fa647d2e01dbccc303478e16fdd7cf98652d5b3ed11aa5e5c99", + "sha256:cbaba590180cba88cb99a5f76f90808a624f18b169b90a4abb40c1fd8c19420e", + "sha256:d5a1bd0e9e2031465761dfa920c16b0065ad77321d8a8c1f5ee331021fda65e9" ], "markers": "python_version >= '3.6'", - "version": "==40.0.1" + "version": "==40.0.2" }, "defusedxml": { "hashes": [ @@ -503,11 +503,11 @@ }, "importlib-metadata": { "hashes": [ - "sha256:43ce9281e097583d758c2c708c4376371261a02c34682491a8e98352365aad20", - "sha256:ff80f3b5394912eb1b108fcfd444dc78b7f1f3e16b16188054bd01cb9cb86f09" + "sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed", + "sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705" ], "markers": "python_version < '3.10'", - "version": "==6.1.0" + "version": "==6.6.0" }, "iso8601": { "hashes": [ @@ -739,24 +739,24 @@ }, "newrelic": { "hashes": [ - "sha256:15d3088d9ab4d708e7b3826e651c2402f2cb9c72689e47a0badc8281ab20bfe9", - "sha256:2249a25b1ce967267604cb0ce3268256fb25da481312f3c7b04df90245708131", - "sha256:2fc9807a1e3277e1dbddb7cd84e00b1f70faea602f0bbe53109e0e68b0c20e3c", - "sha256:432a6fa9c0051154f4110f4203831f464c8ba5bc842e709639391175d4ba50e6", - "sha256:4f48e481ebb7d873fd16a7fe0df30383c834e75daa6b0b514e147b8d683d922d", - "sha256:69a7ed5788fb6347e96f7df18a641ea242d5dac7ccb76bbaa869851cade335c4", - "sha256:6fc4169f66e80f4b497d16be3759feaf5be08ec389b8f42b8b62ce632de9eb3f", - "sha256:95484f2ca36952831b47e3b054e808317a0a12597ca9ef5166789a425545de44", - "sha256:b5c53a5922c92d742eff37da87c113a18762cd06e310bfc430df02603298def9", - "sha256:d02acde140c6d4f549f36a2bda64025a18efc5b6457c8fa505146c7bcaaac23b", - "sha256:d39f6f3ffc458337e22ef4d4e7bacf5b0b2712feb7668538299d029bc87f9b7a", - "sha256:d7b510f3889fe57330bb85de78abcac2d0711b49e9da74fcd1b936a57b139238", - "sha256:eb3a27fd7b9d51941fb20c452aa3b3b2dd52fe652cda2d5d269dcc14f64ade6e", - "sha256:ec8d38d9f7c30c464cddd594cb390cf66a2b573d08e09ac231d3d349a26e0f96", - "sha256:f79a599b53894870dfdfcd88fa7ca7e81cac77f4a253ca0c08c58f400bb0a5ab" + "sha256:1bc307d06e2033637e7b484af22f540ca041fb23a54b311bcd5968ca1a64e4ef", + "sha256:435ac9e3791f78e05c9da8107a6ef49c13e62ac302696858fa2411198fe201ff", + "sha256:6662ec79493f23f9d0995a015177c87508bea4c541f7c9f17a61b503b82e1367", + "sha256:67902b3c53fa497dba887068166261d114ac2347c8a4908d735d7594cca163dc", + "sha256:6b4db0e7544232d4e6e835a02ee28637970576f8dce82ffcaa3d675246e822d5", + "sha256:796ed5ff44b04b41e051dc0112e5016e53a37e39e95023c45ff7ecd34c254a7d", + "sha256:84d1f71284efa5f1cae696161e0c3cb65eaa2f53116fe5e7c5a62be7d15d9536", + "sha256:9355f209ba8d82fd0f9d78d7cc1d9bef0ae4677b3cfed7b7aaec521adbe87559", + "sha256:9c0d5153b7363d5cb5cac7f8d1a4e03669b074afee2dda201851a67c7bed1e32", + "sha256:bcd3219e1e816a0fdb51ac993cac6744e6a835c13ee72e21d86bcbc2d16628ce", + "sha256:c4a0556c6ece49132ab1c32bfe398047a8311f9a8b6862b482495d132fcb0ad4", + "sha256:caccdf201735df80b470ddf772f60a154f2c07c0c1b2b3f6e999d55e79ce601e", + "sha256:d21af16cee1e0caf4c73c4c1b2d7ba9f33fe6a870d93135dc8b23ac592f49b38", + "sha256:da8f2dc31e182768fe314d8ceb6f42acd09956708846f8ae71f07f044a3aa05e", + "sha256:ef9c178329f8c04f0574908c1f04ff1f18b9eba55b869744583fee3eac48e571" ], "index": "pypi", - "version": "==8.7.1" + "version": "==8.8.0" }, "notifications-python-client": { "hashes": [ @@ -768,41 +768,41 @@ "notifications-utils": { "editable": true, "git": "https://github.com/GSA/notifications-utils.git", - "ref": "44127eac47d0825d083e51d5a2580a520ea2ee49" + "ref": "689792bf2fb29905374c117a5a2c562754ac131a" }, "numpy": { "hashes": [ - "sha256:003a9f530e880cb2cd177cba1af7220b9aa42def9c4afc2a2fc3ee6be7eb2b22", - "sha256:150947adbdfeceec4e5926d956a06865c1c690f2fd902efede4ca6fe2e657c3f", - "sha256:2620e8592136e073bd12ee4536149380695fbe9ebeae845b81237f986479ffc9", - "sha256:2eabd64ddb96a1239791da78fa5f4e1693ae2dadc82a76bc76a14cbb2b966e96", - "sha256:4173bde9fa2a005c2c6e2ea8ac1618e2ed2c1c6ec8a7657237854d42094123a0", - "sha256:4199e7cfc307a778f72d293372736223e39ec9ac096ff0a2e64853b866a8e18a", - "sha256:4cecaed30dc14123020f77b03601559fff3e6cd0c048f8b5289f4eeabb0eb281", - "sha256:557d42778a6869c2162deb40ad82612645e21d79e11c1dc62c6e82a2220ffb04", - "sha256:63e45511ee4d9d976637d11e6c9864eae50e12dc9598f531c035265991910468", - "sha256:6524630f71631be2dabe0c541e7675db82651eb998496bbe16bc4f77f0772253", - "sha256:76807b4063f0002c8532cfeac47a3068a69561e9c8715efdad3c642eb27c0756", - "sha256:7de8fdde0003f4294655aa5d5f0a89c26b9f22c0a58790c38fae1ed392d44a5a", - "sha256:889b2cc88b837d86eda1b17008ebeb679d82875022200c6e8e4ce6cf549b7acb", - "sha256:92011118955724465fb6853def593cf397b4a1367495e0b59a7e69d40c4eb71d", - "sha256:97cf27e51fa078078c649a51d7ade3c92d9e709ba2bfb97493007103c741f1d0", - "sha256:9a23f8440561a633204a67fb44617ce2a299beecf3295f0d13c495518908e910", - "sha256:a51725a815a6188c662fb66fb32077709a9ca38053f0274640293a14fdd22978", - "sha256:a77d3e1163a7770164404607b7ba3967fb49b24782a6ef85d9b5f54126cc39e5", - "sha256:adbdce121896fd3a17a77ab0b0b5eedf05a9834a18699db6829a64e1dfccca7f", - "sha256:c29e6bd0ec49a44d7690ecb623a8eac5ab8a923bce0bea6293953992edf3a76a", - "sha256:c72a6b2f4af1adfe193f7beb91ddf708ff867a3f977ef2ec53c0ffb8283ab9f5", - "sha256:d0a2db9d20117bf523dde15858398e7c0858aadca7c0f088ac0d6edd360e9ad2", - "sha256:e3ab5d32784e843fc0dd3ab6dcafc67ef806e6b6828dc6af2f689be0eb4d781d", - "sha256:e428c4fbfa085f947b536706a2fc349245d7baa8334f0c5723c56a10595f9b95", - "sha256:e8d2859428712785e8a8b7d2b3ef0a1d1565892367b32f915c4a4df44d0e64f5", - "sha256:eef70b4fc1e872ebddc38cddacc87c19a3709c0e3e5d20bf3954c147b1dd941d", - "sha256:f64bb98ac59b3ea3bf74b02f13836eb2e24e48e0ab0145bbda646295769bd780", - "sha256:f9006288bcf4895917d02583cf3411f98631275bc67cce355a7f39f8c14338fa" + "sha256:0ec87a7084caa559c36e0a2309e4ecb1baa03b687201d0a847c8b0ed476a7187", + "sha256:1a7d6acc2e7524c9955e5c903160aa4ea083736fde7e91276b0e5d98e6332812", + "sha256:202de8f38fc4a45a3eea4b63e2f376e5f2dc64ef0fa692838e31a808520efaf7", + "sha256:210461d87fb02a84ef243cac5e814aad2b7f4be953b32cb53327bb49fd77fbb4", + "sha256:2d926b52ba1367f9acb76b0df6ed21f0b16a1ad87c6720a1121674e5cf63e2b6", + "sha256:352ee00c7f8387b44d19f4cada524586f07379c0d49270f87233983bc5087ca0", + "sha256:35400e6a8d102fd07c71ed7dcadd9eb62ee9a6e84ec159bd48c28235bbb0f8e4", + "sha256:3c1104d3c036fb81ab923f507536daedc718d0ad5a8707c6061cdfd6d184e570", + "sha256:4719d5aefb5189f50887773699eaf94e7d1e02bf36c1a9d353d9f46703758ca4", + "sha256:4749e053a29364d3452c034827102ee100986903263e89884922ef01a0a6fd2f", + "sha256:5342cf6aad47943286afa6f1609cad9b4266a05e7f2ec408e2cf7aea7ff69d80", + "sha256:56e48aec79ae238f6e4395886b5eaed058abb7231fb3361ddd7bfdf4eed54289", + "sha256:76e3f4e85fc5d4fd311f6e9b794d0c00e7002ec122be271f2019d63376f1d385", + "sha256:7776ea65423ca6a15255ba1872d82d207bd1e09f6d0894ee4a64678dd2204078", + "sha256:784c6da1a07818491b0ffd63c6bbe5a33deaa0e25a20e1b3ea20cf0e43f8046c", + "sha256:8535303847b89aa6b0f00aa1dc62867b5a32923e4d1681a35b5eef2d9591a463", + "sha256:9a7721ec204d3a237225db3e194c25268faf92e19338a35f3a224469cb6039a3", + "sha256:a1d3c026f57ceaad42f8231305d4653d5f05dc6332a730ae5c0bea3513de0950", + "sha256:ab344f1bf21f140adab8e47fdbc7c35a477dc01408791f8ba00d018dd0bc5155", + "sha256:ab5f23af8c16022663a652d3b25dcdc272ac3f83c3af4c02eb8b824e6b3ab9d7", + "sha256:ae8d0be48d1b6ed82588934aaaa179875e7dc4f3d84da18d7eae6eb3f06c242c", + "sha256:c91c4afd8abc3908e00a44b2672718905b8611503f7ff87390cc0ac3423fb096", + "sha256:d5036197ecae68d7f491fcdb4df90082b0d4960ca6599ba2659957aafced7c17", + "sha256:d6cc757de514c00b24ae8cf5c876af2a7c3df189028d68c0cb4eaa9cd5afc2bf", + "sha256:d933fabd8f6a319e8530d0de4fcc2e6a61917e0b0c271fded460032db42a0fe4", + "sha256:ea8282b9bcfe2b5e7d491d0bf7f3e2da29700cec05b49e64d6246923329f2b02", + "sha256:ecde0f8adef7dfdec993fd54b0f78183051b6580f606111a6d789cd14c61ea0c", + "sha256:f21c442fdd2805e91799fbe044a7b999b8571bb0ab0f7850d0cb9641a687092b" ], "markers": "python_version >= '3.8'", - "version": "==1.24.2" + "version": "==1.24.3" }, "orderedset": { "hashes": [ @@ -828,10 +828,10 @@ }, "phonenumbers": { "hashes": [ - "sha256:1b7c75c4a5e62885a0be0a6b073b7e3f4ce6672fd42ab7b4a6b46359c40591d0", - "sha256:4ba92a917fb8f6e3fe33fd04b9d84299852ce237289129ee4eda47a043a5c6c4" + "sha256:421b69fd6d6650372000a6c47ab5b5c5d7b438b33f7b317739e728eff1ec1886", + "sha256:fe071b8324473e72a54b52e602d059c15b999ec9900fff9e42c01b422aeca662" ], - "version": "==8.13.8" + "version": "==8.13.10" }, "prometheus-client": { "hashes": [ @@ -916,21 +916,11 @@ }, "pyasn1": { "hashes": [ - "sha256:014c0e9976956a08139dc0712ae195324a75e142284d5f87f1a87ee1b068a359", - "sha256:03840c999ba71680a131cfaee6fab142e1ed9bbd9c693e285cc6aca0d555e576", - "sha256:0458773cfe65b153891ac249bcf1b5f8f320b7c2ce462151f8fa74de8934becf", - "sha256:08c3c53b75eaa48d71cf8c710312316392ed40899cb34710d092e96745a358b7", - "sha256:39c7e2ec30515947ff4e87fb6f456dfc6e84857d34be479c9d4a4ba4bf46aa5d", - "sha256:5c9414dcfede6e441f7e8f81b43b34e834731003427e5b09e4e00e3172a10f00", - "sha256:6e7545f1a61025a4e58bb336952c5061697da694db1cae97b116e9c46abcf7c8", - "sha256:78fa6da68ed2727915c4767bb386ab32cdba863caa7dbe473eaae45f9959da86", - "sha256:7ab8a544af125fb704feadb008c99a88805126fb525280b2270bb25cc1d78a12", - "sha256:99fcc3c8d804d1bc6d9a099921e39d827026409a58f2a720dcdb89374ea0c776", - "sha256:aef77c9fb94a3ac588e87841208bdec464471d9871bd5050a287cc9a475cd0ba", - "sha256:e89bf84b5437b532b0803ba5c9a5e054d21fec423a89952a74f87fa2c9b7bce2", - "sha256:fec3e9d8e36808a28efb59b489e4528c10ad0f480e57dcc32b4de5c9d8c9fdf3" + "sha256:87a2121042a1ac9358cabcaf1d07680ff97ee6404333bacca15f76aa8ad01a57", + "sha256:97b7290ca68e62a832558ec3976f15cbf911bf5d7c7039d8b861c2a0ece69fde" ], - "version": "==0.4.8" + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4, 3.5'", + "version": "==0.5.0" }, "pycparser": { "hashes": [ @@ -1109,11 +1099,11 @@ }, "setuptools": { "hashes": [ - "sha256:257de92a9d50a60b8e22abfcbb771571fde0dbf3ec234463212027a4eeecbe9a", - "sha256:e728ca814a823bf7bf60162daf9db95b93d532948c4c0bea762ce62f60189078" + "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b", + "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990" ], "markers": "python_version >= '3.7'", - "version": "==67.6.1" + "version": "==67.7.2" }, "shapely": { "hashes": [ @@ -1175,11 +1165,11 @@ }, "soupsieve": { "hashes": [ - "sha256:49e5368c2cda80ee7e84da9dbe3e110b70a4575f196efb74e51b94549d921955", - "sha256:e28dba9ca6c7c00173e34e4ba57448f0688bb681b7c5e8bf4971daafc093d69a" + "sha256:1c1bfee6819544a3447586c889157365a27e10d88cde3ad3da0cf0ddf646feb8", + "sha256:89d12b2d5dfcd2c9e8c22326da9d9aa9cb3dfab0a83a024f05704076ee8d35ea" ], "markers": "python_version >= '3.7'", - "version": "==2.4" + "version": "==2.4.1" }, "sqlalchemy": { "hashes": [ @@ -1223,13 +1213,6 @@ "index": "pypi", "version": "==1.4.40" }, - "statsd": { - "hashes": [ - "sha256:99763da81bfea8daf6b3d22d11aaccb01a8d0f52ea521daab37e758a4ca7d128", - "sha256:c2676519927f7afade3723aca9ca8ea986ef5b059556a980a867721ca69df093" - ], - "version": "==4.0.1" - }, "typing-extensions": { "hashes": [ "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", @@ -1501,85 +1484,85 @@ "toml" ], "hashes": [ - "sha256:006ed5582e9cbc8115d2e22d6d2144a0725db542f654d9d4fda86793832f873d", - "sha256:046936ab032a2810dcaafd39cc4ef6dd295df1a7cbead08fe996d4765fca9fe4", - "sha256:0484d9dd1e6f481b24070c87561c8d7151bdd8b044c93ac99faafd01f695c78e", - "sha256:0ce383d5f56d0729d2dd40e53fe3afeb8f2237244b0975e1427bfb2cf0d32bab", - "sha256:186e0fc9cf497365036d51d4d2ab76113fb74f729bd25da0975daab2e107fd90", - "sha256:2199988e0bc8325d941b209f4fd1c6fa007024b1442c5576f1a32ca2e48941e6", - "sha256:299bc75cb2a41e6741b5e470b8c9fb78d931edbd0cd009c58e5c84de57c06731", - "sha256:3668291b50b69a0c1ef9f462c7df2c235da3c4073f49543b01e7eb1dee7dd540", - "sha256:36dd42da34fe94ed98c39887b86db9d06777b1c8f860520e21126a75507024f2", - "sha256:38004671848b5745bb05d4d621526fca30cee164db42a1f185615f39dc997292", - "sha256:387fb46cb8e53ba7304d80aadca5dca84a2fbf6fe3faf6951d8cf2d46485d1e5", - "sha256:3eb55b7b26389dd4f8ae911ba9bc8c027411163839dea4c8b8be54c4ee9ae10b", - "sha256:420f94a35e3e00a2b43ad5740f935358e24478354ce41c99407cddd283be00d2", - "sha256:4ac0f522c3b6109c4b764ffec71bf04ebc0523e926ca7cbe6c5ac88f84faced0", - "sha256:4c752d5264053a7cf2fe81c9e14f8a4fb261370a7bb344c2a011836a96fb3f57", - "sha256:4f01911c010122f49a3e9bdc730eccc66f9b72bd410a3a9d3cb8448bb50d65d3", - "sha256:4f68ee32d7c4164f1e2c8797535a6d0a3733355f5861e0f667e37df2d4b07140", - "sha256:4fa54fb483decc45f94011898727802309a109d89446a3c76387d016057d2c84", - "sha256:507e4720791977934bba016101579b8c500fb21c5fa3cd4cf256477331ddd988", - "sha256:53d0fd4c17175aded9c633e319360d41a1f3c6e352ba94edcb0fa5167e2bad67", - "sha256:55272f33da9a5d7cccd3774aeca7a01e500a614eaea2a77091e9be000ecd401d", - "sha256:5764e1f7471cb8f64b8cda0554f3d4c4085ae4b417bfeab236799863703e5de2", - "sha256:57b77b9099f172804e695a40ebaa374f79e4fb8b92f3e167f66facbf92e8e7f5", - "sha256:5afdad4cc4cc199fdf3e18088812edcf8f4c5a3c8e6cb69127513ad4cb7471a9", - "sha256:5cc0783844c84af2522e3a99b9b761a979a3ef10fb87fc4048d1ee174e18a7d8", - "sha256:5e1df45c23d4230e3d56d04414f9057eba501f78db60d4eeecfcb940501b08fd", - "sha256:6146910231ece63facfc5984234ad1b06a36cecc9fd0c028e59ac7c9b18c38c6", - "sha256:797aad79e7b6182cb49c08cc5d2f7aa7b2128133b0926060d0a8889ac43843be", - "sha256:7c20b731211261dc9739bbe080c579a1835b0c2d9b274e5fcd903c3a7821cf88", - "sha256:817295f06eacdc8623dc4df7d8b49cea65925030d4e1e2a7c7218380c0072c25", - "sha256:81f63e0fb74effd5be736cfe07d710307cc0a3ccb8f4741f7f053c057615a137", - "sha256:872d6ce1f5be73f05bea4df498c140b9e7ee5418bfa2cc8204e7f9b817caa968", - "sha256:8c99cb7c26a3039a8a4ee3ca1efdde471e61b4837108847fb7d5be7789ed8fd9", - "sha256:8dbe2647bf58d2c5a6c5bcc685f23b5f371909a5624e9f5cd51436d6a9f6c6ef", - "sha256:8efb48fa743d1c1a65ee8787b5b552681610f06c40a40b7ef94a5b517d885c54", - "sha256:92ebc1619650409da324d001b3a36f14f63644c7f0a588e331f3b0f67491f512", - "sha256:9d22e94e6dc86de981b1b684b342bec5e331401599ce652900ec59db52940005", - "sha256:ba279aae162b20444881fc3ed4e4f934c1cf8620f3dab3b531480cf602c76b7f", - "sha256:bc4803779f0e4b06a2361f666e76f5c2e3715e8e379889d02251ec911befd149", - "sha256:bfe7085783cda55e53510482fa7b5efc761fad1abe4d653b32710eb548ebdd2d", - "sha256:c448b5c9e3df5448a362208b8d4b9ed85305528313fca1b479f14f9fe0d873b8", - "sha256:c90e73bdecb7b0d1cea65a08cb41e9d672ac6d7995603d6465ed4914b98b9ad7", - "sha256:d2b96123a453a2d7f3995ddb9f28d01fd112319a7a4d5ca99796a7ff43f02af5", - "sha256:d52f0a114b6a58305b11a5cdecd42b2e7f1ec77eb20e2b33969d702feafdd016", - "sha256:d530191aa9c66ab4f190be8ac8cc7cfd8f4f3217da379606f3dd4e3d83feba69", - "sha256:d683d230b5774816e7d784d7ed8444f2a40e7a450e5720d58af593cb0b94a212", - "sha256:db45eec1dfccdadb179b0f9ca616872c6f700d23945ecc8f21bb105d74b1c5fc", - "sha256:db8c2c5ace167fd25ab5dd732714c51d4633f58bac21fb0ff63b0349f62755a8", - "sha256:e2926b8abedf750c2ecf5035c07515770944acf02e1c46ab08f6348d24c5f94d", - "sha256:e627dee428a176ffb13697a2c4318d3f60b2ccdde3acdc9b3f304206ec130ccd", - "sha256:efe1c0adad110bf0ad7fb59f833880e489a61e39d699d37249bdf42f80590169" + "sha256:06ddd9c0249a0546997fdda5a30fbcb40f23926df0a874a60a8a185bc3a87d93", + "sha256:0743b0035d4b0e32bc1df5de70fba3059662ace5b9a2a86a9f894cfe66569013", + "sha256:0f3736a5d34e091b0a611964c6262fd68ca4363df56185902528f0b75dbb9c1f", + "sha256:1127b16220f7bfb3f1049ed4a62d26d81970a723544e8252db0efde853268e21", + "sha256:172db976ae6327ed4728e2507daf8a4de73c7cc89796483e0a9198fd2e47b462", + "sha256:182eb9ac3f2b4874a1f41b78b87db20b66da6b9cdc32737fbbf4fea0c35b23fc", + "sha256:1bb1e77a9a311346294621be905ea8a2c30d3ad371fc15bb72e98bfcfae532df", + "sha256:1fd78b911aea9cec3b7e1e2622c8018d51c0d2bbcf8faaf53c2497eb114911c1", + "sha256:20d1a2a76bb4eb00e4d36b9699f9b7aba93271c9c29220ad4c6a9581a0320235", + "sha256:21b154aba06df42e4b96fc915512ab39595105f6c483991287021ed95776d934", + "sha256:2c2e58e45fe53fab81f85474e5d4d226eeab0f27b45aa062856c89389da2f0d9", + "sha256:2c3b2803e730dc2797a017335827e9da6da0e84c745ce0f552e66400abdfb9a1", + "sha256:3146b8e16fa60427e03884301bf8209221f5761ac754ee6b267642a2fd354c48", + "sha256:344e714bd0fe921fc72d97404ebbdbf9127bac0ca1ff66d7b79efc143cf7c0c4", + "sha256:387065e420aed3c71b61af7e82c7b6bc1c592f7e3c7a66e9f78dd178699da4fe", + "sha256:3f04becd4fcda03c0160d0da9c8f0c246bc78f2f7af0feea1ec0930e7c93fa4a", + "sha256:4a42e1eff0ca9a7cb7dc9ecda41dfc7cbc17cb1d02117214be0561bd1134772b", + "sha256:4ea748802cc0de4de92ef8244dd84ffd793bd2e7be784cd8394d557a3c751e21", + "sha256:55416d7385774285b6e2a5feca0af9652f7f444a4fa3d29d8ab052fafef9d00d", + "sha256:5d0391fb4cfc171ce40437f67eb050a340fdbd0f9f49d6353a387f1b7f9dd4fa", + "sha256:63cdeaac4ae85a179a8d6bc09b77b564c096250d759eed343a89d91bce8b6367", + "sha256:72fcae5bcac3333a4cf3b8f34eec99cea1187acd55af723bcbd559adfdcb5535", + "sha256:7c4ed4e9f3b123aa403ab424430b426a1992e6f4c8fd3cb56ea520446e04d152", + "sha256:83957d349838a636e768251c7e9979e899a569794b44c3728eaebd11d848e58e", + "sha256:87ecc7c9a1a9f912e306997ffee020297ccb5ea388421fe62a2a02747e4d5539", + "sha256:8f69770f5ca1994cb32c38965e95f57504d3aea96b6c024624fdd5bb1aa494a1", + "sha256:8f6c930fd70d91ddee53194e93029e3ef2aabe26725aa3c2753df057e296b925", + "sha256:965ee3e782c7892befc25575fa171b521d33798132692df428a09efacaffe8d0", + "sha256:974bc90d6f6c1e59ceb1516ab00cf1cdfbb2e555795d49fa9571d611f449bcb2", + "sha256:981b4df72c93e3bc04478153df516d385317628bd9c10be699c93c26ddcca8ab", + "sha256:aa784405f0c640940595fa0f14064d8e84aff0b0f762fa18393e2760a2cf5841", + "sha256:ae7863a1d8db6a014b6f2ff9c1582ab1aad55a6d25bac19710a8df68921b6e30", + "sha256:aeae2aa38395b18106e552833f2a50c27ea0000122bde421c31d11ed7e6f9c91", + "sha256:b2317d5ed777bf5a033e83d4f1389fd4ef045763141d8f10eb09a7035cee774c", + "sha256:be19931a8dcbe6ab464f3339966856996b12a00f9fe53f346ab3be872d03e257", + "sha256:be9824c1c874b73b96288c6d3de793bf7f3a597770205068c6163ea1f326e8b9", + "sha256:c0045f8f23a5fb30b2eb3b8a83664d8dc4fb58faddf8155d7109166adb9f2040", + "sha256:c86bd45d1659b1ae3d0ba1909326b03598affbc9ed71520e0ff8c31a993ad911", + "sha256:ca0f34363e2634deffd390a0fef1aa99168ae9ed2af01af4a1f5865e362f8623", + "sha256:d298c2815fa4891edd9abe5ad6e6cb4207104c7dd9fd13aea3fdebf6f9b91259", + "sha256:d2a3a6146fe9319926e1d477842ca2a63fe99af5ae690b1f5c11e6af074a6b5c", + "sha256:dfd393094cd82ceb9b40df4c77976015a314b267d498268a076e940fe7be6b79", + "sha256:e58c0d41d336569d63d1b113bd573db8363bc4146f39444125b7f8060e4e04f5", + "sha256:ea3f5bc91d7d457da7d48c7a732beaf79d0c8131df3ab278e6bba6297e23c6c4", + "sha256:ea53151d87c52e98133eb8ac78f1206498c015849662ca8dc246255265d9c3c4", + "sha256:eb0edc3ce9760d2f21637766c3aa04822030e7451981ce569a1b3456b7053f22", + "sha256:f649dd53833b495c3ebd04d6eec58479454a1784987af8afb77540d6c1767abd", + "sha256:f760073fcf8f3d6933178d67754f4f2d4e924e321f4bb0dcef0424ca0215eba1", + "sha256:fa546d66639d69aa967bf08156eb8c9d0cd6f6de84be9e8c9819f52ad499c910", + "sha256:fd214917cabdd6f673a29d708574e9fbdb892cb77eb426d0eae3490d95ca7859", + "sha256:fff5aaa6becf2c6a1699ae6a39e2e6fb0672c2d42eca8eb0cafa91cf2e9bd312" ], "markers": "python_version >= '3.7'", - "version": "==7.2.2" + "version": "==7.2.3" }, "cryptography": { "hashes": [ - "sha256:0a4e3406cfed6b1f6d6e87ed243363652b2586b2d917b0609ca4f97072994405", - "sha256:1e0af458515d5e4028aad75f3bb3fe7a31e46ad920648cd59b64d3da842e4356", - "sha256:2803f2f8b1e95f614419926c7e6f55d828afc614ca5ed61543877ae668cc3472", - "sha256:28d63d75bf7ae4045b10de5413fb1d6338616e79015999ad9cf6fc538f772d41", - "sha256:32057d3d0ab7d4453778367ca43e99ddb711770477c4f072a51b3ca69602780a", - "sha256:3a4805a4ca729d65570a1b7cac84eac1e431085d40387b7d3bbaa47e39890b88", - "sha256:63dac2d25c47f12a7b8aa60e528bfb3c51c5a6c5a9f7c86987909c6c79765554", - "sha256:650883cc064297ef3676b1db1b7b1df6081794c4ada96fa457253c4cc40f97db", - "sha256:6f2bbd72f717ce33100e6467572abaedc61f1acb87b8d546001328d7f466b778", - "sha256:7c872413353c70e0263a9368c4993710070e70ab3e5318d85510cc91cce77e7c", - "sha256:918cb89086c7d98b1b86b9fdb70c712e5a9325ba6f7d7cfb509e784e0cfc6917", - "sha256:9618a87212cb5200500e304e43691111570e1f10ec3f35569fdfcd17e28fd797", - "sha256:a805a7bce4a77d51696410005b3e85ae2839bad9aa38894afc0aa99d8e0c3160", - "sha256:cc3a621076d824d75ab1e1e530e66e7e8564e357dd723f2533225d40fe35c60c", - "sha256:cd033d74067d8928ef00a6b1327c8ea0452523967ca4463666eeba65ca350d4c", - "sha256:cf91e428c51ef692b82ce786583e214f58392399cf65c341bc7301d096fa3ba2", - "sha256:d36bbeb99704aabefdca5aee4eba04455d7a27ceabd16f3b3ba9bdcc31da86c4", - "sha256:d8aa3609d337ad85e4eb9bb0f8bcf6e4409bfb86e706efa9a027912169e89122", - "sha256:f5d7b79fa56bc29580faafc2ff736ce05ba31feaa9d4735048b0de7d9ceb2b94" + "sha256:05dc219433b14046c476f6f09d7636b92a1c3e5808b9a6536adf4932b3b2c440", + "sha256:0dcca15d3a19a66e63662dc8d30f8036b07be851a8680eda92d079868f106288", + "sha256:142bae539ef28a1c76794cca7f49729e7c54423f615cfd9b0b1fa90ebe53244b", + "sha256:3daf9b114213f8ba460b829a02896789751626a2a4e7a43a28ee77c04b5e4958", + "sha256:48f388d0d153350f378c7f7b41497a54ff1513c816bcbbcafe5b829e59b9ce5b", + "sha256:4df2af28d7bedc84fe45bd49bc35d710aede676e2a4cb7fc6d103a2adc8afe4d", + "sha256:4f01c9863da784558165f5d4d916093737a75203a5c5286fde60e503e4276c7a", + "sha256:7a38250f433cd41df7fcb763caa3ee9362777fdb4dc642b9a349721d2bf47404", + "sha256:8f79b5ff5ad9d3218afb1e7e20ea74da5f76943ee5edb7f76e56ec5161ec782b", + "sha256:956ba8701b4ffe91ba59665ed170a2ebbdc6fc0e40de5f6059195d9f2b33ca0e", + "sha256:a04386fb7bc85fab9cd51b6308633a3c271e3d0d3eae917eebab2fac6219b6d2", + "sha256:a95f4802d49faa6a674242e25bfeea6fc2acd915b5e5e29ac90a32b1139cae1c", + "sha256:adc0d980fd2760c9e5de537c28935cc32b9353baaf28e0814df417619c6c8c3b", + "sha256:aecbb1592b0188e030cb01f82d12556cf72e218280f621deed7d806afd2113f9", + "sha256:b12794f01d4cacfbd3177b9042198f3af1c856eedd0a98f10f141385c809a14b", + "sha256:c0764e72b36a3dc065c155e5b22f93df465da9c39af65516fe04ed3c68c92636", + "sha256:c33c0d32b8594fa647d2e01dbccc303478e16fdd7cf98652d5b3ed11aa5e5c99", + "sha256:cbaba590180cba88cb99a5f76f90808a624f18b169b90a4abb40c1fd8c19420e", + "sha256:d5a1bd0e9e2031465761dfa920c16b0065ad77321d8a8c1f5ee331021fda65e9" ], "markers": "python_version >= '3.6'", - "version": "==40.0.1" + "version": "==40.0.2" }, "cyclonedx-python-lib": { "hashes": [ @@ -1899,11 +1882,11 @@ }, "pip": { "hashes": [ - "sha256:236bcb61156d76c4b8a05821b988c7b8c35bf0da28a4b614e8d6ab5212c25c6f", - "sha256:cd015ea1bfb0fcef59d8a286c1f8bebcb983f6317719d415dc5351efb7cd7024" + "sha256:3d8d72fa0714e93c9d3c2a0ede91e898c64596e0fa7d4523f72dd95728efc418", + "sha256:c95b53d309f903f33dfe5fd37e502a5c3a05ee3454d518e45df522a4f091b728" ], "markers": "python_version >= '3.7'", - "version": "==23.0.1" + "version": "==23.1.1" }, "pip-api": { "hashes": [ @@ -1978,11 +1961,11 @@ }, "pygments": { "hashes": [ - "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297", - "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717" + "sha256:8ace4d3c1dd481894b2005f560ead0f9f19ee64fe983366be1a21e171d12775c", + "sha256:db2db3deb4b4179f399a09054b023b6a586b76499d36965813c71aa8ed7b5fd1" ], - "markers": "python_version >= '3.6'", - "version": "==2.14.0" + "markers": "python_version >= '3.7'", + "version": "==2.15.1" }, "pyparsing": { "hashes": [ @@ -2122,11 +2105,11 @@ }, "rich": { "hashes": [ - "sha256:540c7d6d26a1178e8e8b37e9ba44573a3cd1464ff6348b99ee7061b95d1c6333", - "sha256:dc84400a9d842b3a9c5ff74addd8eb798d155f36c1c91303888e0a66850d2a15" + "sha256:22b74cae0278fd5086ff44144d3813be1cedc9115bdfabbfefd86400cb88b20a", + "sha256:b5d573e13605423ec80bdd0cd5f8541f7844a0e71a13f74cf454ccb2f490708b" ], "markers": "python_full_version >= '3.7.0'", - "version": "==13.3.3" + "version": "==13.3.4" }, "s3transfer": { "hashes": [ diff --git a/app/__init__.py b/app/__init__.py index 5d863d312..abadaa315 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -23,7 +23,6 @@ from notifications_utils import logging, request_helper from notifications_utils.celery import NotifyCelery from notifications_utils.clients.encryption.encryption_client import Encryption from notifications_utils.clients.redis.redis_client import RedisClient -from notifications_utils.clients.statsd.statsd_client import StatsdClient from notifications_utils.clients.zendesk.zendesk_client import ZendeskClient from sqlalchemy import event from werkzeug.exceptions import HTTPException as WerkzeugHTTPException @@ -58,7 +57,6 @@ aws_ses_stub_client = AwsSesStubClient() aws_sns_client = AwsSnsClient() encryption = Encryption() zendesk_client = ZendeskClient() -statsd_client = StatsdClient() redis_store = RedisClient() document_download_client = DocumentDownloadClient() metrics = GDSMetrics() @@ -91,13 +89,11 @@ def create_app(application): migrate.init_app(application, db=db) ma.init_app(application) zendesk_client.init_app(application) - statsd_client.init_app(application) logging.init_app(application) - aws_sns_client.init_app(application, statsd_client=statsd_client) + aws_sns_client.init_app(application) - aws_ses_client.init_app(statsd_client=statsd_client) + aws_ses_client.init_app() aws_ses_stub_client.init_app( - statsd_client=statsd_client, stub_url=application.config['SES_STUB_URL'] ) # If a stub url is provided for SES, then use the stub client rather than the real SES boto client diff --git a/app/celery/nightly_tasks.py b/app/celery/nightly_tasks.py index b812b2915..ce98dd27c 100644 --- a/app/celery/nightly_tasks.py +++ b/app/celery/nightly_tasks.py @@ -4,7 +4,7 @@ from flask import current_app from notifications_utils.timezones import convert_utc_to_local_timezone from sqlalchemy.exc import SQLAlchemyError -from app import notify_celery, statsd_client +from app import notify_celery from app.aws import s3 from app.celery.process_ses_receipts_tasks import check_and_queue_callback_task from app.config import QueueNames @@ -134,7 +134,6 @@ def timeout_notifications(): notifications = dao_timeout_notifications(cutoff_time) for notification in notifications: - statsd_client.incr(f'timeout-sending.{notification.sent_by}') check_and_queue_callback_task(notification) current_app.logger.info( diff --git a/app/celery/process_ses_receipts_tasks.py b/app/celery/process_ses_receipts_tasks.py index 8a0b3417f..d36a4e204 100644 --- a/app/celery/process_ses_receipts_tasks.py +++ b/app/celery/process_ses_receipts_tasks.py @@ -5,7 +5,7 @@ from celery.exceptions import Retry from flask import current_app, json from sqlalchemy.orm.exc import NoResultFound -from app import notify_celery, statsd_client +from app import notify_celery from app.celery.service_callback_tasks import ( create_complaint_callback_data, create_delivery_status_callback_data, @@ -92,11 +92,6 @@ def process_ses_results(self, response): "SES callback return status of {} for notification: {}".format(notification_status, notification.id) ) - statsd_client.incr("callback.ses.{}".format(notification_status)) - - if notification.sent_at: - statsd_client.timing_with_dates("callback.ses.elapsed-time", datetime.utcnow(), notification.sent_at) - check_and_queue_callback_task(notification) return True diff --git a/app/clients/email/aws_ses.py b/app/clients/email/aws_ses.py index 59d2243ac..6bd4050df 100644 --- a/app/clients/email/aws_ses.py +++ b/app/clients/email/aws_ses.py @@ -57,7 +57,7 @@ class AwsSesClient(EmailClient): Amazon SES email client. ''' - def init_app(self, statsd_client, *args, **kwargs): + def init_app(self, *args, **kwargs): self._client = client( 'ses', region_name=cloud_config.ses_region, @@ -65,7 +65,6 @@ class AwsSesClient(EmailClient): aws_secret_access_key=cloud_config.ses_secret_key ) super(AwsSesClient, self).__init__(*args, **kwargs) - self.statsd_client = statsd_client @property def name(self): @@ -110,7 +109,6 @@ class AwsSesClient(EmailClient): ReplyToAddresses=[punycode_encode_email(addr) for addr in reply_to_addresses] ) except botocore.exceptions.ClientError as e: - self.statsd_client.incr("clients.ses.error") # http://docs.aws.amazon.com/ses/latest/DeveloperGuide/api-error-codes.html if e.response['Error']['Code'] == 'InvalidParameterValue': @@ -121,16 +119,12 @@ class AwsSesClient(EmailClient): ): raise AwsSesClientThrottlingSendRateException(str(e)) else: - self.statsd_client.incr("clients.ses.error") raise AwsSesClientException(str(e)) except Exception as e: - self.statsd_client.incr("clients.ses.error") raise AwsSesClientException(str(e)) else: elapsed_time = monotonic() - start_time current_app.logger.info("AWS SES request finished in {}".format(elapsed_time)) - self.statsd_client.timing("clients.ses.request-time", elapsed_time) - self.statsd_client.incr("clients.ses.success") return response['MessageId'] diff --git a/app/clients/email/aws_ses_stub.py b/app/clients/email/aws_ses_stub.py index ef5fc8c13..6322beee4 100644 --- a/app/clients/email/aws_ses_stub.py +++ b/app/clients/email/aws_ses_stub.py @@ -12,8 +12,7 @@ class AwsSesStubClientException(EmailClientException): class AwsSesStubClient(EmailClient): - def init_app(self, statsd_client, stub_url): - self.statsd_client = statsd_client + def init_app(self, stub_url): self.url = stub_url @property @@ -39,11 +38,8 @@ class AwsSesStubClient(EmailClient): response_json = json.loads(response.text) except Exception as e: - self.statsd_client.incr("clients.ses_stub.error") raise AwsSesStubClientException(str(e)) else: elapsed_time = monotonic() - start_time current_app.logger.info("AWS SES stub request finished in {}".format(elapsed_time)) - self.statsd_client.timing("clients.ses_stub.request-time", elapsed_time) - self.statsd_client.incr("clients.ses_stub.success") return response_json['MessageId'] diff --git a/app/clients/sms/aws_sns.py b/app/clients/sms/aws_sns.py index 3f57c44c3..45bff2917 100644 --- a/app/clients/sms/aws_sns.py +++ b/app/clients/sms/aws_sns.py @@ -14,7 +14,7 @@ class AwsSnsClient(SmsClient): AwsSns sms client """ - def init_app(self, current_app, statsd_client, *args, **kwargs): + def init_app(self, current_app, *args, **kwargs): self._client = client( "sns", region_name=cloud_config.sns_region, @@ -23,7 +23,6 @@ class AwsSnsClient(SmsClient): ) super(SmsClient, self).__init__(*args, **kwargs) self.current_app = current_app - self.statsd_client = statsd_client self._valid_sender_regex = re.compile(r"^\+?\d{5,14}$") @property @@ -67,19 +66,14 @@ class AwsSnsClient(SmsClient): start_time = monotonic() response = self._client.publish(PhoneNumber=to, Message=content, MessageAttributes=attributes) except botocore.exceptions.ClientError as e: - self.statsd_client.incr("clients.sns.error") raise str(e) except Exception as e: - self.statsd_client.incr("clients.sns.error") raise str(e) finally: elapsed_time = monotonic() - start_time self.current_app.logger.info("AWS SNS request finished in {}".format(elapsed_time)) - self.statsd_client.timing("clients.sns.request-time", elapsed_time) - self.statsd_client.incr("clients.sns.success") return response["MessageId"] if not matched: - self.statsd_client.incr("clients.sns.error") self.current_app.logger.error("No valid numbers found in {}".format(to)) raise ValueError("No valid numbers found for SMS delivery") diff --git a/app/commands.py b/app/commands.py index 40118bd7c..7a8c99d7b 100644 --- a/app/commands.py +++ b/app/commands.py @@ -11,7 +11,6 @@ from click_datetime import Datetime as click_dt from flask import current_app, json from notifications_python_client.authentication import create_jwt_token from notifications_utils.recipients import RecipientCSV -from notifications_utils.statsd_decorators import statsd from notifications_utils.template import SMSMessageTemplate from sqlalchemy import and_ from sqlalchemy.exc import IntegrityError @@ -247,7 +246,6 @@ def bulk_invite_user_to_service(file_name, service_id, user_id, auth_type, permi @notify_command(name='archive-jobs-created-between-dates') @click.option('-s', '--start_date', required=True, help="start date inclusive", type=click_dt(format='%Y-%m-%d')) @click.option('-e', '--end_date', required=True, help="end date inclusive", type=click_dt(format='%Y-%m-%d')) -@statsd(namespace="tasks") def update_jobs_archived_flag(start_date, end_date): current_app.logger.info('Archiving jobs created between {} to {}'.format(start_date, end_date)) diff --git a/app/config.py b/app/config.py index a2f350986..5343b09d0 100644 --- a/app/config.py +++ b/app/config.py @@ -116,9 +116,6 @@ class Config(object): # Monitoring CRONITOR_ENABLED = False CRONITOR_KEYS = json.loads(getenv('CRONITOR_KEYS', '{}')) - STATSD_HOST = getenv('STATSD_HOST') - STATSD_PORT = 8125 - STATSD_ENABLED = bool(STATSD_HOST) # Antivirus ANTIVIRUS_ENABLED = getenv('ANTIVIRUS_ENABLED', '1') == '1' diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index 84feb52cc..db331db43 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -10,7 +10,7 @@ from notifications_utils.template import ( SMSMessageTemplate, ) -from app import create_uuid, db, notification_provider_clients, statsd_client +from app import create_uuid, db, notification_provider_clients from app.celery.research_mode_tasks import ( send_email_response, send_sms_response, @@ -59,8 +59,6 @@ def send_sms_to_provider(notification): prefix=service.name, show_prefix=service.prefix_sms, ) - created_at = notification.created_at - key_type = notification.key_type if service.research_mode or notification.key_type == KEY_TYPE_TEST: update_notification_to_sending(notification, provider) send_sms_response(provider.name, str(notification.id), notification.to) @@ -91,18 +89,6 @@ def send_sms_to_provider(notification): notification.billable_units = template.fragment_count update_notification_to_sending(notification, provider) - delta_seconds = (datetime.utcnow() - created_at).total_seconds() - statsd_client.timing("sms.total-time", delta_seconds) - - if key_type == KEY_TYPE_TEST: - statsd_client.timing("sms.test-key.total-time", delta_seconds) - else: - statsd_client.timing("sms.live-key.total-time", delta_seconds) - if service.high_volume: - statsd_client.timing("sms.live-key.high-volume.total-time", delta_seconds) - else: - statsd_client.timing("sms.live-key.not-high-volume.total-time", delta_seconds) - def send_email_to_provider(notification): service = SerialisedService.from_id(notification.service_id) @@ -127,8 +113,6 @@ def send_email_to_provider(notification): template_dict, values=notification.personalisation ) - created_at = notification.created_at - key_type = notification.key_type if service.research_mode or notification.key_type == KEY_TYPE_TEST: notification.reference = str(create_uuid()) update_notification_to_sending(notification, provider) @@ -147,16 +131,6 @@ def send_email_to_provider(notification): ) notification.reference = reference update_notification_to_sending(notification, provider) - delta_seconds = (datetime.utcnow() - created_at).total_seconds() - - if key_type == KEY_TYPE_TEST: - statsd_client.timing("email.test-key.total-time", delta_seconds) - else: - statsd_client.timing("email.live-key.total-time", delta_seconds) - if service.high_volume: - statsd_client.timing("email.live-key.high-volume.total-time", delta_seconds) - else: - statsd_client.timing("email.live-key.not-high-volume.total-time", delta_seconds) def update_notification_to_sending(notification, provider): diff --git a/sample.env b/sample.env index 71a451e1d..643c25c63 100644 --- a/sample.env +++ b/sample.env @@ -30,7 +30,6 @@ DEBUG=True ANTIVIRUS_ENABLED=0 REDIS_ENABLED=1 NOTIFY_ENVIRONMENT=development -STATSD_HOST=localhost SES_STUB_URL=None NOTIFY_APP_NAME=api diff --git a/statsd_mapping.yml b/statsd_mapping.yml deleted file mode 100644 index 83fb306dc..000000000 --- a/statsd_mapping.yml +++ /dev/null @@ -1,11 +0,0 @@ -defaults: - timer_type: histogram - buckets: [.005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10, 25] - ttl: 0 # metrics do not expire - -mappings: -- match: (\w+)\.notifications\.(.+) - match_type: regex - name: "notifications_${2}" - labels: - space: "$1" diff --git a/tests/app/celery/test_process_ses_receipts_tasks.py b/tests/app/celery/test_process_ses_receipts_tasks.py index 1ec8afcea..00225acce 100644 --- a/tests/app/celery/test_process_ses_receipts_tasks.py +++ b/tests/app/celery/test_process_ses_receipts_tasks.py @@ -4,7 +4,7 @@ from unittest.mock import ANY from freezegun import freeze_time -from app import encryption, statsd_client +from app import encryption from app.celery.process_ses_receipts_tasks import ( process_ses_results, remove_emails_from_bounce, @@ -141,8 +141,6 @@ def test_ses_callback_should_update_notification_status( sample_email_template, mocker): with freeze_time('2001-01-01T12:00:00'): - mocker.patch('app.statsd_client.incr') - mocker.patch('app.statsd_client.timing_with_dates') send_mock = mocker.patch( 'app.celery.service_callback_tasks.send_delivery_status_to_service.apply_async' ) @@ -161,10 +159,6 @@ def test_ses_callback_should_update_notification_status( assert get_notification_by_id(notification.id).status == 'sending' assert process_ses_results(ses_notification_callback(reference='ref')) assert get_notification_by_id(notification.id).status == 'delivered' - statsd_client.timing_with_dates.assert_any_call( - "callback.ses.elapsed-time", datetime.utcnow(), notification.sent_at - ) - statsd_client.incr.assert_any_call("callback.ses.delivered") send_mock.assert_called_once_with([str(notification.id), ANY], queue="service-callbacks") # assert second arg is an encrypted string assert isinstance(send_mock.call_args.args[0][1], str) diff --git a/tests/app/clients/test_aws_ses.py b/tests/app/clients/test_aws_ses.py index fe1384dd7..7e60a1f77 100644 --- a/tests/app/clients/test_aws_ses.py +++ b/tests/app/clients/test_aws_ses.py @@ -57,7 +57,6 @@ def test_should_be_none_if_unrecognised_status_code(): ], ids=['empty', 'single_email', 'punycode']) def test_send_email_handles_reply_to_address(notify_api, mocker, reply_to_address, expected_value): boto_mock = mocker.patch.object(aws_ses_client, '_client', create=True) - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) with notify_api.app_context(): aws_ses_client.send_email( @@ -78,7 +77,6 @@ def test_send_email_handles_reply_to_address(notify_api, mocker, reply_to_addres def test_send_email_handles_punycode_to_address(notify_api, mocker): boto_mock = mocker.patch.object(aws_ses_client, '_client', create=True) - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) with notify_api.app_context(): aws_ses_client.send_email( @@ -98,7 +96,6 @@ def test_send_email_handles_punycode_to_address(notify_api, mocker): def test_send_email_raises_invalid_parameter_value_error_as_EmailClientNonRetryableException(mocker): boto_mock = mocker.patch.object(aws_ses_client, '_client', create=True) - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) error_response = { 'Error': { 'Code': 'InvalidParameterValue', @@ -107,7 +104,6 @@ def test_send_email_raises_invalid_parameter_value_error_as_EmailClientNonRetrya } } boto_mock.send_email.side_effect = botocore.exceptions.ClientError(error_response, 'opname') - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) with pytest.raises(EmailClientNonRetryableException) as excinfo: aws_ses_client.send_email( @@ -122,7 +118,6 @@ def test_send_email_raises_invalid_parameter_value_error_as_EmailClientNonRetrya def test_send_email_raises_send_rate_throttling_as_AwsSesClientThrottlingSendRateException(mocker): boto_mock = mocker.patch.object(aws_ses_client, '_client', create=True) - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) error_response = { 'Error': { 'Code': 'Throttling', @@ -143,7 +138,6 @@ def test_send_email_raises_send_rate_throttling_as_AwsSesClientThrottlingSendRat def test_send_email_does_not_raise_AwsSesClientThrottlingSendRateException_if_non_send_rate_throttling(mocker): boto_mock = mocker.patch.object(aws_ses_client, '_client', create=True) - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) error_response = { 'Error': { 'Code': 'Throttling', @@ -164,7 +158,6 @@ def test_send_email_does_not_raise_AwsSesClientThrottlingSendRateException_if_no def test_send_email_raises_other_errs_as_AwsSesClientException(mocker): boto_mock = mocker.patch.object(aws_ses_client, '_client', create=True) - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) error_response = { 'Error': { 'Code': 'ServiceUnavailable', @@ -173,7 +166,6 @@ def test_send_email_raises_other_errs_as_AwsSesClientException(mocker): } } boto_mock.send_email.side_effect = botocore.exceptions.ClientError(error_response, 'opname') - mocker.patch.object(aws_ses_client, 'statsd_client', create=True) with pytest.raises(AwsSesClientException) as excinfo: aws_ses_client.send_email( diff --git a/tests/app/clients/test_aws_sns.py b/tests/app/clients/test_aws_sns.py index 514e19d84..e730623f9 100644 --- a/tests/app/clients/test_aws_sns.py +++ b/tests/app/clients/test_aws_sns.py @@ -5,7 +5,6 @@ from app import aws_sns_client def test_send_sms_successful_returns_aws_sns_response(notify_api, mocker): boto_mock = mocker.patch.object(aws_sns_client, '_client', create=True) - mocker.patch.object(aws_sns_client, 'statsd_client', create=True) to = "6135555555" content = reference = 'foo' with notify_api.app_context(): @@ -22,7 +21,6 @@ def test_send_sms_successful_returns_aws_sns_response(notify_api, mocker): def test_send_sms_returns_raises_error_if_there_is_no_valid_number_is_found(notify_api, mocker): mocker.patch.object(aws_sns_client, '_client', create=True) - mocker.patch.object(aws_sns_client, 'statsd_client', create=True) to = "" content = reference = 'foo' with pytest.raises(ValueError) as excinfo: diff --git a/tests/app/clients/test_sms.py b/tests/app/clients/test_sms.py index 59d053845..db8eb1a01 100644 --- a/tests/app/clients/test_sms.py +++ b/tests/app/clients/test_sms.py @@ -1,6 +1,5 @@ import pytest -from app import statsd_client from app.clients.sms import SmsClient, SmsClientResponseException @@ -12,7 +11,7 @@ def fake_client(notify_api): return 'fake' fake_client = FakeSmsClient() - fake_client.init_app(notify_api, statsd_client) + # fake_client.init_app(notify_api) return fake_client diff --git a/tests/app/v2/test_errors.py b/tests/app/v2/test_errors.py index 455829fda..b12357333 100644 --- a/tests/app/v2/test_errors.py +++ b/tests/app/v2/test_errors.py @@ -15,8 +15,6 @@ def app_for_test(): app = flask.Flask(__name__) app.config['TESTING'] = True init_app(app) - from app import statsd_client - statsd_client.init_app(app) from app.v2.errors import register_errors blue = Blueprint("v2_under_test", __name__, url_prefix='/v2/under_test') From cd8decbdd7d253a02b8ae0ef9c29c3d97f16e627 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 25 Apr 2023 14:00:59 -0700 Subject: [PATCH 12/51] code review feedback --- Pipfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Pipfile b/Pipfile index 7490293e9..b896c7240 100644 --- a/Pipfile +++ b/Pipfile @@ -59,8 +59,7 @@ werkzeug = "~=2.2" prometheus-client = "==0.14.1" gds-metrics = {version = "==0.2.4", ref = "6f1840a57b6fb1ee40b7e84f2f18ec229de8aa72", git = "https://github.com/alphagov/gds_metrics_python.git"} packaging = "==21.3" -# TODO revert to main -notifications-utils = {editable = true, ref = "notify-243", git = "https://github.com/GSA/notifications-utils.git"} +notifications-utils = {editable = true, ref = "main", git = "https://github.com/GSA/notifications-utils.git"} newrelic = "*" [dev-packages] From b3d33ba4aaac2785190058fc77055cbf053268a0 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Wed, 26 Apr 2023 10:40:00 -0400 Subject: [PATCH 13/51] Update utils to get logging improvements --- Pipfile.lock | 26 +++++++++++++------------- app/config.py | 1 + 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index abe85e280..0f6796610 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -349,11 +349,11 @@ }, "flask": { "hashes": [ - "sha256:7eb373984bf1c770023fce9db164ed0c3353cd0b53f130f4693da0ca756a2e6d", - "sha256:c0bec9477df1cb867e5a67c9e1ab758de9cb4a3e52dd70681f59fa40a62b3f2d" + "sha256:13f6329ddbfff11340939cd11919daf150a01358ded4b7e81c03c055dfecb559", + "sha256:77504c4c097f56ac5f29b00f9009213010cf9d2923a288c0e0564a5db2bb53d6" ], "index": "pypi", - "version": "==2.2.3" + "version": "==2.2.4" }, "flask-bcrypt": { "hashes": [ @@ -768,7 +768,7 @@ "notifications-utils": { "editable": true, "git": "https://github.com/GSA/notifications-utils.git", - "ref": "689792bf2fb29905374c117a5a2c562754ac131a" + "ref": "c7a85c4d1e8f975d349c1555f416ae20f28a2ce1" }, "numpy": { "hashes": [ @@ -1267,11 +1267,11 @@ }, "werkzeug": { "hashes": [ - "sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe", - "sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612" + "sha256:340335057f72974d9281dbaf52c8090a9f9a59ba304ae814bf0656e6559c0020", + "sha256:3b6b46926d052b8ebca97c4dc73c12e47bdd07d57ab0600c039c3155450227bc" ], "index": "pypi", - "version": "==2.2.3" + "version": "==2.3.0" }, "wrapt": { "hashes": [ @@ -1882,11 +1882,11 @@ }, "pip": { "hashes": [ - "sha256:3d8d72fa0714e93c9d3c2a0ede91e898c64596e0fa7d4523f72dd95728efc418", - "sha256:c95b53d309f903f33dfe5fd37e502a5c3a05ee3454d518e45df522a4f091b728" + "sha256:0e7c86f486935893c708287b30bd050a36ac827ec7fe5e43fe7cb198dd835fba", + "sha256:3ef6ac33239e4027d9a5598a381b9d30880a1477e50039db2eac6e8a8f6d1b18" ], "markers": "python_version >= '3.7'", - "version": "==23.1.1" + "version": "==23.1.2" }, "pip-api": { "hashes": [ @@ -2190,11 +2190,11 @@ }, "werkzeug": { "hashes": [ - "sha256:2e1ccc9417d4da358b9de6f174e3ac094391ea1d4fbef2d667865d819dfd0afe", - "sha256:56433961bc1f12533306c624f3be5e744389ac61d722175d543e1751285da612" + "sha256:340335057f72974d9281dbaf52c8090a9f9a59ba304ae814bf0656e6559c0020", + "sha256:3b6b46926d052b8ebca97c4dc73c12e47bdd07d57ab0600c039c3155450227bc" ], "index": "pypi", - "version": "==2.2.3" + "version": "==2.3.0" }, "xmltodict": { "hashes": [ diff --git a/app/config.py b/app/config.py index 5343b09d0..466efcd76 100644 --- a/app/config.py +++ b/app/config.py @@ -288,6 +288,7 @@ def _s3_credentials_from_env(bucket_prefix): class Development(Config): DEBUG = True + NOTIFY_LOG_LEVEL = "DEBUG" SQLALCHEMY_ECHO = False DVLA_EMAIL_ADDRESSES = ['success@simulator.amazonses.com'] From 4e6e06e41d7c1dcbd1d1f5ca2f0f7eb17fa85142 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Thu, 27 Apr 2023 08:39:05 -0400 Subject: [PATCH 14/51] Apply suggestions from code review Co-authored-by: Steven Reilly --- docs/infra-overview.md | 2 +- docs/run-book.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/infra-overview.md b/docs/infra-overview.md index 636dc743e..78e0277f7 100644 --- a/docs/infra-overview.md +++ b/docs/infra-overview.md @@ -117,7 +117,7 @@ This should be complete for all regions U.S. Notify has been deployed to or is c 1. Select `Toll-free registrations` and `Create registration` 1. Select the number you just created and then `Register existing toll-free number` 1. Complete and submit the form. Approval usually takes about 2 weeks. -1. See the run book for information on how to set those numbers. +1. See the [run book](./run-book.md) for information on how to set those numbers. Example answers for toll-free registration form diff --git a/docs/run-book.md b/docs/run-book.md index 12513ba13..822067977 100644 --- a/docs/run-book.md +++ b/docs/run-book.md @@ -91,7 +91,7 @@ Also known as: **How to move code from my machine to production** ### datagov-brokerpak-smtp -1. To include new verisons of the SMTP borkerpak in released SSB code, create a PR in the `usnotify-ssb` repo updating the version in use in `app-setup-smtp.sh` +1. To include new verisons of the SMTP brokerpak in released SSB code, create a PR in the `usnotify-ssb` repo updating the version in use in `app-setup-smtp.sh` ### Vulnerability Mitigation Changes @@ -157,7 +157,7 @@ Important policies: | Role Name | System | Permissions | Notes | | --------- | ------ | ----------- | ----- | | Cloud.gov Service Account | Cloud.gov | `OrgManager` and `SpaceDeveloper` | Creds stored in GitHub Environment secrets within api and admin app repos | -| SSB Deployment Account | AWS | `IAMFulLAccess` | Creds stored in GitHub Environment secrets within usnotify-ssb repo | +| SSB Deployment Account | AWS | `IAMFullAccess` | Creds stored in GitHub Environment secrets within usnotify-ssb repo | | SSB Cloud.gov Service Account | Cloud.gov | `SpaceDeveloper` | Creds stored in GitHub Environment secrets within usnotify-ssb repo | | SSB AWS Accounts | AWS | `sms_broker` or `smtp_broker` IAM role | Creds created and maintained by usnotify-ssb terraform | From 6d14fb484ad682014fd81da0d6c2245f2c68047c Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Thu, 27 Apr 2023 09:17:33 -0400 Subject: [PATCH 15/51] Add info on use of reset.sh script to docs/infra-overview.md --- docs/infra-overview.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/infra-overview.md b/docs/infra-overview.md index 78e0277f7..e7dd0768e 100644 --- a/docs/infra-overview.md +++ b/docs/infra-overview.md @@ -49,9 +49,24 @@ Credentials for these services are created by running: 1. `cd terraform/development` 1. `./run.sh` +in both the api repository as well as the admin repository. + This will append credentials to your `.env` file. You will need to manually clean up any prior runs from that file if you run that command again. -Offboarding: Service key bindings can be cleaned up from cloud.gov by running `./run.sh -d` yourself, or another developer running `./run.sh -d -u USER_TO_CLEANUP` +You can remove your development infrastructure by running `./run.sh -d` + +#### Resetting + +`./reset.sh` can be used to import your development infrastructure information in case of a new computer or new working tree and the old terraform state file was not transferred. + +#### Offboarding + +`./reset.sh -u USER_TO_OFFBOARD` can be used to import another user's development resources in order to clean them up. Steps for use: + +1. Move your existing terraform state file aside temporarily, so it is not overwritten. +1. `./reset.sh -u USER_TO_OFFBOARD` +1. Answer no to the prompt about creating missing resources. +1. Run `./run.sh -u USER_TO_OFFBOARD -d` to fully remove the rest of that user's resources. ### Cloud.gov From 039442a456c59c4f83106ba91dafdb77aef5f989 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Thu, 27 Apr 2023 14:49:49 -0400 Subject: [PATCH 16/51] Deploy app to cflinuxfs4 stack --- .github/actions/deploy-proxy/action.yml | 2 +- manifest.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/actions/deploy-proxy/action.yml b/.github/actions/deploy-proxy/action.yml index 13bdc494f..c07a1c03f 100644 --- a/.github/actions/deploy-proxy/action.yml +++ b/.github/actions/deploy-proxy/action.yml @@ -12,7 +12,7 @@ inputs: default: https://github.com/GSA-TTS/cg-egress-proxy.git proxy_version: description: git ref to be deployed - default: main + default: cflinuxfs4-deploy runs: using: composite steps: diff --git a/manifest.yml b/manifest.yml index 021f934da..44dd270c4 100644 --- a/manifest.yml +++ b/manifest.yml @@ -2,6 +2,7 @@ applications: - name: notify-api-((env)) buildpack: python_buildpack + stack: cflinuxfs4 instances: 1 disk_quota: 1G routes: From f6cc141f5810f1dde78db02810180d4d7e7b1e5a Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Fri, 28 Apr 2023 16:03:33 -0400 Subject: [PATCH 17/51] Switch cg-egress-proxy back to main branch --- .github/actions/deploy-proxy/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/deploy-proxy/action.yml b/.github/actions/deploy-proxy/action.yml index c07a1c03f..13bdc494f 100644 --- a/.github/actions/deploy-proxy/action.yml +++ b/.github/actions/deploy-proxy/action.yml @@ -12,7 +12,7 @@ inputs: default: https://github.com/GSA-TTS/cg-egress-proxy.git proxy_version: description: git ref to be deployed - default: cflinuxfs4-deploy + default: main runs: using: composite steps: From a46b541cedb4f554650d740b4c00963364a92f1a Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Fri, 28 Apr 2023 17:02:17 -0400 Subject: [PATCH 18/51] Update Run Book added: * info on relationship to SSPP * tables to check for audit logs * how to create and update DNS records for notify.gov --- docs/run-book.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/run-book.md b/docs/run-book.md index 822067977..f93114a99 100644 --- a/docs/run-book.md +++ b/docs/run-book.md @@ -1,12 +1,16 @@ Run Book ======== -Policies and Procedures needed before and during US Notify Operations +Policies and Procedures needed before and during US Notify Operations. Many of these policies are taken from the U.S. Notify System Security & Privacy Plan (SSPP). + +Any changes to policies and procedures defined both here and in the SSPP must be kept in sync, and should be done collaboratively with the System ISSO and ISSM to ensure +that the security of the system is maintained. 1. [Alerts, Notifications, Monitoring](#alerts) 1. [Restaging Apps](#restaging-apps) 1. [Smoke-testing the App](#smoke-testing) 1. [Configuration Management](#cm) +1. [DNS Changes](#dns) 1. [Known Gotchas](#gotcha) 1. [User Account Management](#ac) 1. [SMS Phone Number Management](#phone-numbers) @@ -19,6 +23,12 @@ Operational alerts are posted to the [#pb-notify-alerts](https://gsa-tts.slack.c [Cloud.gov Logging](https://logs.fr.cloud.gov/) is used to view and search application and platform logs. +In addition to the application logs, there are several tables in the application that store useful information for audit logging purposes: + +* `events` +* the various `*_history` tables + + ## Restaging Apps Our apps must be restaged whenever cloud.gov releases updates to buildpacks. Cloud.gov will send email notifications whenever buildpack updates affect a deployed app. @@ -103,6 +113,17 @@ US_Notify Administrators are responsible for ensuring that remediations for vuln * Low - 180 days * Informational - 365 days (depending on the analysis of the issue) +## DNS Changes + +U.S. Notify DNS records are maintained within [the 18f/dns repository](https://github.com/18F/dns/blob/main/terraform/notify.gov.tf). To create new DNS records for notify.gov or any subdomains: + +1. Update the `notify.gov.tf` terraform to update or create the new records within Route53 and push the branch to the 18f/dns repository. +1. Open a PR. +1. Verify that the plan output within circleci creates the records that you expect. +1. Request a PR review from the 18F/tts-tech-portfolio team +1. Once the PR is approved and merged, verify that the apply step happened correctly within [CircleCI](https://app.circleci.com/pipelines/github/18F/dns) + + ## Known Gotchas ### SSB Service Bindings are failing From 240d84b933ae559052fd3dbf42ea747dd4a92aee Mon Sep 17 00:00:00 2001 From: stvnrlly Date: Mon, 1 May 2023 21:40:36 -0400 Subject: [PATCH 19/51] =?UTF-8?q?update=20werkzeug=20&=20flask=20?= =?UTF-8?q?=F0=9F=A4=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Pipfile | 6 +- Pipfile.lock | 157 ++++++++++++++++++++++++++------------------------- 2 files changed, 82 insertions(+), 81 deletions(-) diff --git a/Pipfile b/Pipfile index b896c7240..ec6f0f07b 100644 --- a/Pipfile +++ b/Pipfile @@ -15,7 +15,7 @@ bcrypt = "==3.2.2" beautifulsoup4 = "==4.11.1" billiard = "==3.6.4.0" bleach = "==4.1.0" -blinker = "==1.4" +blinker = "~=1.4" boto3 = "==1.23.8" botocore = "==1.26.8" cachetools = "==5.1.0" @@ -35,7 +35,7 @@ dnspython = "==2.2.1" docopt = "==0.6.2" docutils = "==0.16" eventlet = "==0.33.1" -flask = "~=2.2" +flask = "~=2.3" flask-bcrypt = "==1.0.1" flask-marshmallow = "==0.14.0" flask-migrate = "==3.1.0" @@ -54,7 +54,7 @@ psycopg2-binary = "==2.9.3" pyjwt = "==2.4.0" python-dotenv = "==0.20.0" sqlalchemy = "==1.4.40" -werkzeug = "~=2.2" +werkzeug = "~=2.3" # gds metrics packages prometheus-client = "==0.14.1" gds-metrics = {version = "==0.2.4", ref = "6f1840a57b6fb1ee40b7e84f2f18ec229de8aa72", git = "https://github.com/alphagov/gds_metrics_python.git"} diff --git a/Pipfile.lock b/Pipfile.lock index 0f6796610..75008054f 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "f99ef7d5dbcae426e1dc5512454ea13d352b3259524b144c55bf2ae135102215" + "sha256": "7dd2aec17c3f7bb4a1f228c5319258e415ebd4d75be75b86119b8d73addef675" }, "pipfile-spec": 6, "requires": { @@ -115,10 +115,11 @@ }, "blinker": { "hashes": [ - "sha256:471aee25f3992bd325afa3772f1063dbdbbca947a041b8b89466dc00d606f8b6" + "sha256:4afd3de66ef3a9f8067559fb7a1cbe555c17dcbe15971b05d1b625c3e7abe213", + "sha256:c3d739772abb7bc2860abf5f2ec284223d9ad5c76da018234f6f50d6f31ab1f0" ], "index": "pypi", - "version": "==1.4" + "version": "==1.6.2" }, "boto3": { "hashes": [ @@ -349,11 +350,11 @@ }, "flask": { "hashes": [ - "sha256:13f6329ddbfff11340939cd11919daf150a01358ded4b7e81c03c055dfecb559", - "sha256:77504c4c097f56ac5f29b00f9009213010cf9d2923a288c0e0564a5db2bb53d6" + "sha256:77fd4e1249d8c9923de34907236b747ced06e5467ecac1a7bb7115ae0e9670b0", + "sha256:8c2f9abd47a9e8df7f0c3f091ce9497d011dc3b31effcf4c85a6e2b50f4114ef" ], "index": "pypi", - "version": "==2.2.4" + "version": "==2.3.2" }, "flask-bcrypt": { "hashes": [ @@ -828,10 +829,10 @@ }, "phonenumbers": { "hashes": [ - "sha256:421b69fd6d6650372000a6c47ab5b5c5d7b438b33f7b317739e728eff1ec1886", - "sha256:fe071b8324473e72a54b52e602d059c15b999ec9900fff9e42c01b422aeca662" + "sha256:107469114fd297258a485bdf8238d0522cb392db1257faf2bf23384ecbdb0e8a", + "sha256:3e3274d88cab3609b55ff5b93417075dbca2d13064f103fbf562e0ea1dda0f9a" ], - "version": "==8.13.10" + "version": "==8.13.11" }, "prometheus-client": { "hashes": [ @@ -1061,11 +1062,11 @@ }, "requests": { "hashes": [ - "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa", - "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf" + "sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b", + "sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.2" + "markers": "python_version >= '3.7'", + "version": "==2.29.0" }, "rfc3339-validator": { "hashes": [ @@ -1267,11 +1268,11 @@ }, "werkzeug": { "hashes": [ - "sha256:340335057f72974d9281dbaf52c8090a9f9a59ba304ae814bf0656e6559c0020", - "sha256:3b6b46926d052b8ebca97c4dc73c12e47bdd07d57ab0600c039c3155450227bc" + "sha256:4866679a0722de00796a74086238bb3b98d90f423f05de039abb09315487254a", + "sha256:a987caf1092edc7523edb139edb20c70571c4a8d5eed02e0b547b4739174d091" ], "index": "pypi", - "version": "==2.3.0" + "version": "==2.3.3" }, "wrapt": { "hashes": [ @@ -1484,60 +1485,60 @@ "toml" ], "hashes": [ - "sha256:06ddd9c0249a0546997fdda5a30fbcb40f23926df0a874a60a8a185bc3a87d93", - "sha256:0743b0035d4b0e32bc1df5de70fba3059662ace5b9a2a86a9f894cfe66569013", - "sha256:0f3736a5d34e091b0a611964c6262fd68ca4363df56185902528f0b75dbb9c1f", - "sha256:1127b16220f7bfb3f1049ed4a62d26d81970a723544e8252db0efde853268e21", - "sha256:172db976ae6327ed4728e2507daf8a4de73c7cc89796483e0a9198fd2e47b462", - "sha256:182eb9ac3f2b4874a1f41b78b87db20b66da6b9cdc32737fbbf4fea0c35b23fc", - "sha256:1bb1e77a9a311346294621be905ea8a2c30d3ad371fc15bb72e98bfcfae532df", - "sha256:1fd78b911aea9cec3b7e1e2622c8018d51c0d2bbcf8faaf53c2497eb114911c1", - "sha256:20d1a2a76bb4eb00e4d36b9699f9b7aba93271c9c29220ad4c6a9581a0320235", - "sha256:21b154aba06df42e4b96fc915512ab39595105f6c483991287021ed95776d934", - "sha256:2c2e58e45fe53fab81f85474e5d4d226eeab0f27b45aa062856c89389da2f0d9", - "sha256:2c3b2803e730dc2797a017335827e9da6da0e84c745ce0f552e66400abdfb9a1", - "sha256:3146b8e16fa60427e03884301bf8209221f5761ac754ee6b267642a2fd354c48", - "sha256:344e714bd0fe921fc72d97404ebbdbf9127bac0ca1ff66d7b79efc143cf7c0c4", - "sha256:387065e420aed3c71b61af7e82c7b6bc1c592f7e3c7a66e9f78dd178699da4fe", - "sha256:3f04becd4fcda03c0160d0da9c8f0c246bc78f2f7af0feea1ec0930e7c93fa4a", - "sha256:4a42e1eff0ca9a7cb7dc9ecda41dfc7cbc17cb1d02117214be0561bd1134772b", - "sha256:4ea748802cc0de4de92ef8244dd84ffd793bd2e7be784cd8394d557a3c751e21", - "sha256:55416d7385774285b6e2a5feca0af9652f7f444a4fa3d29d8ab052fafef9d00d", - "sha256:5d0391fb4cfc171ce40437f67eb050a340fdbd0f9f49d6353a387f1b7f9dd4fa", - "sha256:63cdeaac4ae85a179a8d6bc09b77b564c096250d759eed343a89d91bce8b6367", - "sha256:72fcae5bcac3333a4cf3b8f34eec99cea1187acd55af723bcbd559adfdcb5535", - "sha256:7c4ed4e9f3b123aa403ab424430b426a1992e6f4c8fd3cb56ea520446e04d152", - "sha256:83957d349838a636e768251c7e9979e899a569794b44c3728eaebd11d848e58e", - "sha256:87ecc7c9a1a9f912e306997ffee020297ccb5ea388421fe62a2a02747e4d5539", - "sha256:8f69770f5ca1994cb32c38965e95f57504d3aea96b6c024624fdd5bb1aa494a1", - "sha256:8f6c930fd70d91ddee53194e93029e3ef2aabe26725aa3c2753df057e296b925", - "sha256:965ee3e782c7892befc25575fa171b521d33798132692df428a09efacaffe8d0", - "sha256:974bc90d6f6c1e59ceb1516ab00cf1cdfbb2e555795d49fa9571d611f449bcb2", - "sha256:981b4df72c93e3bc04478153df516d385317628bd9c10be699c93c26ddcca8ab", - "sha256:aa784405f0c640940595fa0f14064d8e84aff0b0f762fa18393e2760a2cf5841", - "sha256:ae7863a1d8db6a014b6f2ff9c1582ab1aad55a6d25bac19710a8df68921b6e30", - "sha256:aeae2aa38395b18106e552833f2a50c27ea0000122bde421c31d11ed7e6f9c91", - "sha256:b2317d5ed777bf5a033e83d4f1389fd4ef045763141d8f10eb09a7035cee774c", - "sha256:be19931a8dcbe6ab464f3339966856996b12a00f9fe53f346ab3be872d03e257", - "sha256:be9824c1c874b73b96288c6d3de793bf7f3a597770205068c6163ea1f326e8b9", - "sha256:c0045f8f23a5fb30b2eb3b8a83664d8dc4fb58faddf8155d7109166adb9f2040", - "sha256:c86bd45d1659b1ae3d0ba1909326b03598affbc9ed71520e0ff8c31a993ad911", - "sha256:ca0f34363e2634deffd390a0fef1aa99168ae9ed2af01af4a1f5865e362f8623", - "sha256:d298c2815fa4891edd9abe5ad6e6cb4207104c7dd9fd13aea3fdebf6f9b91259", - "sha256:d2a3a6146fe9319926e1d477842ca2a63fe99af5ae690b1f5c11e6af074a6b5c", - "sha256:dfd393094cd82ceb9b40df4c77976015a314b267d498268a076e940fe7be6b79", - "sha256:e58c0d41d336569d63d1b113bd573db8363bc4146f39444125b7f8060e4e04f5", - "sha256:ea3f5bc91d7d457da7d48c7a732beaf79d0c8131df3ab278e6bba6297e23c6c4", - "sha256:ea53151d87c52e98133eb8ac78f1206498c015849662ca8dc246255265d9c3c4", - "sha256:eb0edc3ce9760d2f21637766c3aa04822030e7451981ce569a1b3456b7053f22", - "sha256:f649dd53833b495c3ebd04d6eec58479454a1784987af8afb77540d6c1767abd", - "sha256:f760073fcf8f3d6933178d67754f4f2d4e924e321f4bb0dcef0424ca0215eba1", - "sha256:fa546d66639d69aa967bf08156eb8c9d0cd6f6de84be9e8c9819f52ad499c910", - "sha256:fd214917cabdd6f673a29d708574e9fbdb892cb77eb426d0eae3490d95ca7859", - "sha256:fff5aaa6becf2c6a1699ae6a39e2e6fb0672c2d42eca8eb0cafa91cf2e9bd312" + "sha256:0342a28617e63ad15d96dca0f7ae9479a37b7d8a295f749c14f3436ea59fdcb3", + "sha256:066b44897c493e0dcbc9e6a6d9f8bbb6607ef82367cf6810d387c09f0cd4fe9a", + "sha256:10b15394c13544fce02382360cab54e51a9e0fd1bd61ae9ce012c0d1e103c813", + "sha256:12580845917b1e59f8a1c2ffa6af6d0908cb39220f3019e36c110c943dc875b0", + "sha256:156192e5fd3dbbcb11cd777cc469cf010a294f4c736a2b2c891c77618cb1379a", + "sha256:1637253b11a18f453e34013c665d8bf15904c9e3c44fbda34c643fbdc9d452cd", + "sha256:292300f76440651529b8ceec283a9370532f4ecba9ad67d120617021bb5ef139", + "sha256:30dcaf05adfa69c2a7b9f7dfd9f60bc8e36b282d7ed25c308ef9e114de7fc23b", + "sha256:338aa9d9883aaaad53695cb14ccdeb36d4060485bb9388446330bef9c361c252", + "sha256:373ea34dca98f2fdb3e5cb33d83b6d801007a8074f992b80311fc589d3e6b790", + "sha256:38c0a497a000d50491055805313ed83ddba069353d102ece8aef5d11b5faf045", + "sha256:40cc0f91c6cde033da493227797be2826cbf8f388eaa36a0271a97a332bfd7ce", + "sha256:4436cc9ba5414c2c998eaedee5343f49c02ca93b21769c5fdfa4f9d799e84200", + "sha256:509ecd8334c380000d259dc66feb191dd0a93b21f2453faa75f7f9cdcefc0718", + "sha256:5c587f52c81211d4530fa6857884d37f514bcf9453bdeee0ff93eaaf906a5c1b", + "sha256:5f3671662dc4b422b15776cdca89c041a6349b4864a43aa2350b6b0b03bbcc7f", + "sha256:6599bf92f33ab041e36e06d25890afbdf12078aacfe1f1d08c713906e49a3fe5", + "sha256:6e8a95f243d01ba572341c52f89f3acb98a3b6d1d5d830efba86033dd3687ade", + "sha256:706ec567267c96717ab9363904d846ec009a48d5f832140b6ad08aad3791b1f5", + "sha256:780551e47d62095e088f251f5db428473c26db7829884323e56d9c0c3118791a", + "sha256:7ff8f3fb38233035028dbc93715551d81eadc110199e14bbbfa01c5c4a43f8d8", + "sha256:828189fcdda99aae0d6bf718ea766b2e715eabc1868670a0a07bf8404bf58c33", + "sha256:857abe2fa6a4973f8663e039ead8d22215d31db613ace76e4a98f52ec919068e", + "sha256:883123d0bbe1c136f76b56276074b0c79b5817dd4238097ffa64ac67257f4b6c", + "sha256:8877d9b437b35a85c18e3c6499b23674684bf690f5d96c1006a1ef61f9fdf0f3", + "sha256:8e575a59315a91ccd00c7757127f6b2488c2f914096077c745c2f1ba5b8c0969", + "sha256:97072cc90f1009386c8a5b7de9d4fc1a9f91ba5ef2146c55c1f005e7b5c5e068", + "sha256:9a22cbb5ede6fade0482111fa7f01115ff04039795d7092ed0db43522431b4f2", + "sha256:a063aad9f7b4c9f9da7b2550eae0a582ffc7623dca1c925e50c3fbde7a579771", + "sha256:a08c7401d0b24e8c2982f4e307124b671c6736d40d1c39e09d7a8687bddf83ed", + "sha256:a0b273fe6dc655b110e8dc89b8ec7f1a778d78c9fd9b4bda7c384c8906072212", + "sha256:a2b3b05e22a77bb0ae1a3125126a4e08535961c946b62f30985535ed40e26614", + "sha256:a66e055254a26c82aead7ff420d9fa8dc2da10c82679ea850d8feebf11074d88", + "sha256:aa387bd7489f3e1787ff82068b295bcaafbf6f79c3dad3cbc82ef88ce3f48ad3", + "sha256:ae453f655640157d76209f42c62c64c4d4f2c7f97256d3567e3b439bd5c9b06c", + "sha256:b5016e331b75310610c2cf955d9f58a9749943ed5f7b8cfc0bb89c6134ab0a84", + "sha256:b9a4ee55174b04f6af539218f9f8083140f61a46eabcaa4234f3c2a452c4ed11", + "sha256:bd3b4b8175c1db502adf209d06136c000df4d245105c8839e9d0be71c94aefe1", + "sha256:bebea5f5ed41f618797ce3ffb4606c64a5de92e9c3f26d26c2e0aae292f015c1", + "sha256:c10fbc8a64aa0f3ed136b0b086b6b577bc64d67d5581acd7cc129af52654384e", + "sha256:c2c41c1b1866b670573657d584de413df701f482574bad7e28214a2362cb1fd1", + "sha256:cf97ed82ca986e5c637ea286ba2793c85325b30f869bf64d3009ccc1a31ae3fd", + "sha256:d1f25ee9de21a39b3a8516f2c5feb8de248f17da7eead089c2e04aa097936b47", + "sha256:d2fbc2a127e857d2f8898aaabcc34c37771bf78a4d5e17d3e1f5c30cd0cbc62a", + "sha256:dc945064a8783b86fcce9a0a705abd7db2117d95e340df8a4333f00be5efb64c", + "sha256:ddc5a54edb653e9e215f75de377354e2455376f416c4378e1d43b08ec50acc31", + "sha256:e8834e5f17d89e05697c3c043d3e58a8b19682bf365048837383abfe39adaed5", + "sha256:ef9659d1cda9ce9ac9585c045aaa1e59223b143f2407db0eaee0b61a4f266fb6", + "sha256:f6f5cab2d7f0c12f8187a376cc6582c477d2df91d63f75341307fcdcb5d60303", + "sha256:f81c9b4bd8aa747d417407a7f6f0b1469a43b36a85748145e144ac4e8d303cb5", + "sha256:f99ef080288f09ffc687423b8d60978cf3a465d3f404a18d1a05474bd8575a47" ], "markers": "python_version >= '3.7'", - "version": "==7.2.3" + "version": "==7.2.5" }, "cryptography": { "hashes": [ @@ -2074,11 +2075,11 @@ }, "requests": { "hashes": [ - "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa", - "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf" + "sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b", + "sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059" ], - "markers": "python_version >= '3.7' and python_version < '4'", - "version": "==2.28.2" + "markers": "python_version >= '3.7'", + "version": "==2.29.0" }, "requests-mock": { "hashes": [ @@ -2105,11 +2106,11 @@ }, "rich": { "hashes": [ - "sha256:22b74cae0278fd5086ff44144d3813be1cedc9115bdfabbfefd86400cb88b20a", - "sha256:b5d573e13605423ec80bdd0cd5f8541f7844a0e71a13f74cf454ccb2f490708b" + "sha256:2d11b9b8dd03868f09b4fffadc84a6a8cda574e40dc90821bd845720ebb8e89c", + "sha256:69cdf53799e63f38b95b9bf9c875f8c90e78dd62b2f00c13a911c7a3b9fa4704" ], "markers": "python_full_version >= '3.7.0'", - "version": "==13.3.4" + "version": "==13.3.5" }, "s3transfer": { "hashes": [ @@ -2190,11 +2191,11 @@ }, "werkzeug": { "hashes": [ - "sha256:340335057f72974d9281dbaf52c8090a9f9a59ba304ae814bf0656e6559c0020", - "sha256:3b6b46926d052b8ebca97c4dc73c12e47bdd07d57ab0600c039c3155450227bc" + "sha256:4866679a0722de00796a74086238bb3b98d90f423f05de039abb09315487254a", + "sha256:a987caf1092edc7523edb139edb20c70571c4a8d5eed02e0b547b4739174d091" ], "index": "pypi", - "version": "==2.3.0" + "version": "==2.3.3" }, "xmltodict": { "hashes": [ From 881f4794170cdd957bdeaa1ea8aaf181533737d6 Mon Sep 17 00:00:00 2001 From: Steven Reilly Date: Tue, 2 May 2023 10:25:02 -0400 Subject: [PATCH 20/51] Small doc updates (#253) --- README.md | 11 +++++++++++ docs/message-sending-path.md | 15 +++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 docs/message-sending-path.md diff --git a/README.md b/README.md index 34e367374..9ccbf6f8f 100644 --- a/README.md +++ b/README.md @@ -44,10 +44,15 @@ Our other repositories are: ### Common steps +On MacOS, using [Homebrew](https://brew.sh/) for package management is highly recommended. This helps avoid some known installation issues. + 1. Install pre-requisites for setup: * [jq](https://stedolan.github.io/jq/): `brew install jq` * [terraform](https://www.terraform.io/): `brew install terraform` or `brew install tfenv` and use `tfenv` to install `terraform ~> 1.4.0` * [cf-cli@8](https://docs.cloudfoundry.org/cf-cli/install-go-cli.html): `brew install cloudfoundry/tap/cf-cli@8` + * [postgresql](https://www.postgresql.org/): `brew install postgresql@15` (Homebrew requires a version pin, but any recent version will work) + * [redis](https://redis.io/): `brew install redis` + * [pyenv](https://github.com/pyenv/pyenv): `brew install pyenv` 1. [Log into cloud.gov](https://cloud.gov/docs/getting-started/setup/#set-up-the-command-line): `cf login -a api.fr.cloud.gov --sso` 1. Ensure you have access to the `notify-local-dev` and `notify-staging` spaces in cloud.gov 1. Run the development terraform with: @@ -111,6 +116,12 @@ If you're working in VS Code, you can also leverage Docker for a containerized d NOTE: when you change .env in the future, you'll need to rebuild the devcontainer for the change to take effect. VS Code _should_ detect the change and prompt you with a toast notification during a cached build. If not, you can find a manual rebuild in command pallette or just `docker rm` the notifications-api container. +### Known installation issues + +On M1 Macs, if you get a `fatal error: 'Python.h' file not found` message, try a different method of installing Python. Installation via `pyenv` is known to work. + +A direct installation of PostgreSQL will not put the `createdb` command on your `$PATH`. It can be added there in your shell startup script, or a Homebrew-managed installation of PostgreSQL will take care of it. + ## License && public domain Work through [commit `e604385`](https://github.com/GSA/notifications-api/commit/e604385e0cf4c2ab8c6451b7120ceb196cce21b5) is licensed by the UK government under the MIT license. Work after that commit is in the worldwide public domain. See [LICENSE.md](./LICENSE.md) for more information. diff --git a/docs/message-sending-path.md b/docs/message-sending-path.md new file mode 100644 index 000000000..4d3774756 --- /dev/null +++ b/docs/message-sending-path.md @@ -0,0 +1,15 @@ +# How messages are queued and sent + +There are several ways for notifications to come into the API. + +- Messages sent through the API enter through `app/notifications/post_notifications.py` +- One-off messages sent from the UI enter through `create_one_off_notification` in `app/service/rest.py` +- CSV uploads enter through `app/job/rest.py` + +API messages and one-off UI messages come in one at a time, and take slightly-separate routes +that both end up at `persist_notification`, which writes to the database, and `provider_tasks.deliver_sms`, +which enqueues the sending. + +For CSV uploads, the CSV is first stored in S3 and queued as a `Job`. When the job runs, it iterates +through the rows, running `process_job.save_sms` to send notifications through `persist_notification` and +`provider_tasks.deliver_sms`. From 3fb113a83e5cac3673ae7c53bc1e39dd7596a3b1 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 4 May 2023 07:56:24 -0700 Subject: [PATCH 21/51] notify-152 sms delivery receipts --- app/__init__.py | 2 + app/celery/provider_tasks.py | 33 ++++++++- app/clients/cloudwatch/__init__.py | 25 +++++++ app/clients/cloudwatch/aws_cloudwatch.py | 89 ++++++++++++++++++++++++ app/config.py | 2 + app/dao/notifications_dao.py | 4 +- app/delivery/send_to_providers.py | 6 +- tests/app/celery/test_provider_tasks.py | 1 + tests/app/clients/test_aws_cloudwatch.py | 79 +++++++++++++++++++++ tests/app/test_config.py | 3 +- 10 files changed, 237 insertions(+), 7 deletions(-) create mode 100644 app/clients/cloudwatch/__init__.py create mode 100644 app/clients/cloudwatch/aws_cloudwatch.py create mode 100644 tests/app/clients/test_aws_cloudwatch.py diff --git a/app/__init__.py b/app/__init__.py index abadaa315..f39be3c22 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -29,6 +29,7 @@ from werkzeug.exceptions import HTTPException as WerkzeugHTTPException from werkzeug.local import LocalProxy from app.clients import NotificationProviderClients +from app.clients.cloudwatch.aws_cloudwatch import AwsCloudwatchClient from app.clients.document_download import DocumentDownloadClient from app.clients.email.aws_ses import AwsSesClient from app.clients.email.aws_ses_stub import AwsSesStubClient @@ -55,6 +56,7 @@ notify_celery = NotifyCelery() aws_ses_client = AwsSesClient() aws_ses_stub_client = AwsSesStubClient() aws_sns_client = AwsSnsClient() +aws_cloudwatch_client = AwsCloudwatchClient() encryption = Encryption() zendesk_client = ZendeskClient() redis_store = RedisClient() diff --git a/app/celery/provider_tasks.py b/app/celery/provider_tasks.py index a274635ce..bee645095 100644 --- a/app/celery/provider_tasks.py +++ b/app/celery/provider_tasks.py @@ -1,7 +1,11 @@ +from datetime import datetime, timedelta +from zoneinfo import ZoneInfo + from flask import current_app from sqlalchemy.orm.exc import NoResultFound from app import notify_celery +from app.clients.cloudwatch.aws_cloudwatch import AwsCloudwatchClient from app.clients.email import EmailClientNonRetryableException from app.clients.email.aws_ses import AwsSesClientThrottlingSendRateException from app.clients.sms import SmsClientResponseException @@ -10,7 +14,24 @@ from app.dao import notifications_dao from app.dao.notifications_dao import update_notification_status_by_id from app.delivery import send_to_providers from app.exceptions import NotificationTechnicalFailureException -from app.models import NOTIFICATION_TECHNICAL_FAILURE +from app.models import ( + NOTIFICATION_FAILED, + NOTIFICATION_SENT, + NOTIFICATION_TECHNICAL_FAILURE, +) + + +@notify_celery.task(bind=True, name="check_sms_delivery_receipt", max_retries=3, default_retry_delay=300) +def check_sms_delivery_receipt(self, message_id, notification_id): + current_app.logger.warning(f"CHECKING DELIVERY RECEIPT for {message_id} {notification_id}") + cloudwatch_client = AwsCloudwatchClient() + cloudwatch_client.init_app(current_app) + status, provider_response = cloudwatch_client.check_sms(message_id, notification_id) + if status == 'success': + status = NOTIFICATION_SENT + else: + status = NOTIFICATION_FAILED + update_notification_status_by_id(notification_id, status, provider_response=provider_response) @notify_celery.task(bind=True, name="deliver_sms", max_retries=48, default_retry_delay=300) @@ -20,7 +41,15 @@ def deliver_sms(self, notification_id): notification = notifications_dao.get_notification_by_id(notification_id) if not notification: raise NoResultFound() - send_to_providers.send_sms_to_provider(notification) + message_id = send_to_providers.send_sms_to_provider(notification) + # We have to put it in the default US/Eastern timezone. From zones west of there, the delay + # will be ignored and it will fire immediately (although this probably only affects developer testing) + my_eta = datetime.now(ZoneInfo('US/Eastern')) + timedelta(seconds=300) + check_sms_delivery_receipt.apply_async( + [message_id, notification_id], + eta=my_eta, + queue=QueueNames.CHECK_SMS + ) except Exception as e: if isinstance(e, SmsClientResponseException): current_app.logger.warning( diff --git a/app/clients/cloudwatch/__init__.py b/app/clients/cloudwatch/__init__.py new file mode 100644 index 000000000..31c79f889 --- /dev/null +++ b/app/clients/cloudwatch/__init__.py @@ -0,0 +1,25 @@ +from app.clients import Client, ClientException + + +class CloudwatchClientResponseException(ClientException): + """ + Base Exception for SmsClientsResponses + """ + + def __init__(self, message): + self.message = message + + def __str__(self): + return "Message {}".format(self.message) + + +class CloudwatchClient(Client): + """ + Base Cloudwatch client for checking sms. + """ + + def init_app(self, *args, **kwargs): + raise NotImplementedError("TODO Need to implement.") + + def check_sms(self, *args, **kwargs): + raise NotImplementedError("TODO Need to implement.") diff --git a/app/clients/cloudwatch/aws_cloudwatch.py b/app/clients/cloudwatch/aws_cloudwatch.py new file mode 100644 index 000000000..847b39bf9 --- /dev/null +++ b/app/clients/cloudwatch/aws_cloudwatch.py @@ -0,0 +1,89 @@ +import json +import os +import re +import time + +from boto3 import client + +from app.clients.cloudwatch import CloudwatchClient +from app.cloudfoundry_config import cloud_config + + +class AwsCloudwatchClient(CloudwatchClient): + """ + AwsCloudwatch cloudwatch client + """ + + def init_app(self, current_app, *args, **kwargs): + self._client = client( + "logs", + region_name=cloud_config.sns_region, + aws_access_key_id=cloud_config.sns_access_key, + aws_secret_access_key=cloud_config.sns_secret_key + ) + super(CloudwatchClient, self).__init__(*args, **kwargs) + self.current_app = current_app + self._valid_sender_regex = re.compile(r"^\+?\d{5,14}$") + + @property + def name(self): + return 'cloudwatch' + + def _get_all_logs(self, my_filter, log_group_name): + now = round(time.time() * 1000) + beginning = now - 30 * 60 * 1000 + + next_token = None + all_log_events = [] + while True: + if next_token: + response = self._client.filter_log_events( + logGroupName=log_group_name, + filterPattern=my_filter, + nextToken=next_token, + startTime=beginning, + endTime=now + ) + else: + response = self._client.filter_log_events( + logGroupName=log_group_name, + filterPattern=my_filter, + startTime=beginning, + endTime=now + ) + log_events = response.get('events', []) + all_log_events.extend(log_events) + next_token = response.get('nextToken') + if not next_token: + break + return all_log_events + + def check_sms(self, message_id, notification_id): + # TODO presumably there is a better way to get the account number + account_number = os.getenv("SES_DOMAIN_ARN") + account_number = account_number.replace('arn:aws:ses:us-west-2:', '') + account_number = account_number.split(":") + account_number = account_number[0] + + log_group_name = f'sns/us-west-2/{account_number}/DirectPublishToPhoneNumber' + filter_pattern = '{$.notification.messageId="XXXXX"}' + filter_pattern = filter_pattern.replace("XXXXX", message_id) + all_log_events = self._get_all_logs(filter_pattern, log_group_name) + + self.current_app.logger.warning(f"ALL EVENTS {all_log_events}") + + if all_log_events and len(all_log_events) > 0: + event = all_log_events[0] + self.current_app.logger.warning(f"HERE IS AN EVENT {event} of type {type(event)}") + message = json.loads(event['message']) + self.current_app.logger.warning(f"HERE IS THE message {message}") + return "success", message['delivery']['providerResponse'] + + log_group_name = f'sns/us-west-2/{account_number}/DirectPublishToPhoneNumber/Failure' + all_failed_events = self._get_all_logs(filter_pattern, log_group_name) + if all_failed_events and len(all_failed_events) > 0: + event = all_failed_events[0] + message = json.loads(event['message']) + return "fail", message['delivery']['providerResponse'] + + raise Exception(f'No event found for message_id {message_id}') diff --git a/app/config.py b/app/config.py index 466efcd76..d1762168b 100644 --- a/app/config.py +++ b/app/config.py @@ -13,6 +13,7 @@ class QueueNames(object): PRIORITY = 'priority-tasks' DATABASE = 'database-tasks' SEND_SMS = 'send-sms-tasks' + CHECK_SMS = 'check-sms_tasks' SEND_EMAIL = 'send-email-tasks' RESEARCH_MODE = 'research-mode-tasks' REPORTING = 'reporting-tasks' @@ -33,6 +34,7 @@ class QueueNames(object): QueueNames.PERIODIC, QueueNames.DATABASE, QueueNames.SEND_SMS, + QueueNames.CHECK_SMS, QueueNames.SEND_EMAIL, QueueNames.RESEARCH_MODE, QueueNames.REPORTING, diff --git a/app/dao/notifications_dao.py b/app/dao/notifications_dao.py index d560e61eb..ae8405440 100644 --- a/app/dao/notifications_dao.py +++ b/app/dao/notifications_dao.py @@ -95,7 +95,7 @@ def _update_notification_status(notification, status, provider_response=None): @autocommit -def update_notification_status_by_id(notification_id, status, sent_by=None): +def update_notification_status_by_id(notification_id, status, sent_by=None, provider_response=None): notification = Notification.query.with_for_update().filter(Notification.id == notification_id).first() if not notification: @@ -121,6 +121,8 @@ def update_notification_status_by_id(notification_id, status, sent_by=None): and not country_records_delivery(notification.phone_prefix) ): return None + if provider_response: + notification.provider_response = provider_response if not notification.sent_by and sent_by: notification.sent_by = sent_by return _update_notification_status( diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index db331db43..380ec7b4d 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -38,7 +38,7 @@ from app.serialised_models import SerialisedService, SerialisedTemplate def send_sms_to_provider(notification): service = SerialisedService.from_id(notification.service_id) - + message_id = None if not service.active: technical_failure(notification=notification) return @@ -79,7 +79,7 @@ def send_sms_to_provider(notification): 'international': notification.international, } db.session.close() # no commit needed as no changes to objects have been made above - provider.send_sms(**send_sms_kwargs) + message_id = provider.send_sms(**send_sms_kwargs) except Exception as e: notification.billable_units = template.fragment_count dao_update_notification(notification) @@ -88,6 +88,7 @@ def send_sms_to_provider(notification): else: notification.billable_units = template.fragment_count update_notification_to_sending(notification, provider) + return message_id def send_email_to_provider(notification): @@ -98,7 +99,6 @@ def send_email_to_provider(notification): return if notification.status == 'created': provider = provider_to_use(EMAIL_TYPE, False) - template_dict = SerialisedTemplate.from_id_and_service_id( template_id=notification.template_id, service_id=service.id, version=notification.template_version ).__dict__ diff --git a/tests/app/celery/test_provider_tasks.py b/tests/app/celery/test_provider_tasks.py index 2f241bc24..d4a9070bf 100644 --- a/tests/app/celery/test_provider_tasks.py +++ b/tests/app/celery/test_provider_tasks.py @@ -23,6 +23,7 @@ def test_should_call_send_sms_to_provider_from_deliver_sms_task( sample_notification, mocker): mocker.patch('app.delivery.send_to_providers.send_sms_to_provider') + mocker.patch('app.celery.provider_tasks.check_sms_delivery_receipt') deliver_sms(sample_notification.id) app.delivery.send_to_providers.send_sms_to_provider.assert_called_with(sample_notification) diff --git a/tests/app/clients/test_aws_cloudwatch.py b/tests/app/clients/test_aws_cloudwatch.py new file mode 100644 index 000000000..78faa69ea --- /dev/null +++ b/tests/app/clients/test_aws_cloudwatch.py @@ -0,0 +1,79 @@ +import pytest +from flask import current_app + +from app import aws_cloudwatch_client + + +def test_check_sms_no_event_error_condition(notify_api, mocker): + boto_mock = mocker.patch.object(aws_cloudwatch_client, '_client', create=True) + message_id = 'aaa' + notification_id = 'bbb' + boto_mock.filter_log_events.return_value = [] + with notify_api.app_context(): + aws_cloudwatch_client.init_app(current_app) + with pytest.raises(Exception): + aws_cloudwatch_client.check_sms(message_id, notification_id) + + +def side_effect(filterPattern, logGroupName, startTime, endTime): + if "Failure" in logGroupName and 'fail' in filterPattern: + return { + "events": + [ + { + 'logStreamName': '89db9712-c6d1-49f9-be7c-4caa7ed9efb1', + 'message': '{"delivery":{"destination":"+1661","providerResponse":"Invalid phone number"}}', + 'eventId': '37535432778099870001723210579798865345508698025292922880' + } + ] + } + + elif 'succeed' in filterPattern: + return { + "events": + [ + { + 'logStreamName': '89db9712-c6d1-49f9-be7c-4caa7ed9efb1', + 'timestamp': 1683147017911, + 'message': '{"delivery":{"destination":"+1661","providerResponse":"Phone accepted msg"}}', + 'ingestionTime': 1683147018026, + 'eventId': '37535432778099870001723210579798865345508698025292922880' + } + ] + } + else: + return {"events": []} + + +def test_check_sms_success(notify_api, mocker): + aws_cloudwatch_client.init_app(current_app) + boto_mock = mocker.patch.object(aws_cloudwatch_client, '_client', create=True) + boto_mock.filter_log_events.side_effect = side_effect + message_id = 'succeed' + notification_id = 'ccc' + with notify_api.app_context(): + aws_cloudwatch_client.check_sms(message_id, notification_id) + + # We check the 'success' log group first and if we find the message_id, we are done, so there is only 1 call + assert boto_mock.filter_log_events.call_count == 1 + mock_call = str(boto_mock.filter_log_events.mock_calls[0]) + assert 'Failure' not in mock_call + assert 'succeed' in mock_call + assert 'notification.messageId' in mock_call + + +def test_check_sms_failure(notify_api, mocker): + aws_cloudwatch_client.init_app(current_app) + boto_mock = mocker.patch.object(aws_cloudwatch_client, '_client', create=True) + boto_mock.filter_log_events.side_effect = side_effect + message_id = 'fail' + notification_id = 'bbb' + with notify_api.app_context(): + aws_cloudwatch_client.check_sms(message_id, notification_id) + + # We check the 'success' log group and find nothing, so we then check the 'fail' log group -- two calls. + assert boto_mock.filter_log_events.call_count == 2 + mock_call = str(boto_mock.filter_log_events.mock_calls[1]) + assert 'Failure' in mock_call + assert 'fail' in mock_call + assert 'notification.messageId' in mock_call diff --git a/tests/app/test_config.py b/tests/app/test_config.py index fe2fef296..23d67aafa 100644 --- a/tests/app/test_config.py +++ b/tests/app/test_config.py @@ -4,12 +4,13 @@ from app.config import QueueNames def test_queue_names_all_queues_correct(): # Need to ensure that all_queues() only returns queue names used in API queues = QueueNames.all_queues() - assert len(queues) == 15 + assert len(queues) == 16 assert set([ QueueNames.PRIORITY, QueueNames.PERIODIC, QueueNames.DATABASE, QueueNames.SEND_SMS, + QueueNames.CHECK_SMS, QueueNames.SEND_EMAIL, QueueNames.RESEARCH_MODE, QueueNames.REPORTING, From 7892c52d11c46c6f7079e97dd8a1f9a8eeddb079 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 4 May 2023 08:15:08 -0700 Subject: [PATCH 22/51] fix tests --- app/clients/cloudwatch/aws_cloudwatch.py | 2 +- tests/app/clients/test_aws_cloudwatch.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/clients/cloudwatch/aws_cloudwatch.py b/app/clients/cloudwatch/aws_cloudwatch.py index 847b39bf9..6d5498827 100644 --- a/app/clients/cloudwatch/aws_cloudwatch.py +++ b/app/clients/cloudwatch/aws_cloudwatch.py @@ -59,7 +59,7 @@ class AwsCloudwatchClient(CloudwatchClient): return all_log_events def check_sms(self, message_id, notification_id): - # TODO presumably there is a better way to get the account number + # TODO presumably there is a better way to get the aws account number account_number = os.getenv("SES_DOMAIN_ARN") account_number = account_number.replace('arn:aws:ses:us-west-2:', '') account_number = account_number.split(":") diff --git a/tests/app/clients/test_aws_cloudwatch.py b/tests/app/clients/test_aws_cloudwatch.py index 78faa69ea..38ca50243 100644 --- a/tests/app/clients/test_aws_cloudwatch.py +++ b/tests/app/clients/test_aws_cloudwatch.py @@ -6,6 +6,10 @@ from app import aws_cloudwatch_client def test_check_sms_no_event_error_condition(notify_api, mocker): boto_mock = mocker.patch.object(aws_cloudwatch_client, '_client', create=True) + # TODO + # we do this to get the AWS account number, and it seems like unit tests locally have + # access to the env variables but when we push the PR they do not. Is there a better way to get it? + mocker.patch.dict('os.environ', {"SES_DOMAIN_ARN": "1111:"}) message_id = 'aaa' notification_id = 'bbb' boto_mock.filter_log_events.return_value = [] @@ -49,6 +53,8 @@ def test_check_sms_success(notify_api, mocker): aws_cloudwatch_client.init_app(current_app) boto_mock = mocker.patch.object(aws_cloudwatch_client, '_client', create=True) boto_mock.filter_log_events.side_effect = side_effect + mocker.patch.dict('os.environ', {"SES_DOMAIN_ARN": "1111:"}) + message_id = 'succeed' notification_id = 'ccc' with notify_api.app_context(): @@ -66,6 +72,8 @@ def test_check_sms_failure(notify_api, mocker): aws_cloudwatch_client.init_app(current_app) boto_mock = mocker.patch.object(aws_cloudwatch_client, '_client', create=True) boto_mock.filter_log_events.side_effect = side_effect + mocker.patch.dict('os.environ', {"SES_DOMAIN_ARN": "1111:"}) + message_id = 'fail' notification_id = 'bbb' with notify_api.app_context(): From 0806e967455133dde5286fd9b9bc9cd0aa189cb3 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 4 May 2023 08:21:53 -0700 Subject: [PATCH 23/51] fix dependencies --- Pipfile.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 75008054f..55c6b7e39 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -769,7 +769,7 @@ "notifications-utils": { "editable": true, "git": "https://github.com/GSA/notifications-utils.git", - "ref": "c7a85c4d1e8f975d349c1555f416ae20f28a2ce1" + "ref": "1492349e323df749771494f13e3eb268ee402a65" }, "numpy": { "hashes": [ @@ -1062,11 +1062,11 @@ }, "requests": { "hashes": [ - "sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b", - "sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059" + "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", + "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" ], "markers": "python_version >= '3.7'", - "version": "==2.29.0" + "version": "==2.30.0" }, "rfc3339-validator": { "hashes": [ @@ -2075,11 +2075,11 @@ }, "requests": { "hashes": [ - "sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b", - "sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059" + "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", + "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" ], "markers": "python_version >= '3.7'", - "version": "==2.29.0" + "version": "==2.30.0" }, "requests-mock": { "hashes": [ From 70b58f50ac53776d4dd4ba8fe1d9d87fd006122a Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 4 May 2023 08:40:16 -0700 Subject: [PATCH 24/51] add comments --- app/clients/cloudwatch/aws_cloudwatch.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/clients/cloudwatch/aws_cloudwatch.py b/app/clients/cloudwatch/aws_cloudwatch.py index 6d5498827..57960c40a 100644 --- a/app/clients/cloudwatch/aws_cloudwatch.py +++ b/app/clients/cloudwatch/aws_cloudwatch.py @@ -11,7 +11,7 @@ from app.cloudfoundry_config import cloud_config class AwsCloudwatchClient(CloudwatchClient): """ - AwsCloudwatch cloudwatch client + This client is responsible for retrieving sms delivery receipts from cloudwatch. """ def init_app(self, current_app, *args, **kwargs): @@ -30,6 +30,8 @@ class AwsCloudwatchClient(CloudwatchClient): return 'cloudwatch' def _get_all_logs(self, my_filter, log_group_name): + + # Check all events in the last 30 minutes now = round(time.time() * 1000) beginning = now - 30 * 60 * 1000 @@ -59,6 +61,12 @@ class AwsCloudwatchClient(CloudwatchClient): return all_log_events def check_sms(self, message_id, notification_id): + """ + Go through the cloudwatch logs, filtering by message id. Check the success logs first. If we find + the message id there, we are done. Otherwise check the failure logs. If we don't find the message + in the success or failure logs, raise an exception. This method is called on a five minute delay, + which is presumably enough time for the cloudwatch log to be populated. + """ # TODO presumably there is a better way to get the aws account number account_number = os.getenv("SES_DOMAIN_ARN") account_number = account_number.replace('arn:aws:ses:us-west-2:', '') @@ -70,13 +78,9 @@ class AwsCloudwatchClient(CloudwatchClient): filter_pattern = filter_pattern.replace("XXXXX", message_id) all_log_events = self._get_all_logs(filter_pattern, log_group_name) - self.current_app.logger.warning(f"ALL EVENTS {all_log_events}") - if all_log_events and len(all_log_events) > 0: event = all_log_events[0] - self.current_app.logger.warning(f"HERE IS AN EVENT {event} of type {type(event)}") message = json.loads(event['message']) - self.current_app.logger.warning(f"HERE IS THE message {message}") return "success", message['delivery']['providerResponse'] log_group_name = f'sns/us-west-2/{account_number}/DirectPublishToPhoneNumber/Failure' @@ -86,4 +90,4 @@ class AwsCloudwatchClient(CloudwatchClient): message = json.loads(event['message']) return "fail", message['delivery']['providerResponse'] - raise Exception(f'No event found for message_id {message_id}') + raise Exception(f'No event found for message_id {message_id} notification_id {notification_id}') From 2a2dfbd0f03422077901c49bbf196710d9eb5d43 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Thu, 4 May 2023 13:00:12 -0400 Subject: [PATCH 25/51] Specify Production in new relic app name --- docs/run-book.md | 2 +- newrelic.ini | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/run-book.md b/docs/run-book.md index f93114a99..db47e8496 100644 --- a/docs/run-book.md +++ b/docs/run-book.md @@ -19,7 +19,7 @@ that the security of the system is maintained. Operational alerts are posted to the [#pb-notify-alerts](https://gsa-tts.slack.com/archives/C04U9BGHUDB) Slack channel. Please join this channel and enable push notifications for all messages whenever you are on call. -[NewRelic](https://one.newrelic.com/) is being used for monitoring the application. +[NewRelic](https://one.newrelic.com/) is being used for monitoring the application. [NewRelic Dashboard](https://onenr.io/08wokrnrvwx) can be filtered by environment and API, Admin, or Both. [Cloud.gov Logging](https://logs.fr.cloud.gov/) is used to view and search application and platform logs. diff --git a/newrelic.ini b/newrelic.ini index 394ae3c1a..5f5fec1e7 100644 --- a/newrelic.ini +++ b/newrelic.ini @@ -216,7 +216,7 @@ app_name = us-notify-api (Demo) monitor_mode = true [newrelic:production] -app_name = us-notify-api +app_name = us-notify-api (Production) monitor_mode = true # --------------------------------------------------------------------------- From b59e4df06d52d1d7faf49d69cccae6e3f02fbde3 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Fri, 5 May 2023 08:09:15 -0700 Subject: [PATCH 26/51] code review feedback --- app/__init__.py | 1 + app/celery/provider_tasks.py | 19 +++++++++++------- app/clients/cloudwatch/__init__.py | 25 ------------------------ app/clients/cloudwatch/aws_cloudwatch.py | 16 +++++---------- app/cloudfoundry_config.py | 9 +++++++++ 5 files changed, 27 insertions(+), 43 deletions(-) diff --git a/app/__init__.py b/app/__init__.py index f39be3c22..81e5c055a 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -98,6 +98,7 @@ def create_app(application): aws_ses_stub_client.init_app( stub_url=application.config['SES_STUB_URL'] ) + aws_cloudwatch_client.init_app(application) # If a stub url is provided for SES, then use the stub client rather than the real SES boto client email_clients = [aws_ses_stub_client] if application.config['SES_STUB_URL'] else [aws_ses_client] notification_provider_clients.init_app( diff --git a/app/celery/provider_tasks.py b/app/celery/provider_tasks.py index bee645095..1fe30c92c 100644 --- a/app/celery/provider_tasks.py +++ b/app/celery/provider_tasks.py @@ -4,8 +4,7 @@ from zoneinfo import ZoneInfo from flask import current_app from sqlalchemy.orm.exc import NoResultFound -from app import notify_celery -from app.clients.cloudwatch.aws_cloudwatch import AwsCloudwatchClient +from app import aws_cloudwatch_client, notify_celery from app.clients.email import EmailClientNonRetryableException from app.clients.email.aws_ses import AwsSesClientThrottlingSendRateException from app.clients.sms import SmsClientResponseException @@ -21,12 +20,18 @@ from app.models import ( ) -@notify_celery.task(bind=True, name="check_sms_delivery_receipt", max_retries=3, default_retry_delay=300) +@notify_celery.task(bind=True, name="check_sms_delivery_receipt", max_retries=48, default_retry_delay=300) def check_sms_delivery_receipt(self, message_id, notification_id): - current_app.logger.warning(f"CHECKING DELIVERY RECEIPT for {message_id} {notification_id}") - cloudwatch_client = AwsCloudwatchClient() - cloudwatch_client.init_app(current_app) - status, provider_response = cloudwatch_client.check_sms(message_id, notification_id) + """ + This is called after deliver_sms to check the status of the message. This uses the same number of + retries and the same delay period as deliver_sms. In addition, this fires five minutes after + deliver_sms initially. So the idea is that most messages will succeed and show up in the logs quickly. + Other message will resolve successfully after a retry or to. A few will fail but it will take up to + 4 hours to know for sure. The call to check_sms will raise an exception if neither a success nor a + failure appears in the cloudwatch logs, so this should keep retrying until the log appears, or until + we run out of retries. + """ + status, provider_response = aws_cloudwatch_client.check_sms(message_id, notification_id) if status == 'success': status = NOTIFICATION_SENT else: diff --git a/app/clients/cloudwatch/__init__.py b/app/clients/cloudwatch/__init__.py index 31c79f889..e69de29bb 100644 --- a/app/clients/cloudwatch/__init__.py +++ b/app/clients/cloudwatch/__init__.py @@ -1,25 +0,0 @@ -from app.clients import Client, ClientException - - -class CloudwatchClientResponseException(ClientException): - """ - Base Exception for SmsClientsResponses - """ - - def __init__(self, message): - self.message = message - - def __str__(self): - return "Message {}".format(self.message) - - -class CloudwatchClient(Client): - """ - Base Cloudwatch client for checking sms. - """ - - def init_app(self, *args, **kwargs): - raise NotImplementedError("TODO Need to implement.") - - def check_sms(self, *args, **kwargs): - raise NotImplementedError("TODO Need to implement.") diff --git a/app/clients/cloudwatch/aws_cloudwatch.py b/app/clients/cloudwatch/aws_cloudwatch.py index 57960c40a..c6098bef5 100644 --- a/app/clients/cloudwatch/aws_cloudwatch.py +++ b/app/clients/cloudwatch/aws_cloudwatch.py @@ -5,11 +5,11 @@ import time from boto3 import client -from app.clients.cloudwatch import CloudwatchClient +from app.clients import Client from app.cloudfoundry_config import cloud_config -class AwsCloudwatchClient(CloudwatchClient): +class AwsCloudwatchClient(Client): """ This client is responsible for retrieving sms delivery receipts from cloudwatch. """ @@ -21,7 +21,7 @@ class AwsCloudwatchClient(CloudwatchClient): aws_access_key_id=cloud_config.sns_access_key, aws_secret_access_key=cloud_config.sns_secret_key ) - super(CloudwatchClient, self).__init__(*args, **kwargs) + super(Client, self).__init__(*args, **kwargs) self.current_app = current_app self._valid_sender_regex = re.compile(r"^\+?\d{5,14}$") @@ -61,14 +61,8 @@ class AwsCloudwatchClient(CloudwatchClient): return all_log_events def check_sms(self, message_id, notification_id): - """ - Go through the cloudwatch logs, filtering by message id. Check the success logs first. If we find - the message id there, we are done. Otherwise check the failure logs. If we don't find the message - in the success or failure logs, raise an exception. This method is called on a five minute delay, - which is presumably enough time for the cloudwatch log to be populated. - """ - # TODO presumably there is a better way to get the aws account number - account_number = os.getenv("SES_DOMAIN_ARN") + # TODO this clumsy approach to getting the account number will be fixed as part of notify-api #258 + account_number = cloud_config.ses_domain_arn account_number = account_number.replace('arn:aws:ses:us-west-2:', '') account_number = account_number.split(":") account_number = account_number[0] diff --git a/app/cloudfoundry_config.py b/app/cloudfoundry_config.py index 7fda0184d..62527c797 100644 --- a/app/cloudfoundry_config.py +++ b/app/cloudfoundry_config.py @@ -39,6 +39,15 @@ class CloudfoundryConfig: domain_arn = getenv('SES_DOMAIN_ARN', 'dev.notify.gov') return domain_arn.split('/')[-1] + # TODO remove this after notifications-api #258 + @property + def ses_domain_arn(self): + try: + domain_arn = self._ses_credentials('domain_arn') + except KeyError: + domain_arn = getenv('SES_DOMAIN_ARN', 'dev.notify.gov') + return domain_arn + @property def ses_region(self): try: From 10cb0df2e0882be644b8fabb39c6b344732fa4fc Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Fri, 5 May 2023 08:32:29 -0700 Subject: [PATCH 27/51] fix flake8 --- app/clients/cloudwatch/aws_cloudwatch.py | 1 - 1 file changed, 1 deletion(-) diff --git a/app/clients/cloudwatch/aws_cloudwatch.py b/app/clients/cloudwatch/aws_cloudwatch.py index c6098bef5..e3e351559 100644 --- a/app/clients/cloudwatch/aws_cloudwatch.py +++ b/app/clients/cloudwatch/aws_cloudwatch.py @@ -1,5 +1,4 @@ import json -import os import re import time From 6515c44ca87dc2282a733733f65b0eb4a8a512bd Mon Sep 17 00:00:00 2001 From: Steven Reilly Date: Fri, 5 May 2023 14:11:18 -0400 Subject: [PATCH 28/51] bump pip-audit action to 1.0.6 (#261) --- .github/workflows/checks.yml | 2 +- .github/workflows/daily_checks.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 261d16a61..c6aef0e85 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -75,7 +75,7 @@ jobs: - uses: ./.github/actions/setup-project - name: Create requirements.txt run: pipenv requirements > requirements.txt - - uses: pypa/gh-action-pip-audit@v1.0.4 + - uses: pypa/gh-action-pip-audit@v1.0.6 with: inputs: requirements.txt diff --git a/.github/workflows/daily_checks.yml b/.github/workflows/daily_checks.yml index beac8fbb7..51e1a381f 100644 --- a/.github/workflows/daily_checks.yml +++ b/.github/workflows/daily_checks.yml @@ -27,7 +27,7 @@ jobs: - uses: ./.github/actions/setup-project - name: Create requirements.txt run: pipenv requirements > requirements.txt - - uses: pypa/gh-action-pip-audit@v1.0.4 + - uses: pypa/gh-action-pip-audit@v1.0.6 with: inputs: requirements.txt From 58ad32b560c29d969ec1aa3069ae76a9c6c63151 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Mon, 8 May 2023 10:47:01 -0400 Subject: [PATCH 29/51] Enable production deploy --- .github/workflows/deploy-prod.yml | 87 +++++++++++++++++++ .github/workflows/terraform-production.yml | 2 +- .../notify-api-production.allow.acl | 4 + .../notify-api-production.deny.acl | 0 .../notify-api-production.deploy.acl | 1 + docs/deploying.md | 9 +- docs/infra-overview.md | 18 ++++ terraform/production/main.tf | 5 +- 8 files changed, 119 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/deploy-prod.yml create mode 100644 deploy-config/egress_proxy/notify-api-production.allow.acl create mode 100644 deploy-config/egress_proxy/notify-api-production.deny.acl create mode 100644 deploy-config/egress_proxy/notify-api-production.deploy.acl diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml new file mode 100644 index 000000000..288064a77 --- /dev/null +++ b/.github/workflows/deploy-prod.yml @@ -0,0 +1,87 @@ +name: Deploy to production environment + +on: + push: + branches: [ production ] + +permissions: + contents: read + +# deploy-prod and deploy-demo will run in parallel now. +# TODO: Research if we want to serialize them +# by moving the jobs into a single file similar to +# https://github.com/GSA/usnotify-ssb/blob/main/.github/workflows/apply.yml +jobs: + deploy: + runs-on: ubuntu-latest + environment: production + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 2 + + - name: Check for changes to Terraform + id: changed-terraform-files + uses: tj-actions/changed-files@v34 + with: + files: | + terraform/production + terraform/shared + .github/workflows/deploy-prod.yml + - name: Terraform init + if: steps.changed-terraform-files.outputs.any_changed == 'true' + working-directory: terraform/production + env: + AWS_ACCESS_KEY_ID: ${{ secrets.TERRAFORM_STATE_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.TERRAFORM_STATE_SECRET_ACCESS_KEY }} + run: terraform init + - name: Terraform apply + if: steps.changed-terraform-files.outputs.any_changed == 'true' + working-directory: terraform/production + env: + AWS_ACCESS_KEY_ID: ${{ secrets.TERRAFORM_STATE_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.TERRAFORM_STATE_SECRET_ACCESS_KEY }} + TF_VAR_cf_user: ${{ secrets.CLOUDGOV_USERNAME }} + TF_VAR_cf_password: ${{ secrets.CLOUDGOV_PASSWORD }} + run: terraform apply -auto-approve -input=false + + - uses: ./.github/actions/setup-project + - name: Install application dependencies + run: make bootstrap + + - name: Create requirements.txt because Cloud Foundry does a weird pipenv thing + run: pipenv requirements > requirements.txt + + - name: Deploy to cloud.gov + uses: 18f/cg-deploy-action@main + env: + DANGEROUS_SALT: ${{ secrets.DANGEROUS_SALT }} + SECRET_KEY: ${{ secrets.SECRET_KEY }} + ADMIN_CLIENT_SECRET: ${{ secrets.ADMIN_CLIENT_SECRET }} + NEW_RELIC_LICENSE_KEY: ${{ secrets.NEW_RELIC_LICENSE_KEY }} + with: + cf_username: ${{ secrets.CLOUDGOV_USERNAME }} + cf_password: ${{ secrets.CLOUDGOV_PASSWORD }} + cf_org: gsa-tts-benefits-studio-prototyping + cf_space: notify-production + push_arguments: >- + --vars-file deploy-config/production.yml + --var DANGEROUS_SALT="$DANGEROUS_SALT" + --var SECRET_KEY="$SECRET_KEY" + --var ADMIN_CLIENT_SECRET="$ADMIN_CLIENT_SECRET" + --var NEW_RELIC_LICENSE_KEY="$NEW_RELIC_LICENSE_KEY" + + - name: Check for changes to egress config + id: changed-egress-config + uses: tj-actions/changed-files@v34 + with: + files: | + deploy-config/egress_proxy/notify-api-production.*.acl + .github/actions/deploy-proxy/action.yml + .github/workflows/deploy-prod.yml + - name: Deploy egress proxy + if: steps.changed-egress-config.outputs.any_changed == 'true' + uses: ./.github/actions/deploy-proxy + with: + cf_space: notify-production + app: notify-api-production diff --git a/.github/workflows/terraform-production.yml b/.github/workflows/terraform-production.yml index e48000438..afb10dcfb 100644 --- a/.github/workflows/terraform-production.yml +++ b/.github/workflows/terraform-production.yml @@ -2,7 +2,7 @@ name: Run Terraform plan in production on: pull_request: - branches: [ production-disabled-for-now ] + branches: [ production ] paths: [ 'terraform/**' ] defaults: diff --git a/deploy-config/egress_proxy/notify-api-production.allow.acl b/deploy-config/egress_proxy/notify-api-production.allow.acl new file mode 100644 index 000000000..a6e4a2f65 --- /dev/null +++ b/deploy-config/egress_proxy/notify-api-production.allow.acl @@ -0,0 +1,4 @@ +email.us-gov-west-1.amazonaws.com +sns.us-gov-west-1.amazonaws.com +gov-collector.newrelic.com +egress-proxy-notify-api-production.apps.internal diff --git a/deploy-config/egress_proxy/notify-api-production.deny.acl b/deploy-config/egress_proxy/notify-api-production.deny.acl new file mode 100644 index 000000000..e69de29bb diff --git a/deploy-config/egress_proxy/notify-api-production.deploy.acl b/deploy-config/egress_proxy/notify-api-production.deploy.acl new file mode 100644 index 000000000..e5a3a541d --- /dev/null +++ b/deploy-config/egress_proxy/notify-api-production.deploy.acl @@ -0,0 +1 @@ +Update this file to force a re-deploy of the egress proxy even when notify-api-production..acl haven't changed diff --git a/docs/deploying.md b/docs/deploying.md index 2763a57a5..916a5279f 100644 --- a/docs/deploying.md +++ b/docs/deploying.md @@ -1,19 +1,20 @@ # Deploying -We deploy automatically to cloud.gov for demo and staging environments. +We deploy automatically to cloud.gov for production, demo, and staging environments. Deployment to staging runs via the [base deployment action](../.github/workflows/deploy.yml) on GitHub, which pulls credentials from GitHub's secrets store in the staging environment. Deployment to demo runs via the [demo deployment action](../.github/workflows/deploy-demo.yml) on GitHub, which pulls credentials from GitHub's secrets store in the demo environment. +Deployment to production runs via the [production deployment action](../.github/workflows/deploy-prod.yml) on GitHub, which pulls credentials from GitHub's secrets store in the production environment. + The [action that we use](https://github.com/18F/cg-deploy-action) deploys using [a rolling strategy](https://docs.cloudfoundry.org/devguide/deploy-apps/rolling-deploy.html), so all deployments should have zero downtime. -The API has 2 deployment environments: +The API has 3 deployment environments: - Staging, which deploys from `main` - Demo, which deploys from `production` - -In the future, we will add a Production deploy environment, which will deploy in parallel to Demo. +- Production, which deploys from `production` Configurations for these are located in [the `deploy-config` folder](../deploy-config/). diff --git a/docs/infra-overview.md b/docs/infra-overview.md index e7dd0768e..8707f9797 100644 --- a/docs/infra-overview.md +++ b/docs/infra-overview.md @@ -102,6 +102,24 @@ We are using [New Relic](https://one.newrelic.com/nr1-core?account=3389907) for These steps are required for new cloud.gov environments. Local development borrows SES & SNS infrastructure from the `notify-staging` cloud.gov space, so these steps are not required for new developers. +### Steps to do a clean prod deploy to cloud.gov + +Steps for deploying production from scratch. These can be updated for a new cloud.gov environment by subbing out `prod` or `production` for your desired environment within the steps. + +1. Deploy API app + 1. Update `terraform-production.yml` and `deploy-prod.yml` to point to the correct space and git branch. + 1. Ensure that the `domain` module is commented out in `terraform/production/main.tf` + 1. Run CI/CD pipeline on the `production` branch by opening a PR from `main` to `production` + 1. Create any necessary DNS records (check `notify-api-ses-production` service credentials for instructions) within https://github.com/18f/dns + 1. Follow the `Steps to prepare SES` below + 1. (Optional) if using a public API route, uncomment the `domain` module and re-trigger a deploy +1. Deploy Admin app + 1. Update `terraform-production.yml` and `deploy-prod.yml` to point to the correct space and git branch. + 1. Ensure that the `api_network_route` and `domain` modules are commented out in `terraform/production/main.tf` + 1. Run CI/CD pipeline on the `production` branch by opening a PR from `main` to `production` + 1. Uncomment the `api_network_route` and `domain` modules and re-trigger a deploy + 1. Create DNS records for `domain` module within https://github.com/18f/dns + ### Steps to prepare SES 1. After the first deploy of the application with the SSB-brokered SES service completes: diff --git a/terraform/production/main.tf b/terraform/production/main.tf index afe132ad4..49e7840d8 100644 --- a/terraform/production/main.tf +++ b/terraform/production/main.tf @@ -72,9 +72,10 @@ module "sns_sms" { ########################################################################### # The following lines need to be commented out for the initial `terraform apply` # It can be re-enabled after: +# TODO: decide on public API domain name # 1) the app has first been deployed # 2) the route has been manually created by an OrgManager: -# `cf create-domain TKTK-org-name TKTK-production-domain-name` +# `cf create-domain gsa-tts-benefits-studio-prototyping api.notify.gov` ########################################################################### # module "domain" { # source = "github.com/18f/terraform-cloudgov//domain?ref=v0.2.0" @@ -85,5 +86,5 @@ module "sns_sms" { # name = "${local.app_name}-domain-${local.env}" # recursive_delete = local.recursive_delete # cdn_plan_name = "domain" -# domain_name = "TKTK-production-domain-name" +# domain_name = "api.notify.gov" # } From 300414974c0c0c6515e1702bfa157ee4c081b2db Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Mon, 8 May 2023 15:15:25 -0400 Subject: [PATCH 30/51] Set service plan names for production --- terraform/production/main.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/terraform/production/main.tf b/terraform/production/main.tf index 49e7840d8..574ae0741 100644 --- a/terraform/production/main.tf +++ b/terraform/production/main.tf @@ -13,7 +13,7 @@ module "database" { cf_space_name = local.cf_space_name name = "${local.app_name}-rds-${local.env}" recursive_delete = local.recursive_delete - rds_plan_name = "TKTK-production-rds-plan" + rds_plan_name = "small-psql-redundant" } module "redis" { @@ -23,7 +23,7 @@ module "redis" { cf_space_name = local.cf_space_name name = "${local.app_name}-redis-${local.env}" recursive_delete = local.recursive_delete - redis_plan_name = "TKTK-production-redis-plan" + redis_plan_name = "redis-3node-large" } module "csv_upload_bucket" { From 0d685df51cc435ff4a5b7b02e40c24874745d42d Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Mon, 8 May 2023 15:29:12 -0400 Subject: [PATCH 31/51] Enable prod terraform drift check --- .github/workflows/drift.yml | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/drift.yml b/.github/workflows/drift.yml index 412290a49..616e72689 100644 --- a/.github/workflows/drift.yml +++ b/.github/workflows/drift.yml @@ -45,22 +45,22 @@ jobs: with: path: terraform/demo - # check_prod_drift: - # runs-on: ubuntu-latest - # name: Check for drift of production terraform configuration - # environment: production - # steps: - # - name: Checkout - # uses: actions/checkout@v3 - # with: - # ref: 'production' + check_prod_drift: + runs-on: ubuntu-latest + name: Check for drift of production terraform configuration + environment: production + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + ref: 'production' - # - name: Check for drift - # uses: dflook/terraform-check@v1 - # env: - # AWS_ACCESS_KEY_ID: ${{ secrets.TERRAFORM_STATE_ACCESS_KEY }} - # AWS_SECRET_ACCESS_KEY: ${{ secrets.TERRAFORM_STATE_SECRET_ACCESS_KEY }} - # TF_VAR_cf_user: ${{ secrets.CLOUDGOV_USERNAME }} - # TF_VAR_cf_password: ${{ secrets.CLOUDGOV_PASSWORD }} - # with: - # path: terraform/production + - name: Check for drift + uses: dflook/terraform-check@v1 + env: + AWS_ACCESS_KEY_ID: ${{ secrets.TERRAFORM_STATE_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.TERRAFORM_STATE_SECRET_ACCESS_KEY }} + TF_VAR_cf_user: ${{ secrets.CLOUDGOV_USERNAME }} + TF_VAR_cf_password: ${{ secrets.CLOUDGOV_PASSWORD }} + with: + path: terraform/production From 1e72f97b17894b5bb75f122bf9232ee43b7ccfe2 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 9 May 2023 08:45:51 -0700 Subject: [PATCH 32/51] code review feedback --- app/celery/provider_tasks.py | 10 +++++++--- app/clients/cloudwatch/aws_cloudwatch.py | 17 ++++++++++------- tests/app/clients/test_aws_cloudwatch.py | 4 ++-- 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/app/celery/provider_tasks.py b/app/celery/provider_tasks.py index 1fe30c92c..01d826ba6 100644 --- a/app/celery/provider_tasks.py +++ b/app/celery/provider_tasks.py @@ -1,4 +1,5 @@ from datetime import datetime, timedelta +from time import time from zoneinfo import ZoneInfo from flask import current_app @@ -21,7 +22,7 @@ from app.models import ( @notify_celery.task(bind=True, name="check_sms_delivery_receipt", max_retries=48, default_retry_delay=300) -def check_sms_delivery_receipt(self, message_id, notification_id): +def check_sms_delivery_receipt(self, message_id, notification_id, sent_at): """ This is called after deliver_sms to check the status of the message. This uses the same number of retries and the same delay period as deliver_sms. In addition, this fires five minutes after @@ -31,17 +32,20 @@ def check_sms_delivery_receipt(self, message_id, notification_id): failure appears in the cloudwatch logs, so this should keep retrying until the log appears, or until we run out of retries. """ - status, provider_response = aws_cloudwatch_client.check_sms(message_id, notification_id) + status, provider_response = aws_cloudwatch_client.check_sms(message_id, notification_id, sent_at) if status == 'success': status = NOTIFICATION_SENT else: status = NOTIFICATION_FAILED update_notification_status_by_id(notification_id, status, provider_response=provider_response) + current_app.logger.info(f"Updated notification {notification_id} with response '{provider_response}'") @notify_celery.task(bind=True, name="deliver_sms", max_retries=48, default_retry_delay=300) def deliver_sms(self, notification_id): try: + # Get the time we are doing the sending, to minimize the time period we need to check over for receipt + now = round(time() * 1000) current_app.logger.info("Start sending SMS for notification id: {}".format(notification_id)) notification = notifications_dao.get_notification_by_id(notification_id) if not notification: @@ -51,7 +55,7 @@ def deliver_sms(self, notification_id): # will be ignored and it will fire immediately (although this probably only affects developer testing) my_eta = datetime.now(ZoneInfo('US/Eastern')) + timedelta(seconds=300) check_sms_delivery_receipt.apply_async( - [message_id, notification_id], + [message_id, notification_id, now], eta=my_eta, queue=QueueNames.CHECK_SMS ) diff --git a/app/clients/cloudwatch/aws_cloudwatch.py b/app/clients/cloudwatch/aws_cloudwatch.py index e3e351559..97de58219 100644 --- a/app/clients/cloudwatch/aws_cloudwatch.py +++ b/app/clients/cloudwatch/aws_cloudwatch.py @@ -28,12 +28,11 @@ class AwsCloudwatchClient(Client): def name(self): return 'cloudwatch' - def _get_all_logs(self, my_filter, log_group_name): + def _get_log(self, my_filter, log_group_name, sent_at): - # Check all events in the last 30 minutes + # Check all cloudwatch logs from the time the notification was sent (currently 5 minutes previously) until now now = round(time.time() * 1000) - beginning = now - 30 * 60 * 1000 - + beginning = sent_at next_token = None all_log_events = [] while True: @@ -54,12 +53,16 @@ class AwsCloudwatchClient(Client): ) log_events = response.get('events', []) all_log_events.extend(log_events) + if len(log_events) > 0: + # We found it + break next_token = response.get('nextToken') if not next_token: break return all_log_events - def check_sms(self, message_id, notification_id): + def check_sms(self, message_id, notification_id, created_at): + # TODO this clumsy approach to getting the account number will be fixed as part of notify-api #258 account_number = cloud_config.ses_domain_arn account_number = account_number.replace('arn:aws:ses:us-west-2:', '') @@ -69,7 +72,7 @@ class AwsCloudwatchClient(Client): log_group_name = f'sns/us-west-2/{account_number}/DirectPublishToPhoneNumber' filter_pattern = '{$.notification.messageId="XXXXX"}' filter_pattern = filter_pattern.replace("XXXXX", message_id) - all_log_events = self._get_all_logs(filter_pattern, log_group_name) + all_log_events = self._get_log(filter_pattern, log_group_name, created_at) if all_log_events and len(all_log_events) > 0: event = all_log_events[0] @@ -77,7 +80,7 @@ class AwsCloudwatchClient(Client): return "success", message['delivery']['providerResponse'] log_group_name = f'sns/us-west-2/{account_number}/DirectPublishToPhoneNumber/Failure' - all_failed_events = self._get_all_logs(filter_pattern, log_group_name) + all_failed_events = self._get_log(filter_pattern, log_group_name, created_at) if all_failed_events and len(all_failed_events) > 0: event = all_failed_events[0] message = json.loads(event['message']) diff --git a/tests/app/clients/test_aws_cloudwatch.py b/tests/app/clients/test_aws_cloudwatch.py index 38ca50243..5a54383b5 100644 --- a/tests/app/clients/test_aws_cloudwatch.py +++ b/tests/app/clients/test_aws_cloudwatch.py @@ -58,7 +58,7 @@ def test_check_sms_success(notify_api, mocker): message_id = 'succeed' notification_id = 'ccc' with notify_api.app_context(): - aws_cloudwatch_client.check_sms(message_id, notification_id) + aws_cloudwatch_client.check_sms(message_id, notification_id, 1000000000000) # We check the 'success' log group first and if we find the message_id, we are done, so there is only 1 call assert boto_mock.filter_log_events.call_count == 1 @@ -77,7 +77,7 @@ def test_check_sms_failure(notify_api, mocker): message_id = 'fail' notification_id = 'bbb' with notify_api.app_context(): - aws_cloudwatch_client.check_sms(message_id, notification_id) + aws_cloudwatch_client.check_sms(message_id, notification_id, 1000000000000) # We check the 'success' log group and find nothing, so we then check the 'fail' log group -- two calls. assert boto_mock.filter_log_events.call_count == 2 From 7a7de4de10949ff56be848bd7dbeebf8002da841 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Tue, 9 May 2023 09:00:04 -0700 Subject: [PATCH 33/51] fix pipfile.lock --- Pipfile.lock | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 55c6b7e39..dfab2a778 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -158,11 +158,11 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" ], "index": "pypi", - "version": "==2022.12.7" + "version": "==2023.5.7" }, "cffi": { "hashes": [ @@ -1055,10 +1055,10 @@ }, "redis": { "hashes": [ - "sha256:2c19e6767c474f2e85167909061d525ed65bea9301c0770bb151e041b7ac89a2", - "sha256:73ec35da4da267d6847e47f68730fdd5f62e2ca69e3ef5885c6a78a9374c3893" + "sha256:77929bc7f5dab9adf3acba2d3bb7d7658f1e0c2f1cafe7eb36434e751c471119", + "sha256:dc87a0bdef6c8bfe1ef1e1c40be7034390c2ae02d92dcd0c7ca1729443899880" ], - "version": "==4.5.4" + "version": "==4.5.5" }, "requests": { "hashes": [ @@ -1268,11 +1268,11 @@ }, "werkzeug": { "hashes": [ - "sha256:4866679a0722de00796a74086238bb3b98d90f423f05de039abb09315487254a", - "sha256:a987caf1092edc7523edb139edb20c70571c4a8d5eed02e0b547b4739174d091" + "sha256:1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76", + "sha256:48e5e61472fee0ddee27ebad085614ebedb7af41e88f687aaf881afb723a162f" ], "index": "pypi", - "version": "==2.3.3" + "version": "==2.3.4" }, "wrapt": { "hashes": [ @@ -1410,11 +1410,11 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" ], "index": "pypi", - "version": "==2022.12.7" + "version": "==2023.5.7" }, "cffi": { "hashes": [ @@ -2191,11 +2191,11 @@ }, "werkzeug": { "hashes": [ - "sha256:4866679a0722de00796a74086238bb3b98d90f423f05de039abb09315487254a", - "sha256:a987caf1092edc7523edb139edb20c70571c4a8d5eed02e0b547b4739174d091" + "sha256:1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76", + "sha256:48e5e61472fee0ddee27ebad085614ebedb7af41e88f687aaf881afb723a162f" ], "index": "pypi", - "version": "==2.3.3" + "version": "==2.3.4" }, "xmltodict": { "hashes": [ From 663ea8435e7c1ae4d230d5e26404d09e92a80fc8 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Tue, 9 May 2023 12:04:05 -0400 Subject: [PATCH 34/51] Fix SNS cert address regex to allow govcloud region domain --- app/notifications/sns_cert_validator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/notifications/sns_cert_validator.py b/app/notifications/sns_cert_validator.py index 1b3f7ea3d..c06d06c49 100644 --- a/app/notifications/sns_cert_validator.py +++ b/app/notifications/sns_cert_validator.py @@ -16,7 +16,7 @@ VALID_SNS_TOPICS = Config.VALID_SNS_TOPICS _signing_cert_cache = {} _cert_url_re = re.compile( - r'sns\.([a-z]{1,3}-[a-z]+-[0-9]{1,2})\.amazonaws\.com', + r'sns\.([a-z]{1,3}(?:-gov)?-[a-z]+-[0-9]{1,2})\.amazonaws\.com', ) From e66301a17008a0dc7c62580231c97d20af34e211 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Tue, 9 May 2023 21:44:15 -0400 Subject: [PATCH 35/51] Add cloud.gov user audit script --- Makefile | 4 + Pipfile | 1 + Pipfile.lock | 444 ++++++++++++++++++++++++-- docs/run-book.md | 1 + terraform/ops/cloudgov_user_report.py | 84 +++++ 5 files changed, 511 insertions(+), 23 deletions(-) create mode 100644 terraform/ops/cloudgov_user_report.py diff --git a/Makefile b/Makefile index 02cd34162..f914116fa 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,10 @@ run-celery-beat: ## Run celery beat -A run_celery.notify_celery beat \ --loglevel=INFO +.PHONE: user-report +cloudgov-user-report: + @pipenv run python -m terraform.ops.cloudgov_user_report + .PHONY: help help: @cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z_-]+:.*?## .*$$' | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' diff --git a/Pipfile b/Pipfile index ec6f0f07b..d77b53d58 100644 --- a/Pipfile +++ b/Pipfile @@ -78,6 +78,7 @@ jinja2-cli = {version = "==0.8.2", extras = ["yaml"]} pip-audit = "*" bandit = "*" honcho = "*" +cloudfoundry-client = "*" [requires] python_version = "3.9" diff --git a/Pipfile.lock b/Pipfile.lock index 75008054f..3a60022fa 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "7dd2aec17c3f7bb4a1f228c5319258e415ebd4d75be75b86119b8d73addef675" + "sha256": "143054bb5631e9862e5343e2a7336fa2f97f1adb8ee1b7dc0a849eaca8b6c369" }, "pipfile-spec": 6, "requires": { @@ -158,11 +158,11 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" ], "index": "pypi", - "version": "==2022.12.7" + "version": "==2023.5.7" }, "cffi": { "hashes": [ @@ -769,7 +769,7 @@ "notifications-utils": { "editable": true, "git": "https://github.com/GSA/notifications-utils.git", - "ref": "c7a85c4d1e8f975d349c1555f416ae20f28a2ce1" + "ref": "1492349e323df749771494f13e3eb268ee402a65" }, "numpy": { "hashes": [ @@ -1055,18 +1055,18 @@ }, "redis": { "hashes": [ - "sha256:2c19e6767c474f2e85167909061d525ed65bea9301c0770bb151e041b7ac89a2", - "sha256:73ec35da4da267d6847e47f68730fdd5f62e2ca69e3ef5885c6a78a9374c3893" + "sha256:77929bc7f5dab9adf3acba2d3bb7d7658f1e0c2f1cafe7eb36434e751c471119", + "sha256:dc87a0bdef6c8bfe1ef1e1c40be7034390c2ae02d92dcd0c7ca1729443899880" ], - "version": "==4.5.4" + "version": "==4.5.5" }, "requests": { "hashes": [ - "sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b", - "sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059" + "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", + "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" ], "markers": "python_version >= '3.7'", - "version": "==2.29.0" + "version": "==2.30.0" }, "rfc3339-validator": { "hashes": [ @@ -1268,11 +1268,11 @@ }, "werkzeug": { "hashes": [ - "sha256:4866679a0722de00796a74086238bb3b98d90f423f05de039abb09315487254a", - "sha256:a987caf1092edc7523edb139edb20c70571c4a8d5eed02e0b547b4739174d091" + "sha256:1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76", + "sha256:48e5e61472fee0ddee27ebad085614ebedb7af41e88f687aaf881afb723a162f" ], "index": "pypi", - "version": "==2.3.3" + "version": "==2.3.4" }, "wrapt": { "hashes": [ @@ -1365,6 +1365,115 @@ } }, "develop": { + "aiohttp": { + "hashes": [ + "sha256:03543dcf98a6619254b409be2d22b51f21ec66272be4ebda7b04e6412e4b2e14", + "sha256:03baa76b730e4e15a45f81dfe29a8d910314143414e528737f8589ec60cf7391", + "sha256:0a63f03189a6fa7c900226e3ef5ba4d3bd047e18f445e69adbd65af433add5a2", + "sha256:10c8cefcff98fd9168cdd86c4da8b84baaa90bf2da2269c6161984e6737bf23e", + "sha256:147ae376f14b55f4f3c2b118b95be50a369b89b38a971e80a17c3fd623f280c9", + "sha256:176a64b24c0935869d5bbc4c96e82f89f643bcdf08ec947701b9dbb3c956b7dd", + "sha256:17b79c2963db82086229012cff93ea55196ed31f6493bb1ccd2c62f1724324e4", + "sha256:1a45865451439eb320784918617ba54b7a377e3501fb70402ab84d38c2cd891b", + "sha256:1b3ea7edd2d24538959c1c1abf97c744d879d4e541d38305f9bd7d9b10c9ec41", + "sha256:22f6eab15b6db242499a16de87939a342f5a950ad0abaf1532038e2ce7d31567", + "sha256:3032dcb1c35bc330134a5b8a5d4f68c1a87252dfc6e1262c65a7e30e62298275", + "sha256:33587f26dcee66efb2fff3c177547bd0449ab7edf1b73a7f5dea1e38609a0c54", + "sha256:34ce9f93a4a68d1272d26030655dd1b58ff727b3ed2a33d80ec433561b03d67a", + "sha256:3a80464982d41b1fbfe3154e440ba4904b71c1a53e9cd584098cd41efdb188ef", + "sha256:3b90467ebc3d9fa5b0f9b6489dfb2c304a1db7b9946fa92aa76a831b9d587e99", + "sha256:3d89efa095ca7d442a6d0cbc755f9e08190ba40069b235c9886a8763b03785da", + "sha256:3d8ef1a630519a26d6760bc695842579cb09e373c5f227a21b67dc3eb16cfea4", + "sha256:3f43255086fe25e36fd5ed8f2ee47477408a73ef00e804cb2b5cba4bf2ac7f5e", + "sha256:40653609b3bf50611356e6b6554e3a331f6879fa7116f3959b20e3528783e699", + "sha256:41a86a69bb63bb2fc3dc9ad5ea9f10f1c9c8e282b471931be0268ddd09430b04", + "sha256:493f5bc2f8307286b7799c6d899d388bbaa7dfa6c4caf4f97ef7521b9cb13719", + "sha256:4a6cadebe132e90cefa77e45f2d2f1a4b2ce5c6b1bfc1656c1ddafcfe4ba8131", + "sha256:4c745b109057e7e5f1848c689ee4fb3a016c8d4d92da52b312f8a509f83aa05e", + "sha256:4d347a172f866cd1d93126d9b239fcbe682acb39b48ee0873c73c933dd23bd0f", + "sha256:4dac314662f4e2aa5009977b652d9b8db7121b46c38f2073bfeed9f4049732cd", + "sha256:4ddaae3f3d32fc2cb4c53fab020b69a05c8ab1f02e0e59665c6f7a0d3a5be54f", + "sha256:5393fb786a9e23e4799fec788e7e735de18052f83682ce2dfcabaf1c00c2c08e", + "sha256:59f029a5f6e2d679296db7bee982bb3d20c088e52a2977e3175faf31d6fb75d1", + "sha256:5a7bdf9e57126dc345b683c3632e8ba317c31d2a41acd5800c10640387d193ed", + "sha256:5b3f2e06a512e94722886c0827bee9807c86a9f698fac6b3aee841fab49bbfb4", + "sha256:5ce45967538fb747370308d3145aa68a074bdecb4f3a300869590f725ced69c1", + "sha256:5e14f25765a578a0a634d5f0cd1e2c3f53964553a00347998dfdf96b8137f777", + "sha256:618c901dd3aad4ace71dfa0f5e82e88b46ef57e3239fc7027773cb6d4ed53531", + "sha256:652b1bff4f15f6287550b4670546a2947f2a4575b6c6dff7760eafb22eacbf0b", + "sha256:6c08e8ed6fa3d477e501ec9db169bfac8140e830aa372d77e4a43084d8dd91ab", + "sha256:6ddb2a2026c3f6a68c3998a6c47ab6795e4127315d2e35a09997da21865757f8", + "sha256:6e601588f2b502c93c30cd5a45bfc665faaf37bbe835b7cfd461753068232074", + "sha256:6e74dd54f7239fcffe07913ff8b964e28b712f09846e20de78676ce2a3dc0bfc", + "sha256:7235604476a76ef249bd64cb8274ed24ccf6995c4a8b51a237005ee7a57e8643", + "sha256:7ab43061a0c81198d88f39aaf90dae9a7744620978f7ef3e3708339b8ed2ef01", + "sha256:7c7837fe8037e96b6dd5cfcf47263c1620a9d332a87ec06a6ca4564e56bd0f36", + "sha256:80575ba9377c5171407a06d0196b2310b679dc752d02a1fcaa2bc20b235dbf24", + "sha256:80a37fe8f7c1e6ce8f2d9c411676e4bc633a8462844e38f46156d07a7d401654", + "sha256:8189c56eb0ddbb95bfadb8f60ea1b22fcfa659396ea36f6adcc521213cd7b44d", + "sha256:854f422ac44af92bfe172d8e73229c270dc09b96535e8a548f99c84f82dde241", + "sha256:880e15bb6dad90549b43f796b391cfffd7af373f4646784795e20d92606b7a51", + "sha256:8b631e26df63e52f7cce0cce6507b7a7f1bc9b0c501fcde69742130b32e8782f", + "sha256:8c29c77cc57e40f84acef9bfb904373a4e89a4e8b74e71aa8075c021ec9078c2", + "sha256:91f6d540163f90bbaef9387e65f18f73ffd7c79f5225ac3d3f61df7b0d01ad15", + "sha256:92c0cea74a2a81c4c76b62ea1cac163ecb20fb3ba3a75c909b9fa71b4ad493cf", + "sha256:9bcb89336efa095ea21b30f9e686763f2be4478f1b0a616969551982c4ee4c3b", + "sha256:a1f4689c9a1462f3df0a1f7e797791cd6b124ddbee2b570d34e7f38ade0e2c71", + "sha256:a3fec6a4cb5551721cdd70473eb009d90935b4063acc5f40905d40ecfea23e05", + "sha256:a5d794d1ae64e7753e405ba58e08fcfa73e3fad93ef9b7e31112ef3c9a0efb52", + "sha256:a86d42d7cba1cec432d47ab13b6637bee393a10f664c425ea7b305d1301ca1a3", + "sha256:adfbc22e87365a6e564c804c58fc44ff7727deea782d175c33602737b7feadb6", + "sha256:aeb29c84bb53a84b1a81c6c09d24cf33bb8432cc5c39979021cc0f98c1292a1a", + "sha256:aede4df4eeb926c8fa70de46c340a1bc2c6079e1c40ccf7b0eae1313ffd33519", + "sha256:b744c33b6f14ca26b7544e8d8aadff6b765a80ad6164fb1a430bbadd593dfb1a", + "sha256:b7a00a9ed8d6e725b55ef98b1b35c88013245f35f68b1b12c5cd4100dddac333", + "sha256:bb96fa6b56bb536c42d6a4a87dfca570ff8e52de2d63cabebfd6fb67049c34b6", + "sha256:bbcf1a76cf6f6dacf2c7f4d2ebd411438c275faa1dc0c68e46eb84eebd05dd7d", + "sha256:bca5f24726e2919de94f047739d0a4fc01372801a3672708260546aa2601bf57", + "sha256:bf2e1a9162c1e441bf805a1fd166e249d574ca04e03b34f97e2928769e91ab5c", + "sha256:c4eb3b82ca349cf6fadcdc7abcc8b3a50ab74a62e9113ab7a8ebc268aad35bb9", + "sha256:c6cc15d58053c76eacac5fa9152d7d84b8d67b3fde92709195cb984cfb3475ea", + "sha256:c6cd05ea06daca6ad6a4ca3ba7fe7dc5b5de063ff4daec6170ec0f9979f6c332", + "sha256:c844fd628851c0bc309f3c801b3a3d58ce430b2ce5b359cd918a5a76d0b20cb5", + "sha256:c9cb1565a7ad52e096a6988e2ee0397f72fe056dadf75d17fa6b5aebaea05622", + "sha256:cab9401de3ea52b4b4c6971db5fb5c999bd4260898af972bf23de1c6b5dd9d71", + "sha256:cd468460eefef601ece4428d3cf4562459157c0f6523db89365202c31b6daebb", + "sha256:d1e6a862b76f34395a985b3cd39a0d949ca80a70b6ebdea37d3ab39ceea6698a", + "sha256:d1f9282c5f2b5e241034a009779e7b2a1aa045f667ff521e7948ea9b56e0c5ff", + "sha256:d265f09a75a79a788237d7f9054f929ced2e69eb0bb79de3798c468d8a90f945", + "sha256:db3fc6120bce9f446d13b1b834ea5b15341ca9ff3f335e4a951a6ead31105480", + "sha256:dbf3a08a06b3f433013c143ebd72c15cac33d2914b8ea4bea7ac2c23578815d6", + "sha256:de04b491d0e5007ee1b63a309956eaed959a49f5bb4e84b26c8f5d49de140fa9", + "sha256:e4b09863aae0dc965c3ef36500d891a3ff495a2ea9ae9171e4519963c12ceefd", + "sha256:e595432ac259af2d4630008bf638873d69346372d38255774c0e286951e8b79f", + "sha256:e75b89ac3bd27d2d043b234aa7b734c38ba1b0e43f07787130a0ecac1e12228a", + "sha256:ea9eb976ffdd79d0e893869cfe179a8f60f152d42cb64622fca418cd9b18dc2a", + "sha256:eafb3e874816ebe2a92f5e155f17260034c8c341dad1df25672fb710627c6949", + "sha256:ee3c36df21b5714d49fc4580247947aa64bcbe2939d1b77b4c8dcb8f6c9faecc", + "sha256:f352b62b45dff37b55ddd7b9c0c8672c4dd2eb9c0f9c11d395075a84e2c40f75", + "sha256:fabb87dd8850ef0f7fe2b366d44b77d7e6fa2ea87861ab3844da99291e81e60f", + "sha256:fe11310ae1e4cd560035598c3f29d86cef39a83d244c7466f95c27ae04850f10", + "sha256:fe7ba4a51f33ab275515f66b0a236bcde4fb5561498fe8f898d4e549b2e4509f" + ], + "markers": "python_version >= '3.6'", + "version": "==3.8.4" + }, + "aiosignal": { + "hashes": [ + "sha256:54cd96e15e1649b75d6c87526a6ff0b6c1b0dd3459f43d9ca11d48c339b68cfc", + "sha256:f8376fb07dd1e86a584e4fcdec80b36b7f81aac666ebc724e2c090300dd83b17" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.1" + }, + "async-timeout": { + "hashes": [ + "sha256:2163e1640ddb52b7a8c80d0a67a08587e5d245cc9c553a74a847056bc2976b15", + "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c" + ], + "index": "pypi", + "version": "==4.0.2" + }, "attrs": { "hashes": [ "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4", @@ -1410,11 +1519,11 @@ }, "certifi": { "hashes": [ - "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3", - "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18" + "sha256:0f0d56dc5a6ad56fd4ba36484d6cc34451e1c6548c61daad8c320169f91eddc7", + "sha256:c6c2e98f5c7869efca1f8916fed228dd91539f9f1b444c314c06eef02980c716" ], "index": "pypi", - "version": "==2022.12.7" + "version": "==2023.5.7" }, "cffi": { "hashes": [ @@ -1480,6 +1589,14 @@ "index": "pypi", "version": "==2.0.12" }, + "cloudfoundry-client": { + "hashes": [ + "sha256:1261ff57c7309406b8e8720991d861dcede23c8ee612c80f87330815623c8753", + "sha256:8293d8027e5ad5a902806603286cbab78f9639b92229fc216f798a15023c484a" + ], + "index": "pypi", + "version": "==1.34.2" + }, "coverage": { "extras": [ "toml" @@ -1613,6 +1730,86 @@ "index": "pypi", "version": "==1.2.1" }, + "frozenlist": { + "hashes": [ + "sha256:008a054b75d77c995ea26629ab3a0c0d7281341f2fa7e1e85fa6153ae29ae99c", + "sha256:02c9ac843e3390826a265e331105efeab489ffaf4dd86384595ee8ce6d35ae7f", + "sha256:034a5c08d36649591be1cbb10e09da9f531034acfe29275fc5454a3b101ce41a", + "sha256:05cdb16d09a0832eedf770cb7bd1fe57d8cf4eaf5aced29c4e41e3f20b30a784", + "sha256:0693c609e9742c66ba4870bcee1ad5ff35462d5ffec18710b4ac89337ff16e27", + "sha256:0771aed7f596c7d73444c847a1c16288937ef988dc04fb9f7be4b2aa91db609d", + "sha256:0af2e7c87d35b38732e810befb9d797a99279cbb85374d42ea61c1e9d23094b3", + "sha256:14143ae966a6229350021384870458e4777d1eae4c28d1a7aa47f24d030e6678", + "sha256:180c00c66bde6146a860cbb81b54ee0df350d2daf13ca85b275123bbf85de18a", + "sha256:1841e200fdafc3d51f974d9d377c079a0694a8f06de2e67b48150328d66d5483", + "sha256:23d16d9f477bb55b6154654e0e74557040575d9d19fe78a161bd33d7d76808e8", + "sha256:2b07ae0c1edaa0a36339ec6cce700f51b14a3fc6545fdd32930d2c83917332cf", + "sha256:2c926450857408e42f0bbc295e84395722ce74bae69a3b2aa2a65fe22cb14b99", + "sha256:2e24900aa13212e75e5b366cb9065e78bbf3893d4baab6052d1aca10d46d944c", + "sha256:303e04d422e9b911a09ad499b0368dc551e8c3cd15293c99160c7f1f07b59a48", + "sha256:352bd4c8c72d508778cf05ab491f6ef36149f4d0cb3c56b1b4302852255d05d5", + "sha256:3843f84a6c465a36559161e6c59dce2f2ac10943040c2fd021cfb70d58c4ad56", + "sha256:394c9c242113bfb4b9aa36e2b80a05ffa163a30691c7b5a29eba82e937895d5e", + "sha256:3bbdf44855ed8f0fbcd102ef05ec3012d6a4fd7c7562403f76ce6a52aeffb2b1", + "sha256:40de71985e9042ca00b7953c4f41eabc3dc514a2d1ff534027f091bc74416401", + "sha256:41fe21dc74ad3a779c3d73a2786bdf622ea81234bdd4faf90b8b03cad0c2c0b4", + "sha256:47df36a9fe24054b950bbc2db630d508cca3aa27ed0566c0baf661225e52c18e", + "sha256:4ea42116ceb6bb16dbb7d526e242cb6747b08b7710d9782aa3d6732bd8d27649", + "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a", + "sha256:5c11e43016b9024240212d2a65043b70ed8dfd3b52678a1271972702d990ac6d", + "sha256:5cf820485f1b4c91e0417ea0afd41ce5cf5965011b3c22c400f6d144296ccbc0", + "sha256:5d8860749e813a6f65bad8285a0520607c9500caa23fea6ee407e63debcdbef6", + "sha256:6327eb8e419f7d9c38f333cde41b9ae348bec26d840927332f17e887a8dcb70d", + "sha256:65a5e4d3aa679610ac6e3569e865425b23b372277f89b5ef06cf2cdaf1ebf22b", + "sha256:66080ec69883597e4d026f2f71a231a1ee9887835902dbe6b6467d5a89216cf6", + "sha256:783263a4eaad7c49983fe4b2e7b53fa9770c136c270d2d4bbb6d2192bf4d9caf", + "sha256:7f44e24fa70f6fbc74aeec3e971f60a14dde85da364aa87f15d1be94ae75aeef", + "sha256:7fdfc24dcfce5b48109867c13b4cb15e4660e7bd7661741a391f821f23dfdca7", + "sha256:810860bb4bdce7557bc0febb84bbd88198b9dbc2022d8eebe5b3590b2ad6c842", + "sha256:841ea19b43d438a80b4de62ac6ab21cfe6827bb8a9dc62b896acc88eaf9cecba", + "sha256:84610c1502b2461255b4c9b7d5e9c48052601a8957cd0aea6ec7a7a1e1fb9420", + "sha256:899c5e1928eec13fd6f6d8dc51be23f0d09c5281e40d9cf4273d188d9feeaf9b", + "sha256:8bae29d60768bfa8fb92244b74502b18fae55a80eac13c88eb0b496d4268fd2d", + "sha256:8df3de3a9ab8325f94f646609a66cbeeede263910c5c0de0101079ad541af332", + "sha256:8fa3c6e3305aa1146b59a09b32b2e04074945ffcfb2f0931836d103a2c38f936", + "sha256:924620eef691990dfb56dc4709f280f40baee568c794b5c1885800c3ecc69816", + "sha256:9309869032abb23d196cb4e4db574232abe8b8be1339026f489eeb34a4acfd91", + "sha256:9545a33965d0d377b0bc823dcabf26980e77f1b6a7caa368a365a9497fb09420", + "sha256:9ac5995f2b408017b0be26d4a1d7c61bce106ff3d9e3324374d66b5964325448", + "sha256:9bbbcedd75acdfecf2159663b87f1bb5cfc80e7cd99f7ddd9d66eb98b14a8411", + "sha256:a4ae8135b11652b08a8baf07631d3ebfe65a4c87909dbef5fa0cdde440444ee4", + "sha256:a6394d7dadd3cfe3f4b3b186e54d5d8504d44f2d58dcc89d693698e8b7132b32", + "sha256:a97b4fe50b5890d36300820abd305694cb865ddb7885049587a5678215782a6b", + "sha256:ae4dc05c465a08a866b7a1baf360747078b362e6a6dbeb0c57f234db0ef88ae0", + "sha256:b1c63e8d377d039ac769cd0926558bb7068a1f7abb0f003e3717ee003ad85530", + "sha256:b1e2c1185858d7e10ff045c496bbf90ae752c28b365fef2c09cf0fa309291669", + "sha256:b4395e2f8d83fbe0c627b2b696acce67868793d7d9750e90e39592b3626691b7", + "sha256:b756072364347cb6aa5b60f9bc18e94b2f79632de3b0190253ad770c5df17db1", + "sha256:ba64dc2b3b7b158c6660d49cdb1d872d1d0bf4e42043ad8d5006099479a194e5", + "sha256:bed331fe18f58d844d39ceb398b77d6ac0b010d571cba8267c2e7165806b00ce", + "sha256:c188512b43542b1e91cadc3c6c915a82a5eb95929134faf7fd109f14f9892ce4", + "sha256:c21b9aa40e08e4f63a2f92ff3748e6b6c84d717d033c7b3438dd3123ee18f70e", + "sha256:ca713d4af15bae6e5d79b15c10c8522859a9a89d3b361a50b817c98c2fb402a2", + "sha256:cd4210baef299717db0a600d7a3cac81d46ef0e007f88c9335db79f8979c0d3d", + "sha256:cfe33efc9cb900a4c46f91a5ceba26d6df370ffddd9ca386eb1d4f0ad97b9ea9", + "sha256:d5cd3ab21acbdb414bb6c31958d7b06b85eeb40f66463c264a9b343a4e238642", + "sha256:dfbac4c2dfcc082fcf8d942d1e49b6aa0766c19d3358bd86e2000bf0fa4a9cf0", + "sha256:e235688f42b36be2b6b06fc37ac2126a73b75fb8d6bc66dd632aa35286238703", + "sha256:eb82dbba47a8318e75f679690190c10a5e1f447fbf9df41cbc4c3afd726d88cb", + "sha256:ebb86518203e12e96af765ee89034a1dbb0c3c65052d1b0c19bbbd6af8a145e1", + "sha256:ee78feb9d293c323b59a6f2dd441b63339a30edf35abcb51187d2fc26e696d13", + "sha256:eedab4c310c0299961ac285591acd53dc6723a1ebd90a57207c71f6e0c2153ab", + "sha256:efa568b885bca461f7c7b9e032655c0c143d305bf01c30caf6db2854a4532b38", + "sha256:efce6ae830831ab6a22b9b4091d411698145cb9b8fc869e1397ccf4b4b6455cb", + "sha256:f163d2fd041c630fed01bc48d28c3ed4a3b003c00acd396900e11ee5316b56bb", + "sha256:f20380df709d91525e4bee04746ba612a4df0972c1b8f8e1e8af997e678c7b81", + "sha256:f30f1928162e189091cf4d9da2eac617bfe78ef907a761614ff577ef4edfb3c8", + "sha256:f470c92737afa7d4c3aacc001e335062d582053d4dbe73cda126f2d7031068dd", + "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4" + ], + "markers": "python_version >= '3.7'", + "version": "==1.3.3" + }, "gitdb": { "hashes": [ "sha256:6eb990b69df4e15bad899ea868dc46572c3f75339735663b81de79b06f17eb9a", @@ -1857,6 +2054,93 @@ ], "version": "==1.0.5" }, + "multidict": { + "hashes": [ + "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9", + "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8", + "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03", + "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710", + "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161", + "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664", + "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569", + "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067", + "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313", + "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706", + "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2", + "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636", + "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49", + "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93", + "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603", + "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0", + "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60", + "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4", + "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e", + "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1", + "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60", + "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951", + "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc", + "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe", + "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95", + "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d", + "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8", + "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed", + "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2", + "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775", + "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87", + "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c", + "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2", + "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98", + "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3", + "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe", + "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78", + "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660", + "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176", + "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e", + "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988", + "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c", + "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c", + "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0", + "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449", + "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f", + "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde", + "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5", + "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d", + "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac", + "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a", + "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9", + "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca", + "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11", + "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35", + "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063", + "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b", + "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982", + "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258", + "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1", + "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52", + "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480", + "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7", + "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461", + "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d", + "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc", + "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779", + "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a", + "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547", + "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0", + "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171", + "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf", + "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d", + "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba" + ], + "markers": "python_version >= '3.7'", + "version": "==6.0.4" + }, + "oauth2-client": { + "hashes": [ + "sha256:5381900448ff1ae762eb7c65c501002eac46bb5ca2f49477fdfeaf9e9969f284", + "sha256:7b938ba8166128a3c4c15ad23ca0c95a2468f8e8b6069d019ebc73360c15c7ca" + ], + "version": "==1.4.2" + }, "packageurl-python": { "hashes": [ "sha256:4bad1d3ea4feb5e7a1db5ca8fb690ac9c82ab18e08d500755947b853df68817d", @@ -1921,6 +2205,32 @@ "markers": "python_version >= '3.6'", "version": "==1.0.0" }, + "polling2": { + "hashes": [ + "sha256:90b7da82cf7adbb48029724d3546af93f21ab6e592ec37c8c4619aedd010e342", + "sha256:ad86d56fbd7502f0856cac2d0109d595c18fa6c7fb12c88cee5e5d16c17286c1" + ], + "version": "==0.5.0" + }, + "protobuf": { + "hashes": [ + "sha256:03eee35b60317112a72d19c54d0bff7bc58ff12fea4cd7b018232bd99758ffdf", + "sha256:2b94bd6df92d71bd1234a2ffe7ce96ddf6d10cf637a18d6b55ad0a89fbb7fc21", + "sha256:36f5370a930cb77c8ad2f4135590c672d0d2c72d4a707c7d0058dce4b4b4a598", + "sha256:5f1eba1da2a2f3f7df469fccddef3cc060b8a16cfe3cc65961ad36b4dbcf59c5", + "sha256:6c16657d6717a0c62d5d740cb354fbad1b0d8cb811669e06fc1caa0ff4799ddd", + "sha256:6fe180b56e1169d72ecc4acbd39186339aed20af5384531b8e8979b02bbee159", + "sha256:7cb5b9a05ce52c6a782bb97de52679bd3438ff2b7460eff5da348db65650f227", + "sha256:9744e934ea5855d12191040ea198eaf704ac78665d365a89d9572e3b627c2688", + "sha256:9f5a0fbfcdcc364f3986f9ed9f8bb1328fb84114fd790423ff3d7fdb0f85c2d1", + "sha256:baca40d067dddd62141a129f244703160d278648b569e90bb0e3753067644711", + "sha256:d5a35ff54e3f62e8fc7be02bb0d2fbc212bba1a5a9cc2748090690093996f07b", + "sha256:e62fb869762b4ba18666370e2f8a18f17f8ab92dd4467295c6d38be6f8fef60b", + "sha256:ebde3a023b8e11bfa6c890ef34cd6a8b47d586f26135e86c21344fe433daf2e2" + ], + "markers": "python_version >= '3.7'", + "version": "==4.23.0" + }, "py": { "hashes": [ "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719", @@ -2075,11 +2385,11 @@ }, "requests": { "hashes": [ - "sha256:e8f3c9be120d3333921d213eef078af392fba3933ab7ed2d1cba3b56f2568c3b", - "sha256:f2e34a75f4749019bb0e3effb66683630e4ffeaf75819fb51bebef1bf5aef059" + "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", + "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" ], "markers": "python_version >= '3.7'", - "version": "==2.29.0" + "version": "==2.30.0" }, "requests-mock": { "hashes": [ @@ -2189,13 +2499,21 @@ ], "version": "==0.5.1" }, + "websocket-client": { + "hashes": [ + "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40", + "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e" + ], + "markers": "python_version >= '3.7'", + "version": "==1.5.1" + }, "werkzeug": { "hashes": [ - "sha256:4866679a0722de00796a74086238bb3b98d90f423f05de039abb09315487254a", - "sha256:a987caf1092edc7523edb139edb20c70571c4a8d5eed02e0b547b4739174d091" + "sha256:1d5a58e0377d1fe39d061a5de4469e414e78ccb1e1e59c0f5ad6fa1c36c52b76", + "sha256:48e5e61472fee0ddee27ebad085614ebedb7af41e88f687aaf881afb723a162f" ], "index": "pypi", - "version": "==2.3.3" + "version": "==2.3.4" }, "xmltodict": { "hashes": [ @@ -2204,6 +2522,86 @@ ], "markers": "python_version >= '3.4'", "version": "==0.13.0" + }, + "yarl": { + "hashes": [ + "sha256:04ab9d4b9f587c06d801c2abfe9317b77cdf996c65a90d5e84ecc45010823571", + "sha256:066c163aec9d3d073dc9ffe5dd3ad05069bcb03fcaab8d221290ba99f9f69ee3", + "sha256:13414591ff516e04fcdee8dc051c13fd3db13b673c7a4cb1350e6b2ad9639ad3", + "sha256:149ddea5abf329752ea5051b61bd6c1d979e13fbf122d3a1f9f0c8be6cb6f63c", + "sha256:159d81f22d7a43e6eabc36d7194cb53f2f15f498dbbfa8edc8a3239350f59fe7", + "sha256:1b1bba902cba32cdec51fca038fd53f8beee88b77efc373968d1ed021024cc04", + "sha256:22a94666751778629f1ec4280b08eb11815783c63f52092a5953faf73be24191", + "sha256:2a96c19c52ff442a808c105901d0bdfd2e28575b3d5f82e2f5fd67e20dc5f4ea", + "sha256:2b0738fb871812722a0ac2154be1f049c6223b9f6f22eec352996b69775b36d4", + "sha256:2c315df3293cd521033533d242d15eab26583360b58f7ee5d9565f15fee1bef4", + "sha256:32f1d071b3f362c80f1a7d322bfd7b2d11e33d2adf395cc1dd4df36c9c243095", + "sha256:3458a24e4ea3fd8930e934c129b676c27452e4ebda80fbe47b56d8c6c7a63a9e", + "sha256:38a3928ae37558bc1b559f67410df446d1fbfa87318b124bf5032c31e3447b74", + "sha256:3da8a678ca8b96c8606bbb8bfacd99a12ad5dd288bc6f7979baddd62f71c63ef", + "sha256:494053246b119b041960ddcd20fd76224149cfea8ed8777b687358727911dd33", + "sha256:50f33040f3836e912ed16d212f6cc1efb3231a8a60526a407aeb66c1c1956dde", + "sha256:52a25809fcbecfc63ac9ba0c0fb586f90837f5425edfd1ec9f3372b119585e45", + "sha256:53338749febd28935d55b41bf0bcc79d634881195a39f6b2f767870b72514caf", + "sha256:5415d5a4b080dc9612b1b63cba008db84e908b95848369aa1da3686ae27b6d2b", + "sha256:5610f80cf43b6202e2c33ba3ec2ee0a2884f8f423c8f4f62906731d876ef4fac", + "sha256:566185e8ebc0898b11f8026447eacd02e46226716229cea8db37496c8cdd26e0", + "sha256:56ff08ab5df8429901ebdc5d15941b59f6253393cb5da07b4170beefcf1b2528", + "sha256:59723a029760079b7d991a401386390c4be5bfec1e7dd83e25a6a0881859e716", + "sha256:5fcd436ea16fee7d4207c045b1e340020e58a2597301cfbcfdbe5abd2356c2fb", + "sha256:61016e7d582bc46a5378ffdd02cd0314fb8ba52f40f9cf4d9a5e7dbef88dee18", + "sha256:63c48f6cef34e6319a74c727376e95626f84ea091f92c0250a98e53e62c77c72", + "sha256:646d663eb2232d7909e6601f1a9107e66f9791f290a1b3dc7057818fe44fc2b6", + "sha256:662e6016409828ee910f5d9602a2729a8a57d74b163c89a837de3fea050c7582", + "sha256:674ca19cbee4a82c9f54e0d1eee28116e63bc6fd1e96c43031d11cbab8b2afd5", + "sha256:6a5883464143ab3ae9ba68daae8e7c5c95b969462bbe42e2464d60e7e2698368", + "sha256:6e7221580dc1db478464cfeef9b03b95c5852cc22894e418562997df0d074ccc", + "sha256:75df5ef94c3fdc393c6b19d80e6ef1ecc9ae2f4263c09cacb178d871c02a5ba9", + "sha256:783185c75c12a017cc345015ea359cc801c3b29a2966c2655cd12b233bf5a2be", + "sha256:822b30a0f22e588b32d3120f6d41e4ed021806418b4c9f0bc3048b8c8cb3f92a", + "sha256:8288d7cd28f8119b07dd49b7230d6b4562f9b61ee9a4ab02221060d21136be80", + "sha256:82aa6264b36c50acfb2424ad5ca537a2060ab6de158a5bd2a72a032cc75b9eb8", + "sha256:832b7e711027c114d79dffb92576acd1bd2decc467dec60e1cac96912602d0e6", + "sha256:838162460b3a08987546e881a2bfa573960bb559dfa739e7800ceeec92e64417", + "sha256:83fcc480d7549ccebe9415d96d9263e2d4226798c37ebd18c930fce43dfb9574", + "sha256:84e0b1599334b1e1478db01b756e55937d4614f8654311eb26012091be109d59", + "sha256:891c0e3ec5ec881541f6c5113d8df0315ce5440e244a716b95f2525b7b9f3608", + "sha256:8c2ad583743d16ddbdf6bb14b5cd76bf43b0d0006e918809d5d4ddf7bde8dd82", + "sha256:8c56986609b057b4839968ba901944af91b8e92f1725d1a2d77cbac6972b9ed1", + "sha256:8ea48e0a2f931064469bdabca50c2f578b565fc446f302a79ba6cc0ee7f384d3", + "sha256:8ec53a0ea2a80c5cd1ab397925f94bff59222aa3cf9c6da938ce05c9ec20428d", + "sha256:95d2ecefbcf4e744ea952d073c6922e72ee650ffc79028eb1e320e732898d7e8", + "sha256:9b3152f2f5677b997ae6c804b73da05a39daa6a9e85a512e0e6823d81cdad7cc", + "sha256:9bf345c3a4f5ba7f766430f97f9cc1320786f19584acc7086491f45524a551ac", + "sha256:a60347f234c2212a9f0361955007fcf4033a75bf600a33c88a0a8e91af77c0e8", + "sha256:a74dcbfe780e62f4b5a062714576f16c2f3493a0394e555ab141bf0d746bb955", + "sha256:a83503934c6273806aed765035716216cc9ab4e0364f7f066227e1aaea90b8d0", + "sha256:ac9bb4c5ce3975aeac288cfcb5061ce60e0d14d92209e780c93954076c7c4367", + "sha256:aff634b15beff8902d1f918012fc2a42e0dbae6f469fce134c8a0dc51ca423bb", + "sha256:b03917871bf859a81ccb180c9a2e6c1e04d2f6a51d953e6a5cdd70c93d4e5a2a", + "sha256:b124e2a6d223b65ba8768d5706d103280914d61f5cae3afbc50fc3dfcc016623", + "sha256:b25322201585c69abc7b0e89e72790469f7dad90d26754717f3310bfe30331c2", + "sha256:b7232f8dfbd225d57340e441d8caf8652a6acd06b389ea2d3222b8bc89cbfca6", + "sha256:b8cc1863402472f16c600e3e93d542b7e7542a540f95c30afd472e8e549fc3f7", + "sha256:b9a4e67ad7b646cd6f0938c7ebfd60e481b7410f574c560e455e938d2da8e0f4", + "sha256:be6b3fdec5c62f2a67cb3f8c6dbf56bbf3f61c0f046f84645cd1ca73532ea051", + "sha256:bf74d08542c3a9ea97bb8f343d4fcbd4d8f91bba5ec9d5d7f792dbe727f88938", + "sha256:c027a6e96ef77d401d8d5a5c8d6bc478e8042f1e448272e8d9752cb0aff8b5c8", + "sha256:c0c77533b5ed4bcc38e943178ccae29b9bcf48ffd1063f5821192f23a1bd27b9", + "sha256:c1012fa63eb6c032f3ce5d2171c267992ae0c00b9e164efe4d73db818465fac3", + "sha256:c3a53ba34a636a256d767c086ceb111358876e1fb6b50dfc4d3f4951d40133d5", + "sha256:d4e2c6d555e77b37288eaf45b8f60f0737c9efa3452c6c44626a5455aeb250b9", + "sha256:de119f56f3c5f0e2fb4dee508531a32b069a5f2c6e827b272d1e0ff5ac040333", + "sha256:e65610c5792870d45d7b68c677681376fcf9cc1c289f23e8e8b39c1485384185", + "sha256:e9fdc7ac0d42bc3ea78818557fab03af6181e076a2944f43c38684b4b6bed8e3", + "sha256:ee4afac41415d52d53a9833ebae7e32b344be72835bbb589018c9e938045a560", + "sha256:f364d3480bffd3aa566e886587eaca7c8c04d74f6e8933f3f2c996b7f09bee1b", + "sha256:f3b078dbe227f79be488ffcfc7a9edb3409d018e0952cf13f15fd6512847f3f7", + "sha256:f4e2d08f07a3d7d3e12549052eb5ad3eab1c349c53ac51c209a0e5991bbada78", + "sha256:f7a3d8146575e08c29ed1cd287068e6d02f1c7bdff8970db96683b9591b86ee7" + ], + "markers": "python_version >= '3.7'", + "version": "==1.9.2" } } } diff --git a/docs/run-book.md b/docs/run-book.md index db47e8496..3619a377f 100644 --- a/docs/run-book.md +++ b/docs/run-book.md @@ -153,6 +153,7 @@ Important policies: * All users must utilize `.gov` email addresses. * Users who leave the team or otherwise have role changes must have their accounts updated to reflect the new roles required (or disabled) within 14 days. * SpaceDeployer credentials must be rotated within 14 days of anyone with SpaceDeveloper cloud.gov access leaving the team. +* A user report must be created annually (See AC-2(j)). `make cloudgov-user-report` can be used to create a full report of all cloud.gov users. ### Types of Infrastructure Users diff --git a/terraform/ops/cloudgov_user_report.py b/terraform/ops/cloudgov_user_report.py new file mode 100644 index 000000000..e4c6d7984 --- /dev/null +++ b/terraform/ops/cloudgov_user_report.py @@ -0,0 +1,84 @@ +from subprocess import check_output + +from cloudfoundry_client.client import CloudFoundryClient + +ORG_NAME = "gsa-tts-benefits-studio-prototyping" + + +client = CloudFoundryClient.build_from_cf_config() +org_guid = check_output(f"cf org {ORG_NAME} --guid", shell=True).decode().strip() +space_guids = list(map(lambda item: item['guid'], client.v3.spaces.list(organization_guids=org_guid))) + + +class RoleCollector: + def __init__(self): + self._map = {} + + def add(self, role): + user = role.user + if self._map.get(user.guid) is None: + self._map[user.guid] = { + "user": user, + "roles": [role] + } + else: + self._map[user.guid]["roles"].append(role) + + def iterator(self): + for key in self._map.keys(): + yield self._map[key] + + +role_collector = RoleCollector() + + +class User: + def __init__(self, entity): + self.guid = entity['guid'] + self._username = entity['username'] + self._is_service_account = entity['origin'] != 'gsa.gov' + self.type = 'Bot' if self._is_service_account else 'User' + + @property + def username(self): + if self._is_service_account: + return client.v3.service_credential_bindings.get( + self._username, include="service_instance" + ).service_instance()['name'] + else: + return self._username + + +class Space: + def __init__(self, entity): + self.name = entity['name'] + + +class Role: + def __init__(self, entity): + self._fields = entity + self.type = entity['type'] + self.user = User(entity.user()) + + @property + def space(self): + try: + return Space(self._fields.space()) + except AttributeError: + return None + + +for role in map(Role, client.v3.roles.list(organization_guids=org_guid, include="user")): + role_collector.add(role) +for role in map(Role, client.v3.roles.list(space_guids=space_guids, include="user")): + role_collector.add(role) + + +for user_roles in role_collector.iterator(): + user = user_roles['user'] + print(f"{user.type}: {user.username} has roles:") + for role in user_roles['roles']: + if role.space: + print(f" {role.type} in {role.space.name}") + else: + print(f" {role.type}") From 970a777876578e1b8807344e855c48a56a3271a9 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Tue, 9 May 2023 21:54:22 -0400 Subject: [PATCH 36/51] Fix makefile typo --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index f914116fa..c2c83ca1f 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,7 @@ run-celery-beat: ## Run celery beat -A run_celery.notify_celery beat \ --loglevel=INFO -.PHONE: user-report +.PHONY: cloudgov-user-report cloudgov-user-report: @pipenv run python -m terraform.ops.cloudgov_user_report From cb0df5aa64808f0575491b3f34f170c9313d562b Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Tue, 9 May 2023 22:10:36 -0400 Subject: [PATCH 37/51] Only print user report when run directly as a script --- terraform/ops/cloudgov_user_report.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/terraform/ops/cloudgov_user_report.py b/terraform/ops/cloudgov_user_report.py index e4c6d7984..7a26fe28c 100644 --- a/terraform/ops/cloudgov_user_report.py +++ b/terraform/ops/cloudgov_user_report.py @@ -24,9 +24,15 @@ class RoleCollector: else: self._map[user.guid]["roles"].append(role) - def iterator(self): - for key in self._map.keys(): - yield self._map[key] + def print(self): + for user_roles in self._map.values(): + user = user_roles['user'] + print(f"{user.type}: {user.username} has roles:") + for role in user_roles['roles']: + if role.space: + print(f" {role.type} in {role.space.name}") + else: + print(f" {role.type}") role_collector = RoleCollector() @@ -74,11 +80,5 @@ for role in map(Role, client.v3.roles.list(space_guids=space_guids, include="use role_collector.add(role) -for user_roles in role_collector.iterator(): - user = user_roles['user'] - print(f"{user.type}: {user.username} has roles:") - for role in user_roles['roles']: - if role.space: - print(f" {role.type} in {role.space.name}") - else: - print(f" {role.type}") +if __name__ == '__main__': + role_collector.print() From 6e597aafadc19bd80c03c1e836b449c19d6e4970 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 18 May 2023 09:46:36 -0700 Subject: [PATCH 38/51] notify-34 fix skipped tests --- tests/app/celery/test_reporting_tasks.py | 11 +++-------- tests/app/clients/test_sms.py | 8 +++----- tests/app/dao/test_fact_billing_dao.py | 2 -- tests/app/dao/test_jobs_dao.py | 2 +- tests/app/dao/test_services_dao.py | 4 ---- tests/app/notifications/test_validators.py | 1 - tests/app/v2/notifications/test_post_notifications.py | 1 - 7 files changed, 7 insertions(+), 22 deletions(-) diff --git a/tests/app/celery/test_reporting_tasks.py b/tests/app/celery/test_reporting_tasks.py index 987e4bc8f..f9e3ef0eb 100644 --- a/tests/app/celery/test_reporting_tasks.py +++ b/tests/app/celery/test_reporting_tasks.py @@ -108,10 +108,9 @@ def test_create_nightly_notification_status_triggers_relevant_tasks( assert types == expected_types_aggregated -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_create_nightly_billing_for_day_checks_history( sample_service, - sample_sms_template, + sample_template, mocker ): yesterday = datetime.now() - timedelta(days=1) @@ -119,13 +118,13 @@ def test_create_nightly_billing_for_day_checks_history( create_notification( created_at=yesterday, - template=sample_sms_template, + template=sample_template, status='sending', ) create_notification_history( created_at=yesterday, - template=sample_sms_template, + template=sample_template, status='delivered', ) @@ -141,7 +140,6 @@ def test_create_nightly_billing_for_day_checks_history( assert record.notifications_sent == 2 -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") @pytest.mark.parametrize('second_rate, records_num, billable_units, multiplier', [(1.0, 1, 2, [1]), (2.0, 2, 1, [1, 2])]) @@ -193,7 +191,6 @@ def test_create_nightly_billing_for_day_sms_rate_multiplier( assert record.rate_multiplier == multiplier[i] -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_create_nightly_billing_for_day_different_templates( sample_service, sample_template, @@ -285,7 +282,6 @@ def test_create_nightly_billing_for_day_different_sent_by( assert record.rate_multiplier == 1.0 -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_create_nightly_billing_for_day_null_sent_by_sms( sample_service, sample_template, @@ -497,7 +493,6 @@ def test_create_nightly_notification_status_for_service_and_day(notify_db_sessio assert sms_delivered_row.key_type == KEY_TYPE_NORMAL -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_create_nightly_notification_status_for_service_and_day_overwrites_old_data(notify_db_session): first_service = create_service(service_name='First Service') first_template = create_template(service=first_service) diff --git a/tests/app/clients/test_sms.py b/tests/app/clients/test_sms.py index db8eb1a01..5bd9bb758 100644 --- a/tests/app/clients/test_sms.py +++ b/tests/app/clients/test_sms.py @@ -15,9 +15,8 @@ def fake_client(notify_api): return fake_client -@pytest.mark.skip(reason="Needs updating for TTS: New SMS client") def test_send_sms(fake_client, mocker): - mock_send = mocker.patch.object(fake_client, 'try_send_sms') + mock_send = mocker.patch.object(fake_client, 'send_sms') fake_client.send_sms( to='to', @@ -28,14 +27,13 @@ def test_send_sms(fake_client, mocker): ) mock_send.assert_called_with( - 'to', 'content', 'reference', False, 'testing' + to='to', content='content', reference='reference', international=False, sender='testing' ) -@pytest.mark.skip(reason="Needs updating for TTS: New SMS client") def test_send_sms_error(fake_client, mocker): mocker.patch.object( - fake_client, 'try_send_sms', side_effect=SmsClientResponseException('error') + fake_client, 'send_sms', side_effect=SmsClientResponseException('error') ) with pytest.raises(SmsClientResponseException): diff --git a/tests/app/dao/test_fact_billing_dao.py b/tests/app/dao/test_fact_billing_dao.py index edb4e3692..f1f7650e3 100644 --- a/tests/app/dao/test_fact_billing_dao.py +++ b/tests/app/dao/test_fact_billing_dao.py @@ -211,8 +211,6 @@ def test_fetch_billing_data_for_day_returns_empty_list(notify_db_session): assert results == [] -# TODO: ready for reactivation? -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_fetch_billing_data_for_day_uses_correct_table(notify_db_session): service = create_service() create_service_data_retention(service, notification_type='email', days_of_retention=3) diff --git a/tests/app/dao/test_jobs_dao.py b/tests/app/dao/test_jobs_dao.py index 335dece62..76da1fcfe 100644 --- a/tests/app/dao/test_jobs_dao.py +++ b/tests/app/dao/test_jobs_dao.py @@ -116,7 +116,7 @@ def test_get_jobs_for_service(sample_template): assert one_job_from_db != other_job_from_db -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") +# @pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_get_jobs_for_service_with_limit_days_param(sample_template): one_job = create_job(sample_template) old_job = create_job(sample_template, created_at=datetime.now() - timedelta(days=8)) diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index d6ec13c3f..5db134670 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -871,7 +871,6 @@ def test_dao_fetch_todays_stats_for_service_only_includes_during_utc(notify_db_s assert not stats.get('permanent-failure') -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_dao_fetch_todays_stats_for_all_services_includes_all_services(notify_db_session): # two services, each with an email and sms notification service1 = create_service(service_name='service 1', email_from='service.1') @@ -910,7 +909,6 @@ def test_dao_fetch_todays_stats_for_all_services_only_includes_today(notify_db_s assert stats['failed'] == 1 -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_dao_fetch_todays_stats_for_all_services_groups_correctly(notify_db_session): service1 = create_service(service_name='service 1', email_from='service.1') service2 = create_service(service_name='service 2', email_from='service.2') @@ -937,7 +935,6 @@ def test_dao_fetch_todays_stats_for_all_services_groups_correctly(notify_db_sess service2.created_at, 'sms', 'created', 1) in stats -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_dao_fetch_todays_stats_for_all_services_includes_all_keys_by_default(notify_db_session): template = create_template(service=create_service()) create_notification(template=template, key_type=KEY_TYPE_NORMAL) @@ -950,7 +947,6 @@ def test_dao_fetch_todays_stats_for_all_services_includes_all_keys_by_default(no assert stats[0].count == 3 -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_dao_fetch_todays_stats_for_all_services_can_exclude_from_test_key(notify_db_session): template = create_template(service=create_service()) create_notification(template=template, key_type=KEY_TYPE_NORMAL) diff --git a/tests/app/notifications/test_validators.py b/tests/app/notifications/test_validators.py index bb764a80a..52e797ebe 100644 --- a/tests/app/notifications/test_validators.py +++ b/tests/app/notifications/test_validators.py @@ -587,7 +587,6 @@ def test_check_reply_to_sms_type(sample_service): assert check_reply_to(sample_service.id, sms_sender.id, SMS_TYPE) == '123456' -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_check_if_service_can_send_files_by_email_raises_if_no_contact_link_set(sample_service): with pytest.raises(BadRequestError) as e: check_if_service_can_send_files_by_email( diff --git a/tests/app/v2/notifications/test_post_notifications.py b/tests/app/v2/notifications/test_post_notifications.py index 91189a3a1..bb011ecd8 100644 --- a/tests/app/v2/notifications/test_post_notifications.py +++ b/tests/app/v2/notifications/test_post_notifications.py @@ -238,7 +238,6 @@ def test_should_cache_template_lookups_in_memory(mocker, client, sample_template assert Notification.query.count() == 5 -@pytest.mark.skip(reason="Needs updating for TTS: cloud.gov redis fails, local docker works, mock redis fails") def test_should_cache_template_and_service_in_redis(mocker, client, sample_template): from app.schemas import service_schema, template_schema From d8c3b0dfe4ab15257f98a8ce5529aa0d88921acf Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 18 May 2023 10:56:58 -0700 Subject: [PATCH 39/51] fix more skips --- tests/app/celery/test_provider_tasks.py | 3 -- tests/app/celery/test_reporting_tasks.py | 7 ++--- tests/app/organisation/test_invite_rest.py | 1 - tests/app/performance_dashboard/test_rest.py | 29 +++----------------- tests/app/test_route_authentication.py | 5 ---- 5 files changed, 7 insertions(+), 38 deletions(-) diff --git a/tests/app/celery/test_provider_tasks.py b/tests/app/celery/test_provider_tasks.py index d4a9070bf..f920cb5d8 100644 --- a/tests/app/celery/test_provider_tasks.py +++ b/tests/app/celery/test_provider_tasks.py @@ -89,7 +89,6 @@ def test_should_retry_and_log_exception_for_non_SmsClientResponseException_excep assert mock_logger_exception.called -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_should_go_into_technical_error_if_exceeds_retries_on_deliver_sms_task(sample_notification, mocker): mocker.patch('app.delivery.send_to_providers.send_sms_to_provider', side_effect=Exception("EXPECTED")) mocker.patch('app.celery.provider_tasks.deliver_sms.retry', side_effect=MaxRetriesExceededError()) @@ -128,7 +127,6 @@ def test_should_add_to_retry_queue_if_notification_not_found_in_deliver_email_ta app.celery.provider_tasks.deliver_email.retry.assert_called_with(queue="retry-tasks") -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") @pytest.mark.parametrize( 'exception_class', [ Exception(), @@ -150,7 +148,6 @@ def test_should_go_into_technical_error_if_exceeds_retries_on_deliver_email_task assert sample_notification.status == 'technical-failure' -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_should_technical_error_and_not_retry_if_EmailClientNonRetryableException(sample_notification, mocker): mocker.patch( 'app.delivery.send_to_providers.send_email_to_provider', diff --git a/tests/app/celery/test_reporting_tasks.py b/tests/app/celery/test_reporting_tasks.py index f9e3ef0eb..02f5c0e2a 100644 --- a/tests/app/celery/test_reporting_tasks.py +++ b/tests/app/celery/test_reporting_tasks.py @@ -237,8 +237,7 @@ def test_create_nightly_billing_for_day_different_templates( assert record.rate_multiplier == multiplier[i] -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") -def test_create_nightly_billing_for_day_different_sent_by( +def test_create_nightly_billing_for_day_same_sent_by( sample_service, sample_template, sample_email_template, @@ -273,12 +272,12 @@ def test_create_nightly_billing_for_day_different_sent_by( create_nightly_billing_for_day(str(yesterday.date())) records = FactBilling.query.order_by('rate_multiplier').all() - assert len(records) == 2 + assert len(records) == 1 for _, record in enumerate(records): assert record.local_date == datetime.date(yesterday) assert record.rate == Decimal(1.33) - assert record.billable_units == 1 + assert record.billable_units == 2 assert record.rate_multiplier == 1.0 diff --git a/tests/app/organisation/test_invite_rest.py b/tests/app/organisation/test_invite_rest.py index a3e544370..905fa016f 100644 --- a/tests/app/organisation/test_invite_rest.py +++ b/tests/app/organisation/test_invite_rest.py @@ -10,7 +10,6 @@ from tests import create_admin_authorization_header from tests.app.db import create_invited_org_user -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") @pytest.mark.parametrize('platform_admin, expected_invited_by', ( (True, 'The GOV.UK Notify team'), (False, 'Test User') diff --git a/tests/app/performance_dashboard/test_rest.py b/tests/app/performance_dashboard/test_rest.py index 5ac33c1b0..0fe55dc04 100644 --- a/tests/app/performance_dashboard/test_rest.py +++ b/tests/app/performance_dashboard/test_rest.py @@ -1,7 +1,5 @@ from datetime import date -import pytest - from tests.app.db import ( create_ft_notification_status, create_process_time, @@ -9,11 +7,9 @@ from tests.app.db import ( ) -@pytest.mark.skip(reason="Needs updating for TTS: Needs updating for new providers") def test_performance_dashboard(sample_service, admin_request): template_sms = create_template(service=sample_service, template_type='sms', template_name='a') template_email = create_template(service=sample_service, template_type='email', template_name='b') - template_letter = create_template(service=sample_service, template_type='letter', template_name='c') create_ft_notification_status(local_date=date(2021, 2, 28), service=template_email.service, template=template_email, @@ -22,10 +18,6 @@ def test_performance_dashboard(sample_service, admin_request): service=template_sms.service, template=template_sms, count=5) - create_ft_notification_status(local_date=date(2021, 2, 28), - service=template_letter.service, - template=template_letter, - count=2) create_ft_notification_status(local_date=date(2021, 3, 1), service=template_email.service, template=template_email, @@ -34,10 +26,6 @@ def test_performance_dashboard(sample_service, admin_request): service=template_sms.service, template=template_sms, count=20) - create_ft_notification_status(local_date=date(2021, 3, 1), - service=template_letter.service, - template=template_letter, - count=3) create_ft_notification_status(local_date=date(2021, 3, 2), service=template_email.service, template=template_email, @@ -46,10 +34,6 @@ def test_performance_dashboard(sample_service, admin_request): service=template_sms.service, template=template_sms, count=30) - create_ft_notification_status(local_date=date(2021, 3, 2), - service=template_letter.service, - template=template_letter, - count=10) create_ft_notification_status(local_date=date(2021, 3, 3), service=template_email.service, template=template_email, @@ -58,10 +42,6 @@ def test_performance_dashboard(sample_service, admin_request): service=template_sms.service, template=template_sms, count=35) - create_ft_notification_status(local_date=date(2021, 3, 3), - service=template_letter.service, - template=template_letter, - count=15) create_process_time(local_date='2021-02-28', messages_total=15, messages_within_10_secs=14) create_process_time(local_date='2021-03-01', messages_total=35, messages_within_10_secs=34) @@ -72,13 +52,12 @@ def test_performance_dashboard(sample_service, admin_request): start_date='2021-03-01', end_date='2021-03-02') - assert results['total_notifications'] == 10+5+2+15+20+3+25+30+10+45+35+15 + assert results['total_notifications'] == 185 assert results['email_notifications'] == 10+15+25+45 assert results['sms_notifications'] == 5+20+30+35 - assert results['letter_notifications'] == 2+3+10+15 - assert results['notifications_by_type'] == [{"date": '2021-03-01', "emails": 15, "sms": 20, "letters": 3}, - {"date": '2021-03-02', "emails": 25, "sms": 30, "letters": 10}] - assert results['processing_time'] == [{"date": "2021-03-01", "percentage_under_10_seconds": 97.1428571428571}, + assert results['notifications_by_type'] == [{"date": '2021-03-01', "emails": 15, "sms": 20}, + {"date": '2021-03-02', "emails": 25, "sms": 30}] + assert results['processing_time'] == [{"date": "2021-03-01", "percentage_under_10_seconds": 97.14285714285714}, {"date": "2021-03-02", "percentage_under_10_seconds": 80.0}] assert results["live_service_count"] == 1 assert results["services_using_notify"][0]["service_name"] == sample_service.name diff --git a/tests/app/test_route_authentication.py b/tests/app/test_route_authentication.py index f1c2dec56..e8ed40583 100644 --- a/tests/app/test_route_authentication.py +++ b/tests/app/test_route_authentication.py @@ -1,8 +1,3 @@ - -import pytest - - -@pytest.mark.skip(reason="Needs updating for TTS") def test_all_routes_have_authentication(client): # This tests that each blueprint registered on the application has a before_request function registered. # The None row is removed from the comparison as that is not blueprint specific but app specific. From 3c086703868bfcd3f317eff16639e549999d6e97 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 18 May 2023 12:54:05 -0700 Subject: [PATCH 40/51] fix more skips --- tests/app/dao/test_jobs_dao.py | 1 - tests/app/dao/test_uploads_dao.py | 112 +----------------- tests/app/organisation/test_rest.py | 1 - tests/app/service/test_rest.py | 4 - .../test_service_invite_rest.py | 1 - tests/app/user/test_rest.py | 1 - 6 files changed, 4 insertions(+), 116 deletions(-) diff --git a/tests/app/dao/test_jobs_dao.py b/tests/app/dao/test_jobs_dao.py index 76da1fcfe..6eb1d0206 100644 --- a/tests/app/dao/test_jobs_dao.py +++ b/tests/app/dao/test_jobs_dao.py @@ -116,7 +116,6 @@ def test_get_jobs_for_service(sample_template): assert one_job_from_db != other_job_from_db -# @pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_get_jobs_for_service_with_limit_days_param(sample_template): one_job = create_job(sample_template) old_job = create_job(sample_template, created_at=datetime.now() - timedelta(days=8)) diff --git a/tests/app/dao/test_uploads_dao.py b/tests/app/dao/test_uploads_dao.py index a17a20a2e..1c82ba954 100644 --- a/tests/app/dao/test_uploads_dao.py +++ b/tests/app/dao/test_uploads_dao.py @@ -38,39 +38,21 @@ def create_uploaded_template(service): ) -@pytest.mark.skip(reason="Investigate what remains after removing letters") @freeze_time("2020-02-02 09:00") # GMT time def test_get_uploads_for_service(sample_template): create_service_data_retention(sample_template.service, 'sms', days_of_retention=9) job = create_job(sample_template, processing_started=datetime.utcnow()) - letter_template = create_uploaded_template(sample_template.service) - letter = create_uploaded_letter(letter_template, sample_template.service) other_service = create_service(service_name="other service") other_template = create_template(service=other_service) other_job = create_job(other_template, processing_started=datetime.utcnow()) - other_letter_template = create_uploaded_template(other_service) - create_uploaded_letter(other_letter_template, other_service) uploads_from_db = dao_get_uploads_by_service_id(job.service_id).items other_uploads_from_db = dao_get_uploads_by_service_id(other_job.service_id).items - assert len(uploads_from_db) == 2 + assert len(uploads_from_db) == 1 assert uploads_from_db[0] == ( - None, - 'Uploaded letters', - 1, - 'letter', - None, - letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), - None, - letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), - None, - 'letter_day', - None, - ) - assert uploads_from_db[1] == ( job.id, job.original_file_name, job.notification_count, @@ -84,21 +66,8 @@ def test_get_uploads_for_service(sample_template): None, ) - assert len(other_uploads_from_db) == 2 - assert other_uploads_from_db[0] == ( - None, - 'Uploaded letters', - 1, - 'letter', - None, - letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), - None, - letter.created_at.replace(hour=22, minute=30, second=0, microsecond=0), - None, - "letter_day", - None, - ) - assert other_uploads_from_db[1] == (other_job.id, + assert len(other_uploads_from_db) == 1 + assert other_uploads_from_db[0] == (other_job.id, other_job.original_file_name, other_job.notification_count, other_job.template.template_type, @@ -110,81 +79,9 @@ def test_get_uploads_for_service(sample_template): "job", None) - assert uploads_from_db[1] != other_uploads_from_db[1] + assert uploads_from_db[0] != other_uploads_from_db[0] -@pytest.mark.skip(reason="Investigate what remains after removing letters") -@freeze_time("2020-02-02 18:00") -def test_get_uploads_for_service_groups_letters(sample_template): - letter_template = create_uploaded_template(sample_template.service) - - # Just gets into yesterday’s print run - create_uploaded_letter(letter_template, sample_template.service, created_at=( - datetime(2020, 2, 1, 22, 29, 59) - )) - - # Yesterday but in today’s print run - create_uploaded_letter(letter_template, sample_template.service, created_at=( - datetime(2020, 2, 1, 22, 30) - )) - # First thing today - create_uploaded_letter(letter_template, sample_template.service, created_at=( - datetime(2020, 2, 2, 5, 0) - )) - # Just before today’s print deadline - create_uploaded_letter(letter_template, sample_template.service, created_at=( - datetime(2020, 2, 2, 22, 29, 59) - )) - - # Just missed today’s print deadline - create_uploaded_letter(letter_template, sample_template.service, created_at=( - datetime(2020, 2, 2, 22, 30) - )) - - uploads_from_db = dao_get_uploads_by_service_id(sample_template.service_id).items - - assert [ - (upload.notification_count, upload.created_at) - for upload in uploads_from_db - ] == [ - (1, datetime(2020, 2, 3, 22, 30)), - (3, datetime(2020, 2, 2, 22, 30)), - (1, datetime(2020, 2, 1, 22, 30)), - ] - - -@pytest.mark.skip(reason="Investigate what remains after removing letters") -def test_get_uploads_does_not_return_cancelled_jobs_or_letters(sample_template): - create_job(sample_template, job_status='scheduled') - create_job(sample_template, job_status='cancelled') - letter_template = create_uploaded_template(sample_template.service) - create_uploaded_letter(letter_template, sample_template.service, status='cancelled') - - assert len(dao_get_uploads_by_service_id(sample_template.service_id).items) == 0 - - -@pytest.mark.skip(reason="Investigate what remains after removing letters") -def test_get_uploads_orders_by_created_at_desc(sample_template): - letter_template = create_uploaded_template(sample_template.service) - - upload_1 = create_job(sample_template, processing_started=datetime.utcnow(), - job_status=JOB_STATUS_IN_PROGRESS) - upload_2 = create_job(sample_template, processing_started=datetime.utcnow(), - job_status=JOB_STATUS_IN_PROGRESS) - create_uploaded_letter(letter_template, sample_template.service, status='delivered') - - results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items - - assert [ - (result.id, result.upload_type) for result in results - ] == [ - (None, 'letter_day'), - (upload_2.id, 'job'), - (upload_1.id, 'job'), - ] - - -@pytest.mark.skip(reason="Investigate what remains after removing letters") def test_get_uploads_orders_by_processing_started_desc(sample_template): days_ago = datetime.utcnow() - timedelta(days=3) upload_1 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1), @@ -315,7 +212,6 @@ def test_get_uploads_is_paginated(sample_template): assert results.items[0].upload_type == 'job' -@pytest.mark.skip(reason="Investigate what remains after removing letters") def test_get_uploads_returns_empty_list(sample_service): items = dao_get_uploads_by_service_id(sample_service.id).items assert items == [] diff --git a/tests/app/organisation/test_rest.py b/tests/app/organisation/test_rest.py index 5aa2763f6..3fcd47d1f 100644 --- a/tests/app/organisation/test_rest.py +++ b/tests/app/organisation/test_rest.py @@ -490,7 +490,6 @@ def test_post_update_organisation_set_mou_doesnt_email_if_no_signed_by( assert queue_mock.called is False -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") @pytest.mark.parametrize('on_behalf_of_name, on_behalf_of_email_address, templates_and_recipients', [ ( None, diff --git a/tests/app/service/test_rest.py b/tests/app/service/test_rest.py index 3f9c98563..4c50545bd 100644 --- a/tests/app/service/test_rest.py +++ b/tests/app/service/test_rest.py @@ -1944,7 +1944,6 @@ def test_get_detailed_service(sample_template, client, sample_service, today_onl assert service['statistics'][SMS_TYPE] == stats -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_get_services_with_detailed_flag(client, sample_template): notifications = [ create_notification(sample_template), @@ -1967,7 +1966,6 @@ def test_get_services_with_detailed_flag(client, sample_template): } -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_get_services_with_detailed_flag_excluding_from_test_key(client, sample_template): create_notification(sample_template, key_type=KEY_TYPE_NORMAL) create_notification(sample_template, key_type=KEY_TYPE_TEAM) @@ -2023,7 +2021,6 @@ def test_get_services_with_detailed_flag_defaults_to_today(client, mocker): assert resp.status_code == 200 -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_get_detailed_services_groups_by_service(notify_db_session): from app.service.rest import get_detailed_services @@ -2054,7 +2051,6 @@ def test_get_detailed_services_groups_by_service(notify_db_session): } -@pytest.mark.skip(reason="Needs updating for TTS: Timezone handling") def test_get_detailed_services_includes_services_with_no_notifications(notify_db_session): from app.service.rest import get_detailed_services diff --git a/tests/app/service_invite/test_service_invite_rest.py b/tests/app/service_invite/test_service_invite_rest.py index b413fca07..eca3d0cf3 100644 --- a/tests/app/service_invite/test_service_invite_rest.py +++ b/tests/app/service_invite/test_service_invite_rest.py @@ -11,7 +11,6 @@ from tests import create_admin_authorization_header from tests.app.db import create_invited_user -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") @pytest.mark.parametrize('extra_args, expected_start_of_invite_url', [ ( {}, diff --git a/tests/app/user/test_rest.py b/tests/app/user/test_rest.py index f06a26275..f52e96121 100644 --- a/tests/app/user/test_rest.py +++ b/tests/app/user/test_rest.py @@ -618,7 +618,6 @@ def test_send_user_reset_password_should_send_reset_password_link(admin_request, assert notification.reply_to_text == notify_service.get_default_reply_to_email_address() -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") @pytest.mark.parametrize('data, expected_url', ( ({ 'email': 'notify@digital.cabinet-office.gov.uk', From 47b530372672439f9381d21c249149a6c320cd1e Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 18 May 2023 14:18:02 -0700 Subject: [PATCH 41/51] fix more skips --- tests/app/dao/test_services_dao.py | 8 +++++--- tests/app/user/test_rest_verify.py | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index 5db134670..e3a67ae39 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -3,6 +3,7 @@ from datetime import datetime, timedelta from unittest import mock import pytest +import sqlalchemy from freezegun import freeze_time from sqlalchemy.exc import IntegrityError from sqlalchemy.orm.exc import NoResultFound @@ -585,7 +586,7 @@ def test_update_service_permission_creates_a_history_record_with_current_data(no assert history[2].version == 3 -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") +# @pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_create_service_and_history_is_transactional(notify_db_session): user = create_user() assert Service.query.count() == 0 @@ -596,10 +597,11 @@ def test_create_service_and_history_is_transactional(notify_db_session): restricted=False, created_by=user) - with pytest.raises(IntegrityError) as excinfo: + try: dao_create_service(service, user) + except sqlalchemy.exc.IntegrityError as seeei: + assert 'null value in column "name" of relation "services_history" violates not-null constraint' in str(seeei) - assert 'column "name" violates not-null constraint' in str(excinfo.value) assert Service.query.count() == 0 assert Service.get_history_model().query.count() == 0 diff --git a/tests/app/user/test_rest_verify.py b/tests/app/user/test_rest_verify.py index 65217f0b2..42bd03cbf 100644 --- a/tests/app/user/test_rest_verify.py +++ b/tests/app/user/test_rest_verify.py @@ -292,7 +292,6 @@ def test_send_sms_code_returns_204_when_too_many_codes_already_created(client, s assert VerifyCode.query.count() == 5 -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") @pytest.mark.parametrize('post_data, expected_url_starts_with', ( ( {}, From cbcddce4f8025da8dbb57e4c4929a0cb3f20aa4d Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Fri, 19 May 2023 08:35:57 -0700 Subject: [PATCH 42/51] notify-34 fix more skips --- app/models.py | 4 +- tests/app/dao/test_services_dao.py | 2 +- tests/app/dao/test_uploads_dao.py | 115 ------------------ .../test_service_invite_rest.py | 5 +- tests/app/user/test_rest.py | 3 - 5 files changed, 5 insertions(+), 124 deletions(-) diff --git a/app/models.py b/app/models.py index 31741b41a..23eb4d107 100644 --- a/app/models.py +++ b/app/models.py @@ -109,7 +109,7 @@ class User(db.Model): platform_admin = db.Column(db.Boolean, nullable=False, default=False) current_session_id = db.Column(UUID(as_uuid=True), nullable=True) auth_type = db.Column( - db.String, db.ForeignKey('auth_type.name'), index=True, nullable=False, default=EMAIL_AUTH_TYPE + db.String, db.ForeignKey('auth_type.name'), index=True, nullable=False, default=SMS_AUTH_TYPE ) email_access_validated_at = db.Column( db.DateTime, index=False, unique=False, nullable=False, default=datetime.datetime.utcnow @@ -1653,7 +1653,7 @@ class InvitedUser(db.Model): db.ForeignKey('auth_type.name'), index=True, nullable=False, - default=EMAIL_AUTH_TYPE + default=SMS_AUTH_TYPE ) folder_permissions = db.Column(JSONB(none_as_null=True), nullable=False, default=[]) diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index e3a67ae39..a7017db27 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -828,7 +828,7 @@ def test_dao_fetch_todays_stats_for_service_only_includes_today_during_bst(notif assert not stats.get('permanent-failure') -@pytest.mark.skip(reason="Need a better way to test variable DST date") +# @pytest.mark.skip(reason="Need a better way to test variable DST date") def test_dao_fetch_todays_stats_for_service_only_includes_today_when_clocks_fall_back(notify_db_session): template = create_template(service=create_service()) with freeze_time('2021-10-30T22:59:59'): diff --git a/tests/app/dao/test_uploads_dao.py b/tests/app/dao/test_uploads_dao.py index 1c82ba954..4251a703a 100644 --- a/tests/app/dao/test_uploads_dao.py +++ b/tests/app/dao/test_uploads_dao.py @@ -1,6 +1,5 @@ from datetime import datetime, timedelta -import pytest from freezegun import freeze_time from app.dao.uploads_dao import dao_get_uploads_by_service_id @@ -98,120 +97,6 @@ def test_get_uploads_orders_by_processing_started_desc(sample_template): assert results[1].id == upload_2.id -@pytest.mark.skip(reason="Investigate what remains after removing letters") -@freeze_time("2020-10-27 16:15") # GMT time -def test_get_uploads_orders_by_processing_started_and_created_at_desc(sample_template): - letter_template = create_uploaded_template(sample_template.service) - - days_ago = datetime.utcnow() - timedelta(days=4) - create_uploaded_letter(letter_template, service=letter_template.service) - upload_2 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=1), - created_at=days_ago, - job_status=JOB_STATUS_IN_PROGRESS) - upload_3 = create_job(sample_template, processing_started=datetime.utcnow() - timedelta(days=2), - created_at=days_ago, - job_status=JOB_STATUS_IN_PROGRESS) - create_uploaded_letter(letter_template, service=letter_template.service, - created_at=datetime.utcnow() - timedelta(days=3)) - - results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items - - assert len(results) == 4 - assert results[0].id is None - assert results[1].id == upload_2.id - assert results[2].id == upload_3.id - assert results[3].id is None - - -@pytest.mark.skip(reason="Investigate what remains after removing letters") -@freeze_time('2020-04-02 14:00') # Few days after the clocks go forward -def test_get_uploads_only_gets_uploads_within_service_retention_period(sample_template): - letter_template = create_uploaded_template(sample_template.service) - create_service_data_retention(sample_template.service, 'sms', days_of_retention=3) - - days_ago = datetime.utcnow() - timedelta(days=4) - upload_1 = create_uploaded_letter(letter_template, service=letter_template.service) - upload_2 = create_job( - sample_template, processing_started=datetime.utcnow() - timedelta(days=1), created_at=days_ago, - job_status=JOB_STATUS_IN_PROGRESS - ) - # older than custom retention for sms: - create_job( - sample_template, processing_started=datetime.utcnow() - timedelta(days=5), created_at=days_ago, - job_status=JOB_STATUS_IN_PROGRESS - ) - upload_3 = create_uploaded_letter( - letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=3) - ) - - # older than retention for sms but within letter retention: - upload_4 = create_uploaded_letter( - letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=6) - ) - - # older than default retention for letters: - create_uploaded_letter( - letter_template, service=letter_template.service, created_at=datetime.utcnow() - timedelta(days=8) - ) - - results = dao_get_uploads_by_service_id(service_id=sample_template.service_id).items - - assert len(results) == 4 - - # Uploaded letters get their `created_at` shifted time of printing - # 21:30 EST == 16:30 UTC - assert results[0].created_at == upload_1.created_at.replace(hour=21, minute=30, second=0, microsecond=0) - - # Jobs keep their original `created_at` - assert results[1].created_at == upload_2.created_at.replace(hour=14, minute=00, second=0, microsecond=0) - - # Still in BST here… - assert results[2].created_at == upload_3.created_at.replace(hour=21, minute=30, second=0, microsecond=0) - - # Now we’ve gone far enough back to be in GMT - # 17:30 GMT == 17:30 UTC - assert results[3].created_at == upload_4.created_at.replace(hour=21, minute=30, second=0, microsecond=0) - - -@pytest.mark.skip(reason="Investigate what remains after removing letters") -@freeze_time('2020-02-02 14:00') -def test_get_uploads_is_paginated(sample_template): - letter_template = create_uploaded_template(sample_template.service) - - create_uploaded_letter( - letter_template, sample_template.service, status='delivered', - created_at=datetime.utcnow() - timedelta(minutes=3), - ) - create_job( - sample_template, processing_started=datetime.utcnow() - timedelta(minutes=2), - job_status=JOB_STATUS_IN_PROGRESS, - ) - create_uploaded_letter( - letter_template, sample_template.service, status='delivered', - created_at=datetime.utcnow() - timedelta(minutes=1), - ) - create_job( - sample_template, processing_started=datetime.utcnow(), - job_status=JOB_STATUS_IN_PROGRESS, - ) - - results = dao_get_uploads_by_service_id(sample_template.service_id, page=1, page_size=1) - - assert results.per_page == 1 - assert results.total == 3 - assert len(results.items) == 1 - assert results.items[0].created_at == datetime.utcnow().replace(hour=22, minute=30, second=0, microsecond=0) - assert results.items[0].notification_count == 2 - assert results.items[0].upload_type == 'letter_day' - - results = dao_get_uploads_by_service_id(sample_template.service_id, page=2, page_size=1) - - assert len(results.items) == 1 - assert results.items[0].created_at == datetime.utcnow().replace(hour=14, minute=0, second=0, microsecond=0) - assert results.items[0].notification_count == 1 - assert results.items[0].upload_type == 'job' - - def test_get_uploads_returns_empty_list(sample_service): items = dao_get_uploads_by_service_id(sample_service.id).items assert items == [] diff --git a/tests/app/service_invite/test_service_invite_rest.py b/tests/app/service_invite/test_service_invite_rest.py index eca3d0cf3..070b0b5d5 100644 --- a/tests/app/service_invite/test_service_invite_rest.py +++ b/tests/app/service_invite/test_service_invite_rest.py @@ -72,7 +72,6 @@ def test_create_invited_user( mocked.assert_called_once_with([(str(notification.id))], queue="notify-internal-tasks") -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_create_invited_user_without_auth_type(admin_request, sample_service, mocker, invitation_email_template): mocker.patch('app.celery.provider_tasks.deliver_email.apply_async') email_address = 'invited_user@service.gov.uk' @@ -125,13 +124,12 @@ def test_create_invited_user_invalid_email(client, sample_service, mocker, fake_ assert mocked.call_count == 0 -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_get_all_invited_users_by_service(client, notify_db_session, sample_service): invites = [] for i in range(0, 5): email = 'invited_user_{}@service.gov.uk'.format(i) invited_user = create_invited_user(sample_service, to_email_address=email) - + print(f"INVITED USER = {invited_user.auth_type}") invites.append(invited_user) url = '/service/{}/invite'.format(sample_service.id) @@ -146,6 +144,7 @@ def test_get_all_invited_users_by_service(client, notify_db_session, sample_serv json_resp = json.loads(response.get_data(as_text=True)) invite_from = sample_service.users[0] + print(f"INVITE FROM {json_resp['data']}") for invite in json_resp['data']: assert invite['service'] == str(sample_service.id) diff --git a/tests/app/user/test_rest.py b/tests/app/user/test_rest.py index f52e96121..ce38f42e7 100644 --- a/tests/app/user/test_rest.py +++ b/tests/app/user/test_rest.py @@ -47,7 +47,6 @@ def test_get_user_list(admin_request, sample_service): assert sorted(expected_permissions) == sorted(fetched['permissions'][str(sample_service.id)]) -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_get_user(admin_request, sample_service, sample_organisation): """ Tests GET endpoint '/' to retrieve a single service. @@ -123,7 +122,6 @@ def test_post_user(admin_request, notify_db_session): assert user.auth_type == EMAIL_AUTH_TYPE -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_post_user_without_auth_type(admin_request, notify_db_session): User.query.delete() data = { @@ -819,7 +817,6 @@ def test_activate_user_fails_if_already_active(admin_request, sample_user): assert sample_user.state == 'active' -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_update_user_auth_type(admin_request, sample_user): assert sample_user.auth_type == 'sms_auth' resp = admin_request.post( From ebb4a37f8d08152409f4052d7673327c40c7fe79 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 22 May 2023 09:12:12 -0700 Subject: [PATCH 43/51] fix more skips --- app/celery/research_mode_tasks.py | 33 ++++----- app/delivery/send_to_providers.py | 2 +- tests/app/celery/test_research_mode_tasks.py | 60 ++++++++--------- tests/app/dao/test_provider_details_dao.py | 70 -------------------- tests/app/delivery/test_send_to_providers.py | 56 ++-------------- 5 files changed, 46 insertions(+), 175 deletions(-) diff --git a/app/celery/research_mode_tasks.py b/app/celery/research_mode_tasks.py index 62344a41a..a72e16fef 100644 --- a/app/celery/research_mode_tasks.py +++ b/app/celery/research_mode_tasks.py @@ -5,6 +5,7 @@ from requests import HTTPError, request from app.celery.process_ses_receipts_tasks import process_ses_results from app.config import QueueNames +from app.dao.notifications_dao import get_notification_by_id from app.models import SMS_TYPE temp_fail = "2028675303" @@ -16,8 +17,8 @@ perm_fail_email = "perm-fail@simulator.notify" temp_fail_email = "temp-fail@simulator.notify" -def send_sms_response(provider, reference, to): - body = sns_callback(reference, to) +def send_sms_response(provider, reference): + body = sns_callback(reference) headers = {"Content-type": "application/json"} make_request(SMS_TYPE, provider, body, headers) @@ -59,25 +60,17 @@ def make_request(notification_type, provider, data, headers): return response.json() -def sns_callback(notification_id, to): - raise Exception("Need to update for SNS callback format along with test_send_to_providers") +def sns_callback(notification_id): + notification = get_notification_by_id(notification_id) - # example from mmg_callback - # if to.strip().endswith(temp_fail): - # # status: 4 - expired (temp failure) - # status = "4" - # elif to.strip().endswith(perm_fail): - # # status: 5 - rejected (perm failure) - # status = "5" - # else: - # # status: 3 - delivered - # status = "3" - - # return json.dumps({"reference": "mmg_reference", - # "CID": str(notification_id), - # "MSISDN": to, - # "status": status, - # "deliverytime": "2016-04-05 16:01:07"}) + # This will only work if all notifications, including successful ones, are in the notifications table + # If we decide to delete successful notifications, we will have to get this from notifications history + print(f"NOTIFICATION_ID {str(notification_id)} status {notification.status} dtime {notification.completed_at}") + return json.dumps({ + "CID": str(notification_id), + "status": notification.status, + # "deliverytime": notification.completed_at + }) def ses_notification_callback(reference): diff --git a/app/delivery/send_to_providers.py b/app/delivery/send_to_providers.py index 380ec7b4d..cd4a766a3 100644 --- a/app/delivery/send_to_providers.py +++ b/app/delivery/send_to_providers.py @@ -61,7 +61,7 @@ def send_sms_to_provider(notification): ) if service.research_mode or notification.key_type == KEY_TYPE_TEST: update_notification_to_sending(notification, provider) - send_sms_response(provider.name, str(notification.id), notification.to) + send_sms_response(provider.name, str(notification.id)) else: try: diff --git a/tests/app/celery/test_research_mode_tasks.py b/tests/app/celery/test_research_mode_tasks.py index 5bc401d54..6c9bad953 100644 --- a/tests/app/celery/test_research_mode_tasks.py +++ b/tests/app/celery/test_research_mode_tasks.py @@ -12,6 +12,7 @@ from app.celery.research_mode_tasks import ( sns_callback, ) from app.config import QueueNames +from app.models import NOTIFICATION_DELIVERED, NOTIFICATION_FAILED, Notification from tests.conftest import Matcher dvla_response_file_matcher = Matcher( @@ -20,24 +21,33 @@ dvla_response_file_matcher = Matcher( ) -@pytest.mark.skip(reason="Re-enable when SMS receipts exist") -def test_make_sns_callback(notify_api, rmock): +def test_make_sns_callback(notify_api, rmock, mocker): endpoint = "http://localhost:6011/notifications/sms/sns" + get_notification_by_id = mocker.patch('app.celery.research_mode_tasks.get_notification_by_id') + n = Notification() + n.id = 1234 + n.status = NOTIFICATION_DELIVERED + get_notification_by_id.return_value = n rmock.request( "POST", endpoint, json={"status": "success"}, status_code=200) - send_sms_response("sns", "1234", "2028675309") + send_sms_response("sns", "1234") assert rmock.called assert rmock.request_history[0].url == endpoint - assert json.loads(rmock.request_history[0].text)['MSISDN'] == '2028675309' + assert json.loads(rmock.request_history[0].text)['status'] == 'delivered' -@pytest.mark.skip(reason="Re-enable when SMS receipts exist") def test_callback_logs_on_api_call_failure(notify_api, rmock, mocker): endpoint = "http://localhost:6011/notifications/sms/sns" + get_notification_by_id = mocker.patch('app.celery.research_mode_tasks.get_notification_by_id') + n = Notification() + n.id = 1234 + n.status = NOTIFICATION_FAILED + get_notification_by_id.return_value = n + rmock.request( "POST", endpoint, @@ -46,12 +56,12 @@ def test_callback_logs_on_api_call_failure(notify_api, rmock, mocker): mock_logger = mocker.patch('app.celery.tasks.current_app.logger.error') with pytest.raises(HTTPError): - send_sms_response("mmg", "1234", "07700900001") + send_sms_response("sns", "1234") assert rmock.called assert rmock.request_history[0].url == endpoint mock_logger.assert_called_once_with( - 'API POST request on http://localhost:6011/notifications/sms/mmg failed with status 500' + 'API POST request on http://localhost:6011/notifications/sms/sns failed with status 500' ) @@ -65,31 +75,13 @@ def test_make_ses_callback(notify_api, mocker): assert mock_task.apply_async.call_args[0][0][0] == ses_notification_callback(some_ref) -@pytest.mark.skip(reason="Re-enable when SNS delivery receipts exist") -def test_delievered_sns_callback(): - phone_number = "2028675309" - data = json.loads(sns_callback("1234", phone_number)) - assert data['MSISDN'] == phone_number - assert data['status'] == "3" - assert data['reference'] == "sns_reference" - assert data['CID'] == "1234" - - -@pytest.mark.skip(reason="Re-enable when SNS delivery receipts exist") -def test_perm_failure_sns_callback(): - phone_number = "2028675302" - data = json.loads(sns_callback("1234", phone_number)) - assert data['MSISDN'] == phone_number - assert data['status'] == "5" - assert data['reference'] == "sns_reference" - assert data['CID'] == "1234" - - -@pytest.mark.skip(reason="Re-enable when SNS delivery receipts exist") -def test_temp_failure_sns_callback(): - phone_number = "2028675303" - data = json.loads(sns_callback("1234", phone_number)) - assert data['MSISDN'] == phone_number - assert data['status'] == "4" - assert data['reference'] == "sns_reference" +def test_delivered_sns_callback(mocker): + get_notification_by_id = mocker.patch('app.celery.research_mode_tasks.get_notification_by_id') + n = Notification() + n.id = 1234 + n.status = NOTIFICATION_DELIVERED + get_notification_by_id.return_value = n + + data = json.loads(sns_callback("1234")) + assert data['status'] == "delivered" assert data['CID'] == "1234" diff --git a/tests/app/dao/test_provider_details_dao.py b/tests/app/dao/test_provider_details_dao.py index 1ca40cedd..e55935c13 100644 --- a/tests/app/dao/test_provider_details_dao.py +++ b/tests/app/dao/test_provider_details_dao.py @@ -193,44 +193,6 @@ def test_get_sms_providers_for_update_returns_nothing_if_recent_updates(restore_ assert not resp -@pytest.mark.skip(reason="Reenable if/when we add a second SMS provider") -@pytest.mark.parametrize(['starting_priorities', 'expected_priorities'], [ - ({'sns': 50, 'other': 50}, {'sns': 40, 'other': 60}), - ({'sns': 0, 'other': 20}, {'sns': 0, 'other': 30}), # lower bound respected - ({'sns': 50, 'other': 100}, {'sns': 40, 'other': 100}), # upper bound respected - - # document what happens if they have unexpected values outside of the 0 - 100 range (due to manual setting from - # the admin app). the code never causes further issues, but sometimes doesn't actively reset the vaues to 0-100. - ({'sns': 150, 'other': 50}, {'sns': 140, 'other': 60}), - ({'sns': 50, 'other': 150}, {'sns': 40, 'other': 100}), - - ({'sns': -100, 'other': 50}, {'sns': 0, 'other': 60}), - ({'sns': 50, 'other': -100}, {'sns': 40, 'other': -90}), -]) -def test_reduce_sms_provider_priority_adjusts_provider_priorities( - mocker, - restore_provider_details, - notify_user, - starting_priorities, - expected_priorities, -): - mock_adjust = mocker.patch('app.dao.provider_details_dao._adjust_provider_priority') - - sns = get_provider_details_by_identifier('sns') - other = get_provider_details_by_identifier('other') - - sns.priority = starting_priorities['sns'] - other.priority = starting_priorities['other'] - # need to update these manually to avoid triggering the `onupdate` clause of the updated_at column - ProviderDetails.query.filter(ProviderDetails.notification_type == 'sms').update({'updated_at': datetime.min}) - - # switch away from sns. currently both 50/50 - dao_reduce_sms_provider_priority('sns', time_threshold=timedelta(minutes=10)) - - mock_adjust.assert_any_call(other, expected_priorities['other']) - mock_adjust.assert_any_call(sns, expected_priorities['sns']) - - def test_reduce_sms_provider_priority_does_nothing_if_providers_have_recently_changed( mocker, restore_provider_details, @@ -255,38 +217,6 @@ def test_reduce_sms_provider_priority_does_nothing_if_there_is_only_one_active_p assert mock_adjust.called is False -@pytest.mark.skip(reason="Reenable if/when we add a second SMS provider") -@pytest.mark.parametrize('existing_sns, existing_other, new_sns, new_other', [ - (50, 50, 60, 40), # not just 50/50 - 60/40 specifically - (65, 35, 60, 40), # doesn't overshoot if there's less than 10 difference - (0, 100, 10, 90), # only adjusts by 10 - (100, 100, 90, 90), # it tries to fix weird data - it will reduce both if needs be -]) -def test_adjust_provider_priority_back_to_resting_points_updates_all_providers( - restore_provider_details, - mocker, - existing_sns, - existing_other, - new_sns, - new_other -): - sns = get_provider_details_by_identifier('sns') - other = get_provider_details_by_identifier('other') - sns.priority = existing_sns - other.priority = existing_other - - mock_adjust = mocker.patch('app.dao.provider_details_dao._adjust_provider_priority') - mock_get_providers = mocker.patch('app.dao.provider_details_dao._get_sms_providers_for_update', return_value=[ - sns, other - ]) - - dao_adjust_provider_priority_back_to_resting_points() - - mock_get_providers.assert_called_once_with(timedelta(hours=1)) - mock_adjust.assert_any_call(sns, new_sns) - mock_adjust.assert_any_call(other, new_other) - - def test_adjust_provider_priority_back_to_resting_points_does_nothing_if_theyre_already_at_right_values( restore_provider_details, mocker, diff --git a/tests/app/delivery/test_send_to_providers.py b/tests/app/delivery/test_send_to_providers.py index c5bd57648..21e854c26 100644 --- a/tests/app/delivery/test_send_to_providers.py +++ b/tests/app/delivery/test_send_to_providers.py @@ -45,36 +45,6 @@ def setup_function(_function): send_to_providers.provider_cache.clear() -@pytest.mark.skip(reason="Reenable when we have more than 1 SMS provider") -def test_provider_to_use_should_return_random_provider(mocker, notify_db_session): - sns = get_provider_details_by_identifier('sns') - other = get_provider_details_by_identifier('other') - sns.priority = 60 - other.priority = 40 - mock_choices = mocker.patch('app.delivery.send_to_providers.random.choices', return_value=[sns]) - - ret = send_to_providers.provider_to_use('sms', international=True) - - mock_choices.assert_called_once_with([sns, other], weights=[60, 40]) - assert ret.name == 'sns' - - -@pytest.mark.skip(reason="Reenable when we have more than 1 SMS provider") -def test_provider_to_use_should_cache_repeated_calls(mocker, notify_db_session): - mock_choices = mocker.patch( - 'app.delivery.send_to_providers.random.choices', - wraps=send_to_providers.random.choices, - ) - - results = [ - send_to_providers.provider_to_use('sms', international=False) - for _ in range(10) - ] - - assert all(result == results[0] for result in results) - assert len(mock_choices.call_args_list) == 1 - - @pytest.mark.parametrize('international_provider_priority', ( # Since there’s only one international provider it should always # be used, no matter what its priority is set to @@ -93,18 +63,6 @@ def test_provider_to_use_should_only_return_sns_for_international( assert ret.name == 'sns' -@pytest.mark.skip(reason="Reenable when we have more than 1 SMS provider") -def test_provider_to_use_should_only_return_active_providers(mocker, restore_provider_details): - sns = get_provider_details_by_identifier('sns') - other = get_provider_details_by_identifier('other') - sns.active = False - other.active = True - - ret = send_to_providers.provider_to_use('sms') - - assert ret.name == 'other' - - def test_provider_to_use_raises_if_no_active_providers(mocker, restore_provider_details): sns = get_provider_details_by_identifier('sns') sns.active = False @@ -261,7 +219,7 @@ def test_should_call_send_sms_response_task_if_research_mode( notify_db_session, sample_service, sample_notification, mocker, research_mode, key_type ): mocker.patch('app.aws_sns_client.send_sms') - mocker.patch('app.delivery.send_to_providers.send_sms_response') + send_sms_response = mocker.patch('app.delivery.send_to_providers.send_sms_response') if research_mode: sample_service.research_mode = True @@ -275,8 +233,8 @@ def test_should_call_send_sms_response_task_if_research_mode( ) assert not aws_sns_client.send_sms.called - app.delivery.send_to_providers.send_sms_response.assert_called_once_with( - 'sns', str(sample_notification.id), sample_notification.to + send_sms_response.assert_called_once_with( + 'sns', str(sample_notification.id) ) persisted_notification = notifications_dao.get_notification_by_id(sample_notification.id) @@ -288,17 +246,15 @@ def test_should_call_send_sms_response_task_if_research_mode( assert not persisted_notification.personalisation -@pytest.mark.skip(reason="Needs updating when we get SMS delivery receipts done") def test_should_have_sending_status_if_fake_callback_function_fails(sample_notification, mocker): mocker.patch('app.delivery.send_to_providers.send_sms_response', side_effect=HTTPError) sample_notification.key_type = KEY_TYPE_TEST - with pytest.raises(HTTPError): send_to_providers.send_sms_to_provider( sample_notification ) - assert sample_notification.status == 'sending' + assert sample_notification.status == 'sent' assert sample_notification.sent_by == 'sns' @@ -389,14 +345,14 @@ def test_send_email_to_provider_should_call_research_mode_task_response_task_if_ reference = uuid.uuid4() mocker.patch('app.uuid.uuid4', return_value=reference) mocker.patch('app.aws_ses_client.send_email') - mocker.patch('app.delivery.send_to_providers.send_email_response') + send_email_response = mocker.patch('app.delivery.send_to_providers.send_email_response') send_to_providers.send_email_to_provider( notification ) assert not app.aws_ses_client.send_email.called - app.delivery.send_to_providers.send_email_response.assert_called_once_with(str(reference), 'john@smith.com') + send_email_response.assert_called_once_with(str(reference), 'john@smith.com') persisted_notification = Notification.query.filter_by(id=notification.id).one() assert persisted_notification.to == 'john@smith.com' assert persisted_notification.template_id == sample_email_template.id From 0f470af7b6db44e823f3ab8db3d1d2e595da7d2a Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Mon, 22 May 2023 11:35:00 -0700 Subject: [PATCH 44/51] fix more skips --- tests/app/dao/test_services_dao.py | 2 -- tests/app/user/test_rest_verify.py | 1 - tests/app/v2/notifications/test_post_notifications.py | 3 +-- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/app/dao/test_services_dao.py b/tests/app/dao/test_services_dao.py index a7017db27..405035cc0 100644 --- a/tests/app/dao/test_services_dao.py +++ b/tests/app/dao/test_services_dao.py @@ -586,7 +586,6 @@ def test_update_service_permission_creates_a_history_record_with_current_data(no assert history[2].version == 3 -# @pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") def test_create_service_and_history_is_transactional(notify_db_session): user = create_user() assert Service.query.count() == 0 @@ -828,7 +827,6 @@ def test_dao_fetch_todays_stats_for_service_only_includes_today_during_bst(notif assert not stats.get('permanent-failure') -# @pytest.mark.skip(reason="Need a better way to test variable DST date") def test_dao_fetch_todays_stats_for_service_only_includes_today_when_clocks_fall_back(notify_db_session): template = create_template(service=create_service()) with freeze_time('2021-10-30T22:59:59'): diff --git a/tests/app/user/test_rest_verify.py b/tests/app/user/test_rest_verify.py index 42bd03cbf..f2d38002f 100644 --- a/tests/app/user/test_rest_verify.py +++ b/tests/app/user/test_rest_verify.py @@ -386,7 +386,6 @@ def test_reset_failed_login_count_returns_404_when_user_does_not_exist(client): assert resp.status_code == 404 -@pytest.mark.skip(reason="Needs updating for TTS: Failing for unknown reason") # we send sms_auth users and webauthn_auth users email code to validate their email access @pytest.mark.parametrize('auth_type', USER_AUTH_TYPES) @pytest.mark.parametrize('data, expected_auth_url', ( diff --git a/tests/app/v2/notifications/test_post_notifications.py b/tests/app/v2/notifications/test_post_notifications.py index bb011ecd8..adcadc24a 100644 --- a/tests/app/v2/notifications/test_post_notifications.py +++ b/tests/app/v2/notifications/test_post_notifications.py @@ -288,7 +288,6 @@ def test_should_cache_template_and_service_in_redis(mocker, client, sample_templ assert templates_call[1]['ex'] == 604_800 -@pytest.mark.skip(reason="Needs updating for TTS: cloud.gov redis fails, local docker works, mock redis fails") def test_should_return_template_if_found_in_redis(mocker, client, sample_template): from app.schemas import service_schema, template_schema @@ -312,7 +311,7 @@ def test_should_return_template_if_found_in_redis(mocker, client, sample_templat mocker.patch('app.celery.provider_tasks.deliver_sms.apply_async') data = { - 'phone_number': '+447700900855', + 'phone_number': '+16615555555', 'template_id': str(sample_template.id), } From ba26a704f8d8093f7cbee467b0590283b250de20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 May 2023 07:29:53 +0000 Subject: [PATCH 45/51] Bump requests from 2.30.0 to 2.31.0 Bumps [requests](https://github.com/psf/requests) from 2.30.0 to 2.31.0. - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.30.0...v2.31.0) --- updated-dependencies: - dependency-name: requests dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Pipfile.lock | 84 +++++++++++++++++++++++++++------------------------- 1 file changed, 43 insertions(+), 41 deletions(-) diff --git a/Pipfile.lock b/Pipfile.lock index 3a60022fa..64f59ed65 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -500,6 +500,7 @@ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], + "markers": "python_full_version >= '3.5.0'", "version": "==3.4" }, "importlib-metadata": { @@ -847,7 +848,7 @@ "sha256:23ac5d50538a9a38c8bde05fecb47d0b403ecd0662857a86f886f798563d5b9b", "sha256:45ea77a2f7c60418850331366c81cf6b5b9cf4c7fd34616f733c5427e6abbb1f" ], - "markers": "python_full_version >= '3.7.0'", + "markers": "python_version >= '3.7'", "version": "==3.0.38" }, "psycopg2-binary": { @@ -1062,11 +1063,11 @@ }, "requests": { "hashes": [ - "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", - "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], - "markers": "python_version >= '3.7'", - "version": "==2.30.0" + "index": "pypi", + "version": "==2.31.0" }, "rfc3339-validator": { "hashes": [ @@ -1087,7 +1088,7 @@ "sha256:78f9a9bf4e7be0c5ded4583326e7461e3a3c5aae24073648b4bdfa797d78c9d2", "sha256:9d689e6ca1b3038bc82bf8d23e944b6b6037bc02301a574935b2dd946e0353b9" ], - "markers": "python_version >= '3.5' and python_version < '4'", + "markers": "python_version < '4' and python_full_version >= '3.5.0'", "version": "==4.7.2" }, "s3transfer": { @@ -1100,11 +1101,11 @@ }, "setuptools": { "hashes": [ - "sha256:23aaf86b85ca52ceb801d32703f12d77517b2556af839621c641fca11287952b", - "sha256:f104fa03692a2602fa0fec6c6a9e63b6c8a968de13e17c026957dd1f53d80990" + "sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f", + "sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102" ], "markers": "python_version >= '3.7'", - "version": "==67.7.2" + "version": "==67.8.0" }, "shapely": { "hashes": [ @@ -1216,11 +1217,11 @@ }, "typing-extensions": { "hashes": [ - "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb", - "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4" + "sha256:6ad00b63f849b7dcc313b70b6b304ed67b2b2963b3098a33efe18056b1a9a223", + "sha256:ff6b238610c747e44c268aa4bb23c8c735d665a63726df3f9431ce707f2aa768" ], "markers": "python_version < '3.10'", - "version": "==4.5.0" + "version": "==4.6.0" }, "uri-template": { "hashes": [ @@ -1847,6 +1848,7 @@ "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4", "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2" ], + "markers": "python_full_version >= '3.5.0'", "version": "==3.4" }, "iniconfig": { @@ -2194,7 +2196,7 @@ "sha256:4659bc2a667783e7a15d190f6fccf8b2486685b6dba4c19c3876314769c57526", "sha256:b4fa3a7a0be38243123cf9d1f3518da10c51bdb165a2b2985566247f9155a7d3" ], - "markers": "python_full_version >= '3.6.0'", + "markers": "python_version >= '3.6'", "version": "==32.0.1" }, "pluggy": { @@ -2214,22 +2216,22 @@ }, "protobuf": { "hashes": [ - "sha256:03eee35b60317112a72d19c54d0bff7bc58ff12fea4cd7b018232bd99758ffdf", - "sha256:2b94bd6df92d71bd1234a2ffe7ce96ddf6d10cf637a18d6b55ad0a89fbb7fc21", - "sha256:36f5370a930cb77c8ad2f4135590c672d0d2c72d4a707c7d0058dce4b4b4a598", - "sha256:5f1eba1da2a2f3f7df469fccddef3cc060b8a16cfe3cc65961ad36b4dbcf59c5", - "sha256:6c16657d6717a0c62d5d740cb354fbad1b0d8cb811669e06fc1caa0ff4799ddd", - "sha256:6fe180b56e1169d72ecc4acbd39186339aed20af5384531b8e8979b02bbee159", - "sha256:7cb5b9a05ce52c6a782bb97de52679bd3438ff2b7460eff5da348db65650f227", - "sha256:9744e934ea5855d12191040ea198eaf704ac78665d365a89d9572e3b627c2688", - "sha256:9f5a0fbfcdcc364f3986f9ed9f8bb1328fb84114fd790423ff3d7fdb0f85c2d1", - "sha256:baca40d067dddd62141a129f244703160d278648b569e90bb0e3753067644711", - "sha256:d5a35ff54e3f62e8fc7be02bb0d2fbc212bba1a5a9cc2748090690093996f07b", - "sha256:e62fb869762b4ba18666370e2f8a18f17f8ab92dd4467295c6d38be6f8fef60b", - "sha256:ebde3a023b8e11bfa6c890ef34cd6a8b47d586f26135e86c21344fe433daf2e2" + "sha256:2036a3a1e7fc27f973fa0a7888dce712393af644f4695385f117886abc792e39", + "sha256:32e78beda26d7a101fecf15d7a4a792278a0d26a31bc327ff05564a9d68ab8ee", + "sha256:346990f634272caac1f09efbcfbbacb23098b1f606d172534c6fa2d9758bb436", + "sha256:3b8905eafe4439076e1f58e9d1fa327025fd2777cf90f14083092ae47f77b0aa", + "sha256:3ce113b3f3362493bddc9069c2163a38f240a9ed685ff83e7bcb756b05e1deb0", + "sha256:410bcc0a5b279f634d3e16082ce221dfef7c3392fac723500e2e64d1806dd2be", + "sha256:5b9cd6097e6acae48a68cb29b56bc79339be84eca65b486910bb1e7a30e2b7c1", + "sha256:65f0ac96ef67d7dd09b19a46aad81a851b6f85f89725577f16de38f2d68ad477", + "sha256:91fac0753c3c4951fbb98a93271c43cc7cf3b93cf67747b3e600bb1e5cc14d61", + "sha256:95789b569418a3e32a53f43d7763be3d490a831e9c08042539462b6d972c2d7e", + "sha256:ac50be82491369a9ec3710565777e4da87c6d2e20404e0abb1f3a8f10ffd20f0", + "sha256:decf119d54e820f298ee6d89c72d6b289ea240c32c521f00433f9dc420595f38", + "sha256:f9510cac91e764e86acd74e2b7f7bc5e6127a7f3fb646d7c8033cfb84fd1176a" ], "markers": "python_version >= '3.7'", - "version": "==4.23.0" + "version": "==4.23.1" }, "py": { "hashes": [ @@ -2385,11 +2387,11 @@ }, "requests": { "hashes": [ - "sha256:10e94cc4f3121ee6da529d358cdaeaff2f1c409cd377dbc72b825852f2f7e294", - "sha256:239d7d4458afcb28a692cdd298d87542235f4ca8d36d03a15bfc128a6559a2f4" + "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f", + "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1" ], - "markers": "python_version >= '3.7'", - "version": "==2.30.0" + "index": "pypi", + "version": "==2.31.0" }, "requests-mock": { "hashes": [ @@ -2419,7 +2421,7 @@ "sha256:2d11b9b8dd03868f09b4fffadc84a6a8cda574e40dc90821bd845720ebb8e89c", "sha256:69cdf53799e63f38b95b9bf9c875f8c90e78dd62b2f00c13a911c7a3b9fa4704" ], - "markers": "python_full_version >= '3.7.0'", + "markers": "python_version >= '3.7'", "version": "==13.3.5" }, "s3transfer": { @@ -2455,11 +2457,11 @@ }, "stevedore": { "hashes": [ - "sha256:2c428d2338976279e8eb2196f7a94910960d9f7ba2f41f3988511e95ca447021", - "sha256:bd5a71ff5e5e5f5ea983880e4a1dd1bb47f8feebbb3d95b592398e2f02194771" + "sha256:8cc040628f3cea5d7128f2e76cf486b2251a4e543c7b938f58d9a377f6694a2d", + "sha256:a54534acf9b89bc7ed264807013b505bf07f74dbe4bcfa37d32bd063870b087c" ], "markers": "python_version >= '3.8'", - "version": "==5.0.0" + "version": "==5.1.0" }, "toml": { "hashes": [ @@ -2479,10 +2481,10 @@ }, "types-pyyaml": { "hashes": [ - "sha256:5aed5aa66bd2d2e158f75dda22b059570ede988559f030cf294871d3b647e3e8", - "sha256:c51b1bd6d99ddf0aa2884a7a328810ebf70a4262c292195d3f4f9a0005f9eeb6" + "sha256:662fa444963eff9b68120d70cda1af5a5f2aa57900003c2006d7626450eaae5f", + "sha256:ebab3d0700b946553724ae6ca636ea932c1b0868701d4af121630e78d695fc97" ], - "version": "==6.0.12.9" + "version": "==6.0.12.10" }, "urllib3": { "hashes": [ @@ -2501,11 +2503,11 @@ }, "websocket-client": { "hashes": [ - "sha256:3f09e6d8230892547132177f575a4e3e73cfdf06526e20cc02aa1c3b47184d40", - "sha256:cdf5877568b7e83aa7cf2244ab56a3213de587bbe0ce9d8b9600fc77b455d89e" + "sha256:c7d67c13b928645f259d9b847ab5b57fd2d127213ca41ebd880de1f553b7c23b", + "sha256:f8c64e28cd700e7ba1f04350d66422b6833b82a796b525a51e740b8cc8dab4b1" ], "markers": "python_version >= '3.7'", - "version": "==1.5.1" + "version": "==1.5.2" }, "werkzeug": { "hashes": [ From 6f6061455c8a98835070c4f296c2fe53278900ee Mon Sep 17 00:00:00 2001 From: Kenneth Kehl Date: Tue, 23 May 2023 08:31:30 -0700 Subject: [PATCH 46/51] notify-162 delete incomplete s3 uploads (#276) Co-authored-by: Kenneth Kehl <@kkehl@flexion.us> --- app/aws/s3.py | 11 +++++++++++ app/celery/nightly_tasks.py | 16 ++++++++++++++++ app/commands.py | 7 +++++++ app/config.py | 5 +++++ app/dao/jobs_dao.py | 4 ++++ tests/app/celery/test_nightly_tasks.py | 17 ++++++++++++++++- 6 files changed, 59 insertions(+), 1 deletion(-) diff --git a/app/aws/s3.py b/app/aws/s3.py index d7d7da139..d48cbd083 100644 --- a/app/aws/s3.py +++ b/app/aws/s3.py @@ -65,3 +65,14 @@ def remove_job_from_s3(service_id, job_id): def remove_s3_object(bucket_name, object_key, access_key, secret_key, region): obj = get_s3_object(bucket_name, object_key, access_key, secret_key, region) return obj.delete() + + +def remove_csv_object(object_key): + obj = get_s3_object( + current_app.config['CSV_UPLOAD_BUCKET']['bucket'], + object_key, + current_app.config['CSV_UPLOAD_BUCKET']['access_key_id'], + current_app.config['CSV_UPLOAD_BUCKET']['secret_access_key'], + current_app.config['CSV_UPLOAD_BUCKET']['region'] + ) + return obj.delete() diff --git a/app/celery/nightly_tasks.py b/app/celery/nightly_tasks.py index ce98dd27c..253291fe2 100644 --- a/app/celery/nightly_tasks.py +++ b/app/celery/nightly_tasks.py @@ -6,6 +6,7 @@ from sqlalchemy.exc import SQLAlchemyError from app import notify_celery from app.aws import s3 +from app.aws.s3 import remove_csv_object from app.celery.process_ses_receipts_tasks import check_and_queue_callback_task from app.config import QueueNames from app.cronitor import cronitor @@ -14,6 +15,7 @@ from app.dao.inbound_sms_dao import delete_inbound_sms_older_than_retention from app.dao.jobs_dao import ( dao_archive_job, dao_get_jobs_older_than_data_retention, + dao_get_unfinished_jobs, ) from app.dao.notifications_dao import ( dao_get_notifications_processing_time_stats, @@ -42,6 +44,19 @@ def _remove_csv_files(job_types): current_app.logger.info("Job ID {} has been removed from s3.".format(job.id)) +@notify_celery.task(name="cleanup-unfinished-jobs") +def cleanup_unfinished_jobs(): + now = datetime.utcnow() + jobs = dao_get_unfinished_jobs() + for job in jobs: + # The query already checks that the processing_finished time is null, so here we are saying + # if it started more than 4 hours ago, that's too long + acceptable_finish_time = job.processing_started + timedelta(minutes=5) + if now > acceptable_finish_time: + remove_csv_object(job.original_file_name) + dao_archive_job(job) + + @notify_celery.task(name="delete-notifications-older-than-retention") def delete_notifications_older_than_retention(): delete_email_notifications_older_than_retention.apply_async(queue=QueueNames.REPORTING) @@ -161,6 +176,7 @@ def delete_inbound_sms(): @notify_celery.task(name='save-daily-notification-processing-time') @cronitor("save-daily-notification-processing-time") def save_daily_notification_processing_time(local_date=None): + # local_date is a string in the format of "YYYY-MM-DD" if local_date is None: # if a date is not provided, we run against yesterdays data diff --git a/app/commands.py b/app/commands.py index 7a8c99d7b..18ac0ae6f 100644 --- a/app/commands.py +++ b/app/commands.py @@ -18,6 +18,7 @@ from sqlalchemy.orm.exc import NoResultFound from app import db from app.aws import s3 +from app.celery.nightly_tasks import cleanup_unfinished_jobs from app.celery.tasks import process_row from app.dao.annual_billing_dao import ( dao_create_or_update_annual_billing_for_year, @@ -464,6 +465,12 @@ def fix_billable_units(): print("End fix_billable_units") +@notify_command(name='delete-unfinished-jobs') +def delete_unfinished_jobs(): + cleanup_unfinished_jobs() + print("End cleanup_unfinished_jobs") + + @notify_command(name='process-row-from-job') @click.option('-j', '--job_id', required=True, help='Job id') @click.option('-n', '--job_row_number', type=int, required=True, help='Job id') diff --git a/app/config.py b/app/config.py index d1762168b..2e9f8cf69 100644 --- a/app/config.py +++ b/app/config.py @@ -240,6 +240,11 @@ class Config(object): 'schedule': crontab(hour=2, minute=0), 'options': {'queue': QueueNames.PERIODIC} }, + 'cleanup-unfinished-jobs': { + 'task': 'cleanup-unfinished-jobs', + 'schedule': crontab(hour=0, minute=5), + 'options': {'queue': QueueNames.PERIODIC} + }, 'remove_sms_email_jobs': { 'task': 'remove_sms_email_jobs', 'schedule': crontab(hour=4, minute=0), diff --git a/app/dao/jobs_dao.py b/app/dao/jobs_dao.py index da829171b..8fd7f22c0 100644 --- a/app/dao/jobs_dao.py +++ b/app/dao/jobs_dao.py @@ -43,6 +43,10 @@ def dao_get_job_by_service_id_and_job_id(service_id, job_id): return Job.query.filter_by(service_id=service_id, id=job_id).one() +def dao_get_unfinished_jobs(): + return Job.query.filter(Job.processing_finished.is_(None)).all() + + def dao_get_jobs_by_service_id( service_id, *, diff --git a/tests/app/celery/test_nightly_tasks.py b/tests/app/celery/test_nightly_tasks.py index 0599799e4..dd1191ae9 100644 --- a/tests/app/celery/test_nightly_tasks.py +++ b/tests/app/celery/test_nightly_tasks.py @@ -7,6 +7,7 @@ from freezegun import freeze_time from app.celery import nightly_tasks from app.celery.nightly_tasks import ( _delete_notifications_older_than_retention_by_type, + cleanup_unfinished_jobs, delete_email_notifications_older_than_retention, delete_inbound_sms, delete_sms_notifications_older_than_retention, @@ -15,7 +16,7 @@ from app.celery.nightly_tasks import ( save_daily_notification_processing_time, timeout_notifications, ) -from app.models import EMAIL_TYPE, SMS_TYPE, FactProcessingTime +from app.models import EMAIL_TYPE, SMS_TYPE, FactProcessingTime, Job from tests.app.db import ( create_job, create_notification, @@ -313,3 +314,17 @@ def test_delete_notifications_task_calls_task_for_services_that_have_sent_notifi 'datetime_to_delete_before': datetime(2021, 3, 26, 4, 0) }), ]) + + +def test_cleanup_unfinished_jobs(mocker): + mock_s3 = mocker.patch('app.celery.nightly_tasks.remove_csv_object') + mock_dao_archive = mocker.patch('app.celery.nightly_tasks.dao_archive_job') + mock_dao = mocker.patch('app.celery.nightly_tasks.dao_get_unfinished_jobs') + mock_job_unfinished = Job() + mock_job_unfinished.processing_started = datetime(2023, 1, 1, 0, 0, 0) + mock_job_unfinished.original_file_name = "blah" + + mock_dao.return_value = [mock_job_unfinished] + cleanup_unfinished_jobs() + mock_s3.assert_called_once_with('blah') + mock_dao_archive.assert_called_once_with(mock_job_unfinished) From 48808256d87b1042328ede19757400fdf37c6557 Mon Sep 17 00:00:00 2001 From: Ryan Ahearn Date: Tue, 23 May 2023 11:54:43 -0400 Subject: [PATCH 47/51] Update step order for clean-env deploys (#275) --- docs/infra-overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/infra-overview.md b/docs/infra-overview.md index 8707f9797..920cf6199 100644 --- a/docs/infra-overview.md +++ b/docs/infra-overview.md @@ -117,8 +117,8 @@ Steps for deploying production from scratch. These can be updated for a new clou 1. Update `terraform-production.yml` and `deploy-prod.yml` to point to the correct space and git branch. 1. Ensure that the `api_network_route` and `domain` modules are commented out in `terraform/production/main.tf` 1. Run CI/CD pipeline on the `production` branch by opening a PR from `main` to `production` - 1. Uncomment the `api_network_route` and `domain` modules and re-trigger a deploy 1. Create DNS records for `domain` module within https://github.com/18f/dns + 1. Uncomment the `api_network_route` and `domain` modules and re-trigger a deploy ### Steps to prepare SES From 7741e36030b7b576e791885b2afde37ae0f7999b Mon Sep 17 00:00:00 2001 From: Kenneth Kehl Date: Wed, 24 May 2023 10:41:53 -0700 Subject: [PATCH 48/51] notify-301 allow services to move to production (#277) Co-authored-by: Kenneth Kehl <@kkehl@flexion.us> --- .../versions/0395_remove_intl_letters_perm.py | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 migrations/versions/0395_remove_intl_letters_perm.py diff --git a/migrations/versions/0395_remove_intl_letters_perm.py b/migrations/versions/0395_remove_intl_letters_perm.py new file mode 100644 index 000000000..dd120b9b9 --- /dev/null +++ b/migrations/versions/0395_remove_intl_letters_perm.py @@ -0,0 +1,28 @@ +""" + +Revision ID: 0395_remove_international_letters_permission +Revises: 0394_remove_contact_list +Create Date: 2023-05-23 10:03:10.485368 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +revision = '0395_remove_intl_letters_perm' +down_revision = '0394_remove_contact_list' + + +def upgrade(): + sql = """ + DELETE + FROM service_permissions + WHERE permission = 'international_letters' + """ + + conn = op.get_bind() + conn.execute(sql) + + +def downgrade(): + pass From 22f714f8fa4a327d68aaffe8ad2321fdbdb45300 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 25 May 2023 10:24:49 -0700 Subject: [PATCH 49/51] remove two xfails --- tests/app/dao/test_organisation_dao.py | 27 ++++++++++++++++++++++---- tests/app/organisation/test_rest.py | 9 ++++----- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/tests/app/dao/test_organisation_dao.py b/tests/app/dao/test_organisation_dao.py index 45cf5f589..eeb254616 100644 --- a/tests/app/dao/test_organisation_dao.py +++ b/tests/app/dao/test_organisation_dao.py @@ -90,10 +90,6 @@ def test_update_organisation(notify_db_session): (['ABC', 'DEF'], {'abc', 'def'}), ([], set()), (None, {'123', '456'}), - pytest.param( - ['abc', 'ABC'], {'abc'}, - marks=pytest.mark.xfail(raises=IntegrityError) - ), )) def test_update_organisation_domains_lowercases( notify_db_session, @@ -113,6 +109,29 @@ def test_update_organisation_domains_lowercases( assert {domain.domain for domain in organisation.domains} == expected_domains +@pytest.mark.parametrize('domain_list, expected_domains', ( + (['abc', 'ABC'], {'abc'}), +)) +def test_update_organisation_domains_lowercases_integrity_error( + notify_db_session, + domain_list, + expected_domains, +): + create_organisation() + + organisation = Organisation.query.one() + + # Seed some domains + dao_update_organisation(organisation.id, domains=['123', '456']) + + with pytest.raises(expected_exception=IntegrityError): + + # This should overwrite the seeded domains + dao_update_organisation(organisation.id, domains=domain_list) + + assert {domain.domain for domain in organisation.domains} == expected_domains + + def test_update_organisation_does_not_update_the_service_if_certain_attributes_not_provided( sample_service, sample_organisation, diff --git a/tests/app/organisation/test_rest.py b/tests/app/organisation/test_rest.py index 3fcd47d1f..40de5aafa 100644 --- a/tests/app/organisation/test_rest.py +++ b/tests/app/organisation/test_rest.py @@ -127,10 +127,7 @@ def test_get_organisation_by_id_returns_domains(admin_request, notify_db_session ('foo.gov.uk', 200), ('bar.gov.uk', 200), ('oof.gov.uk', 404), - pytest.param( - 'rab.gov.uk', 200, - marks=pytest.mark.xfail(raises=AssertionError), - ), + ('rab.gov.uk', 200), (None, 400), ('personally.identifying.information@example.com', 400), )) @@ -152,7 +149,9 @@ def test_get_organisation_by_domain( domain=domain, ) - if expected_status == 200: + if domain == 'rab.gov.uk' and expected_status == 200: + assert response['id'] == str(other_org.id) + elif expected_status == 200: assert response['id'] == str(org.id) else: assert response['result'] == 'error' From aee14ed609e63955f14bd8e63402c721f03bd44c Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Thu, 25 May 2023 10:50:01 -0700 Subject: [PATCH 50/51] remove xfail --- .../test_send_notification.py | 43 ++++++++++++++++--- 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/tests/app/service/send_notification/test_send_notification.py b/tests/app/service/send_notification/test_send_notification.py index 83122dcbc..dbd8b8d85 100644 --- a/tests/app/service/send_notification/test_send_notification.py +++ b/tests/app/service/send_notification/test_send_notification.py @@ -169,12 +169,6 @@ def test_send_notification_with_placeholders_replaced(notify_api, sample_email_t ), '6', ), - pytest.param( - None, - ('we consider None equivalent to missing personalisation'), - '', - marks=pytest.mark.xfail - ), ]) def test_send_notification_with_placeholders_replaced_with_unusual_types( client, @@ -209,6 +203,43 @@ def test_send_notification_with_placeholders_replaced_with_unusual_types( assert response_data['subject'] == expected_subject +@pytest.mark.parametrize('personalisation, expected_body, expected_subject', [ + ( + None, + ('we consider None equivalent to missing personalisation'), + '', + ), +]) +def test_send_notification_with_placeholders_replaced_with_unusual_types_no_personalization( + client, + sample_email_template_with_placeholders, + mocker, + personalisation, + expected_body, + expected_subject, +): + mocker.patch('app.celery.provider_tasks.deliver_email.apply_async') + + response = client.post( + path='/notifications/email', + data=json.dumps( + { + 'to': 'ok@ok.com', + 'template': str(sample_email_template_with_placeholders.id), + 'personalisation': { + 'name': personalisation + } + } + ), + headers=[ + ('Content-Type', 'application/json'), + create_service_authorization_header(service_id=sample_email_template_with_placeholders.service.id) + ] + ) + + assert response.status_code == 400 + + def test_should_not_send_notification_for_archived_template(notify_api, sample_template): with notify_api.test_request_context(): with notify_api.test_client() as client: From 8504b5aff1afc8781397ac01e79bb0f056b7c0b8 Mon Sep 17 00:00:00 2001 From: Kenneth Kehl <@kkehl@flexion.us> Date: Fri, 26 May 2023 12:43:00 -0700 Subject: [PATCH 51/51] code review feedback remove print statements --- app/celery/research_mode_tasks.py | 1 - tests/app/inbound_sms/test_rest.py | 1 - tests/app/notifications/test_notifications_ses_callback.py | 1 - tests/app/service_invite/test_service_invite_rest.py | 2 -- 4 files changed, 5 deletions(-) diff --git a/app/celery/research_mode_tasks.py b/app/celery/research_mode_tasks.py index a72e16fef..6e9c2d68b 100644 --- a/app/celery/research_mode_tasks.py +++ b/app/celery/research_mode_tasks.py @@ -65,7 +65,6 @@ def sns_callback(notification_id): # This will only work if all notifications, including successful ones, are in the notifications table # If we decide to delete successful notifications, we will have to get this from notifications history - print(f"NOTIFICATION_ID {str(notification_id)} status {notification.status} dtime {notification.completed_at}") return json.dumps({ "CID": str(notification_id), "status": notification.status, diff --git a/tests/app/inbound_sms/test_rest.py b/tests/app/inbound_sms/test_rest.py index 0b7cd71f2..33027e9b5 100644 --- a/tests/app/inbound_sms/test_rest.py +++ b/tests/app/inbound_sms/test_rest.py @@ -76,7 +76,6 @@ def test_post_to_get_inbound_sms_filters_international_user_number(admin_request )['data'] assert len(sms) == 2 - print(f'sms is: {sms}') assert sms[1]['id'] == str(one.id) assert sms[1]['user_number'] == str(one.user_number) diff --git a/tests/app/notifications/test_notifications_ses_callback.py b/tests/app/notifications/test_notifications_ses_callback.py index 1bff3bab2..da0bf4f50 100644 --- a/tests/app/notifications/test_notifications_ses_callback.py +++ b/tests/app/notifications/test_notifications_ses_callback.py @@ -86,7 +86,6 @@ def test_check_and_queue_callback_task(mocker, sample_notification): # callback_api doesn't match by equality for some # reason, so we need to take this approach instead - print(f'mock_create.mock_calls is: {mock_create.mock_calls}') mock_create_args = mock_create.mock_calls[0][1] assert mock_create_args[0] == sample_notification assert mock_create_args[1].id == callback_api.id diff --git a/tests/app/service_invite/test_service_invite_rest.py b/tests/app/service_invite/test_service_invite_rest.py index 070b0b5d5..f27bf8acf 100644 --- a/tests/app/service_invite/test_service_invite_rest.py +++ b/tests/app/service_invite/test_service_invite_rest.py @@ -129,7 +129,6 @@ def test_get_all_invited_users_by_service(client, notify_db_session, sample_serv for i in range(0, 5): email = 'invited_user_{}@service.gov.uk'.format(i) invited_user = create_invited_user(sample_service, to_email_address=email) - print(f"INVITED USER = {invited_user.auth_type}") invites.append(invited_user) url = '/service/{}/invite'.format(sample_service.id) @@ -144,7 +143,6 @@ def test_get_all_invited_users_by_service(client, notify_db_session, sample_serv json_resp = json.loads(response.get_data(as_text=True)) invite_from = sample_service.users[0] - print(f"INVITE FROM {json_resp['data']}") for invite in json_resp['data']: assert invite['service'] == str(sample_service.id)

M*RGX67EE6B2;6ZCv(G{PvqMh!R(N` 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%0Dh31?%QJZs1nKJnT`CR``|6Z>sl+zvHfcz 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