Compare commits

..

34 Commits

Author SHA1 Message Date
Alex Janousek
bcb3526fb5 Merge branch 'main' into fix-security-vulnerabilities 2026-01-21 09:25:02 -05:00
dependabot[bot]
90a6987aaf Bump black from 25.12.0 to 26.1.0 (#2170)
Bumps [black](https://github.com/psf/black) from 25.12.0 to 26.1.0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/25.12.0...26.1.0)

---
updated-dependencies:
- dependency-name: black
  dependency-version: 26.1.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 14:22:00 +00:00
dependabot[bot]
3e888d62b9 Bump alembic from 1.17.2 to 1.18.1 (#2173)
Bumps [alembic](https://github.com/sqlalchemy/alembic) from 1.17.2 to 1.18.1.
- [Release notes](https://github.com/sqlalchemy/alembic/releases)
- [Changelog](https://github.com/sqlalchemy/alembic/blob/main/CHANGES)
- [Commits](https://github.com/sqlalchemy/alembic/commits)

---
updated-dependencies:
- dependency-name: alembic
  dependency-version: 1.18.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 14:13:19 +00:00
dependabot[bot]
2612df438c Bump cloudfoundry-client from 1.39.1 to 1.40.1 (#2172)
Bumps [cloudfoundry-client](https://github.com/cloudfoundry-community/cf-python-client) from 1.39.1 to 1.40.1.
- [Commits](https://github.com/cloudfoundry-community/cf-python-client/compare/v1.39.1...v1.40.1)

---
updated-dependencies:
- dependency-name: cloudfoundry-client
  dependency-version: 1.40.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 09:07:27 -05:00
dependabot[bot]
df362aa998 Bump phonenumbers from 9.0.21 to 9.0.22 (#2174)
Bumps [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) from 9.0.21 to 9.0.22.
- [Commits](https://github.com/daviddrysdale/python-phonenumbers/compare/v9.0.21...v9.0.22)

---
updated-dependencies:
- dependency-name: phonenumbers
  dependency-version: 9.0.22
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-21 09:04:16 -05:00
dependabot[bot]
e58691ba2b Bump hypothesis from 6.149.1 to 6.150.0 (#2158)
Bumps [hypothesis](https://github.com/HypothesisWorks/hypothesis) from 6.149.1 to 6.150.0.
- [Release notes](https://github.com/HypothesisWorks/hypothesis/releases)
- [Commits](https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.149.1...hypothesis-python-6.150.0)

---
updated-dependencies:
- dependency-name: hypothesis
  dependency-version: 6.150.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-20 20:32:56 +00:00
dependabot[bot]
3efbb07fa1 Bump jinja2-cli from 0.8.2 to 1.0.0 (#2163)
Bumps [jinja2-cli](https://github.com/mattrobenolt/jinja2-cli) from 0.8.2 to 1.0.0.
- [Release notes](https://github.com/mattrobenolt/jinja2-cli/releases)
- [Commits](https://github.com/mattrobenolt/jinja2-cli/compare/0.8.2...v1.0.0)

---
updated-dependencies:
- dependency-name: jinja2-cli
  dependency-version: 1.0.0
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-20 20:24:28 +00:00
Alex Janousek
ab51cfb75e Fixing errors 2026-01-20 15:17:41 -05:00
Alex Janousek
5102d3c036 Should fix dependency errors 2026-01-20 15:17:20 -05:00
Kenneth Kehl
c9b0b11893 Merge pull request #2168 from GSA/change_year
change year to 2026
2026-01-20 12:15:37 -08:00
Kenneth Kehl
244c982121 fix static scan 2026-01-20 10:37:07 -08:00
Kenneth Kehl
0753f75ac6 fix static scan 2026-01-20 10:32:35 -08:00
Kenneth Kehl
d0576fd513 fix static scan 2026-01-20 10:28:17 -08:00
Kenneth Kehl
9980b68edf upgrade werkzeug 2026-01-20 10:22:11 -08:00
Kenneth Kehl
683c558a58 fix pyasn1 and filelock 2026-01-20 10:11:06 -08:00
Kenneth Kehl
55b61eedaa fix python vulnerabilities 2026-01-20 10:01:28 -08:00
Kenneth Kehl
857d5784af change year to 2026 2026-01-20 09:49:07 -08:00
dependabot[bot]
1fb1526e99 Bump jsonschema from 4.25.1 to 4.26.0 (#2162)
Bumps [jsonschema](https://github.com/python-jsonschema/jsonschema) from 4.25.1 to 4.26.0.
- [Release notes](https://github.com/python-jsonschema/jsonschema/releases)
- [Changelog](https://github.com/python-jsonschema/jsonschema/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/python-jsonschema/jsonschema/compare/v4.25.1...v4.26.0)

---
updated-dependencies:
- dependency-name: jsonschema
  dependency-version: 4.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-12 09:50:37 -05:00
dependabot[bot]
3f05993704 Bump hypothesis from 6.148.8 to 6.149.0 (#2153)
Bumps [hypothesis](https://github.com/HypothesisWorks/hypothesis) from 6.148.8 to 6.149.0.
- [Release notes](https://github.com/HypothesisWorks/hypothesis/releases)
- [Commits](https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.148.8...hypothesis-python-6.149.0)

---
updated-dependencies:
- dependency-name: hypothesis
  dependency-version: 6.149.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 15:59:28 +00:00
dependabot[bot]
06a9bed5c8 Bump marshmallow from 4.1.2 to 4.2.0 (#2152)
Bumps [marshmallow](https://github.com/marshmallow-code/marshmallow) from 4.1.2 to 4.2.0.
- [Changelog](https://github.com/marshmallow-code/marshmallow/blob/dev/CHANGELOG.rst)
- [Commits](https://github.com/marshmallow-code/marshmallow/compare/4.1.2...4.2.0)

---
updated-dependencies:
- dependency-name: marshmallow
  dependency-version: 4.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 15:50:32 +00:00
dependabot[bot]
c85a1eb4be Bump celery from 5.6.1 to 5.6.2 (#2156)
Bumps [celery](https://github.com/celery/celery) from 5.6.1 to 5.6.2.
- [Release notes](https://github.com/celery/celery/releases)
- [Changelog](https://github.com/celery/celery/blob/main/Changelog.rst)
- [Commits](https://github.com/celery/celery/compare/v5.6.1...v5.6.2)

---
updated-dependencies:
- dependency-name: celery
  dependency-version: 5.6.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 15:41:20 +00:00
dependabot[bot]
b3745bdfca Bump cloudfoundry-client from 1.39.0 to 1.39.1 (#2154)
Bumps [cloudfoundry-client](https://github.com/cloudfoundry-community/cf-python-client) from 1.39.0 to 1.39.1.
- [Commits](https://github.com/cloudfoundry-community/cf-python-client/compare/v1.39.0...v1.39.1)

---
updated-dependencies:
- dependency-name: cloudfoundry-client
  dependency-version: 1.39.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 10:40:00 -05:00
dependabot[bot]
743ca361c6 Bump certifi from 2025.11.12 to 2026.1.4 (#2155)
Bumps [certifi](https://github.com/certifi/python-certifi) from 2025.11.12 to 2026.1.4.
- [Commits](https://github.com/certifi/python-certifi/compare/2025.11.12...2026.01.04)

---
updated-dependencies:
- dependency-name: certifi
  dependency-version: 2026.1.4
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 10:38:24 -05:00
dependabot[bot]
286decf861 Bump aiohttp from 3.13.2 to 3.13.3 (#2157)
---
updated-dependencies:
- dependency-name: aiohttp
  dependency-version: 3.13.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-06 10:32:01 -05:00
dependabot[bot]
a750d8396e Bump moto from 5.1.18 to 5.1.19 (#2148)
Bumps [moto](https://github.com/getmoto/moto) from 5.1.18 to 5.1.19.
- [Release notes](https://github.com/getmoto/moto/releases)
- [Changelog](https://github.com/getmoto/moto/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getmoto/moto/compare/5.1.18...5.1.19)

---
updated-dependencies:
- dependency-name: moto
  dependency-version: 5.1.19
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-30 22:37:43 +00:00
dependabot[bot]
268889b4bb Bump faker from 39.0.0 to 40.1.0 (#2149)
Bumps [faker](https://github.com/joke2k/faker) from 39.0.0 to 40.1.0.
- [Release notes](https://github.com/joke2k/faker/releases)
- [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/joke2k/faker/compare/v39.0.0...v40.1.0)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 40.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-30 17:28:50 -05:00
dependabot[bot]
7a9a05571d Bump celery from 5.6.0 to 5.6.1 (#2150)
Bumps [celery](https://github.com/celery/celery) from 5.6.0 to 5.6.1.
- [Release notes](https://github.com/celery/celery/releases)
- [Changelog](https://github.com/celery/celery/blob/main/Changelog.rst)
- [Commits](https://github.com/celery/celery/compare/v5.6.0...v5.6.1)

---
updated-dependencies:
- dependency-name: celery
  dependency-version: 5.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-30 17:18:33 -05:00
dependabot[bot]
81bcfbc089 Bump mistune from 3.1.4 to 3.2.0 (#2146)
Bumps [mistune](https://github.com/lepture/mistune) from 3.1.4 to 3.2.0.
- [Release notes](https://github.com/lepture/mistune/releases)
- [Changelog](https://github.com/lepture/mistune/blob/main/docs/changes.rst)
- [Commits](https://github.com/lepture/mistune/compare/v3.1.4...v3.2.0)

---
updated-dependencies:
- dependency-name: mistune
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-26 16:19:13 +00:00
dependabot[bot]
c8a3785c84 Bump hypothesis from 6.148.7 to 6.148.8 (#2147)
Bumps [hypothesis](https://github.com/HypothesisWorks/hypothesis) from 6.148.7 to 6.148.8.
- [Release notes](https://github.com/HypothesisWorks/hypothesis/releases)
- [Commits](https://github.com/HypothesisWorks/hypothesis/compare/hypothesis-python-6.148.7...hypothesis-python-6.148.8)

---
updated-dependencies:
- dependency-name: hypothesis
  dependency-version: 6.148.8
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-26 11:10:24 -05:00
dependabot[bot]
d55c5aa80b Bump numpy from 2.3.5 to 2.4.0 (#2145)
Bumps [numpy](https://github.com/numpy/numpy) from 2.3.5 to 2.4.0.
- [Release notes](https://github.com/numpy/numpy/releases)
- [Changelog](https://github.com/numpy/numpy/blob/main/doc/RELEASE_WALKTHROUGH.rst)
- [Commits](https://github.com/numpy/numpy/compare/v2.3.5...v2.4.0)

---
updated-dependencies:
- dependency-name: numpy
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 18:19:53 +00:00
dependabot[bot]
50273d4135 Bump marshmallow from 4.1.1 to 4.1.2 (#2144)
Bumps [marshmallow](https://github.com/marshmallow-code/marshmallow) from 4.1.1 to 4.1.2.
- [Changelog](https://github.com/marshmallow-code/marshmallow/blob/dev/CHANGELOG.rst)
- [Commits](https://github.com/marshmallow-code/marshmallow/compare/4.1.1...4.1.2)

---
updated-dependencies:
- dependency-name: marshmallow
  dependency-version: 4.1.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-23 13:11:03 -05:00
dependabot[bot]
a9b0ca2276 Bump phonenumbers from 9.0.20 to 9.0.21 (#2143)
Bumps [phonenumbers](https://github.com/daviddrysdale/python-phonenumbers) from 9.0.20 to 9.0.21.
- [Commits](https://github.com/daviddrysdale/python-phonenumbers/commits)

---
updated-dependencies:
- dependency-name: phonenumbers
  dependency-version: 9.0.21
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-19 10:53:23 -05:00
dependabot[bot]
672c838318 Bump pre-commit from 4.5.0 to 4.5.1 (#2141)
Bumps [pre-commit](https://github.com/pre-commit/pre-commit) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/pre-commit/pre-commit/releases)
- [Changelog](https://github.com/pre-commit/pre-commit/blob/main/CHANGELOG.md)
- [Commits](https://github.com/pre-commit/pre-commit/compare/v4.5.0...v4.5.1)

---
updated-dependencies:
- dependency-name: pre-commit
  dependency-version: 4.5.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-18 17:41:16 +00:00
dependabot[bot]
eea66e0f5b Bump faker from 38.2.0 to 39.0.0 (#2142)
Bumps [faker](https://github.com/joke2k/faker) from 38.2.0 to 39.0.0.
- [Release notes](https://github.com/joke2k/faker/releases)
- [Changelog](https://github.com/joke2k/faker/blob/master/CHANGELOG.md)
- [Commits](https://github.com/joke2k/faker/compare/v38.2.0...v39.0.0)

---
updated-dependencies:
- dependency-name: faker
  dependency-version: 39.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-12-18 11:11:55 -05:00
6 changed files with 355 additions and 350 deletions

View File

@@ -9,8 +9,8 @@ class CloudfoundryConfig:
self.s3_buckets = {bucket["name"]: bucket["credentials"] for bucket in buckets}
self._empty_bucket_credentials = {
"bucket": "",
"access_key_id": "",
"secret_access_key": "",
"access_key_id": "", # nosec B105
"secret_access_key": "", # nosec B105
"region": "",
}

View File

@@ -35,11 +35,12 @@ def check_service_over_total_message_limit(key_type, service):
# For now we are using calendar year
# Switch to using service agreement dates when the Agreement model is ready
# If the service stat has never been set before, compute the remaining seconds for 2025
# and set it (all services) to expire on 12/31/2025.
# and set it (all services) to expire on 12/31/2026.
if service_stats is None:
now_et = datetime.now(ZoneInfo("America/New_York"))
target_time = datetime(
2025, 12, 31, 23, 59, 59, tzinfo=ZoneInfo("America/New_York")
2026, 12, 31, 23, 59, 59, tzinfo=ZoneInfo("America/New_York")
)
time_difference = target_time - now_et
seconds_difference = int(time_difference.total_seconds())

View File

@@ -180,7 +180,9 @@ def get_organization_dashboard(organization_id):
organization_id, year, include_all_services=True
)
service_ids = [service_data["service_id"] for service_data in services_with_usage.values()]
service_ids = [
service_data["service_id"] for service_data in services_with_usage.values()
]
if not service_ids:
return jsonify(services=[]), 200
@@ -197,11 +199,13 @@ def get_organization_dashboard(organization_id):
sorted_services = sorted(
services_list,
key=lambda s: (
0 if (s["active"] and not s["restricted"]) else
1 if (s["active"] and s["restricted"]) else
2,
s["service_name"].lower()
)
(
0
if (s["active"] and not s["restricted"])
else 1 if (s["active"] and s["restricted"]) else 2
),
s["service_name"].lower(),
),
)
return jsonify(services=sorted_services)

635
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -9,13 +9,13 @@ readme = "README.md"
[tool.poetry.dependencies]
python = "^3.13.2"
alembic = "==1.17.2"
alembic = "==1.18.1"
amqp = "==5.3.1"
beautifulsoup4 = "==4.14.3"
boto3 = "^1.38.27"
botocore = "^1.38.27"
cachetools = "==6.2.4"
celery = {version = "==5.6.0", extras = ["redis"]}
celery = {version = "==5.6.2", extras = ["redis"]}
certifi = ">=2022.12.7"
cffi = "==2.0.0"
charset-normalizer = "^3.4.4"
@@ -34,9 +34,9 @@ flask-redis = "==0.4.0"
flask-sqlalchemy = "^3.1.1"
gunicorn = {version = "==23.0.0", extras = ["gevent"]}
iso8601 = "==2.1.0"
jsonschema = {version = "==4.25.1", extras = ["format"]}
jsonschema = {version = "==4.26.0", extras = ["format"]}
lxml = "==6.0.2"
marshmallow = "^4.1.1"
marshmallow = "^4.2.0"
marshmallow-sqlalchemy = "^1.4.2"
newrelic = "^11.2.0"
packaging = "==25.0"
@@ -45,19 +45,19 @@ psycopg2-binary = "==2.9.11"
pyjwt = "==2.10.1"
python-dotenv = "==1.2.1"
sqlalchemy = "==2.0.45"
werkzeug = "^3.1.4"
faker = "^38.2.0"
werkzeug = "^3.1.5"
faker = "^40.1.0"
async-timeout = "^5.0.1"
bleach = "^6.3.0"
geojson = "^3.2.0"
numpy = "^2.3.5"
numpy = "^2.4.0"
ordered-set = "^4.1.0"
phonenumbers = "^9.0.20"
phonenumbers = "^9.0.22"
python-json-logger = "^4.0.0"
regex = "^2025.11.3"
shapely = "^2.1.2"
smartypants = "^2.0.1"
mistune = "^3.1.4"
mistune = "^3.2.0"
blinker = "^1.9.0"
cryptography = "^46.0.3"
idna = "^3.11"
@@ -68,37 +68,38 @@ python-dateutil = "^2.9.0.post0"
pyyaml = "^6.0.3"
s3transfer = "^0.13.1"
six = "^1.16.0"
urllib3 = "^2.6.2"
urllib3 = "^2.6.3"
webencodings = "^0.5.1"
itsdangerous = "^2.2.0"
jinja2 = "^3.1.6"
redis = "^6.4.0"
requests = "^2.32.5"
virtualenv = "^20.35.4"
virtualenv = "^20.36.1"
marshmallow-enum = "^1.5.1"
awscli = "^1.40.36"
typing-extensions = "^4.15.0"
aiohttp = "^3.13.2"
aiohttp = "^3.13.3"
pytest = "^9.0.2"
filelock = ">=3.20.3"
pyasn1 = ">=0.6.2"
[tool.poetry.group.dev.dependencies]
awscli = "^1.33.32"
bandit = "*"
black = "^25.12.0"
black = "^26.1.0"
cyclonedx-python-lib = "^11.6.0"
cloudfoundry-client = "*"
exceptiongroup = "==1.3.1"
flake8 = "^7.3.0"
flake8-bugbear = "^25.11.29"
freezegun = "^1.5.5"
hypothesis = "^6.148.7"
hypothesis = "^6.150.2"
honcho = "*"
isort = "^7.0.0"
jinja2-cli = {version = "==0.8.2", extras = ["yaml"]}
moto = "==5.1.18"
jinja2-cli = {version = "==1.0.0", extras = ["yaml"]}
moto = "==5.1.19"
pip-audit = "*"
pre-commit = "^4.5.0"
pre-commit = "^4.5.1"
pytest = "^9.0.2"
pytest-env = "^1.2.0"
pytest-mock = "^3.15.1"

View File

@@ -1009,10 +1009,14 @@ def test_get_organization_dashboard(admin_request, mocker):
}
}
mock_templates = mocker.patch("app.organization.rest.dao_get_recent_sms_template_per_service")
mock_templates = mocker.patch(
"app.organization.rest.dao_get_recent_sms_template_per_service"
)
mock_templates.return_value = {service_id: "Welcome SMS"}
mock_contacts = mocker.patch("app.organization.rest.dao_get_service_primary_contacts")
mock_contacts = mocker.patch(
"app.organization.rest.dao_get_service_primary_contacts"
)
mock_contacts.return_value = {service_id: "billing@example.com"}
response = admin_request.get(