Skip to content

Commit 2f02232

Browse files
committed
CCM-13278: Create skeleton mesh-acknowledge lambda
1 parent cedb3bc commit 2f02232

File tree

19 files changed

+246
-20
lines changed

19 files changed

+246
-20
lines changed

.github/workflows/stage-2-test.yaml

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,10 @@ jobs:
7272
- uses: actions/setup-node@v6
7373
with:
7474
node-version: 24.10.0
75-
- uses: actions/setup-python@v6
75+
- name: "Setup Python"
76+
uses: actions/setup-python@v6
7677
with:
77-
python-version: '3.14'
78+
python-version: ${{ inputs.python_version }}
7879
- name: "Run unit test suite"
7980
run: |
8081
make test-unit
@@ -94,14 +95,21 @@ jobs:
9495
uses: actions/upload-artifact@v4
9596
with:
9697
name: python-coverage-reports
97-
path: "src/**/coverage.xml"
98+
path: |
99+
src/**/coverage.xml
100+
utils/**/coverage.xml
101+
lambdas/**/coverage.xml
98102
test-lint:
99103
name: "Linting"
100104
runs-on: ubuntu-latest
101105
timeout-minutes: 5
102106
steps:
103107
- name: "Checkout code"
104108
uses: actions/checkout@v5
109+
- name: "Setup Python"
110+
uses: actions/setup-python@v6
111+
with:
112+
python-version: ${{ inputs.python_version }}
105113
- uses: actions/setup-node@v6
106114
with:
107115
node-version: 24.10.0
@@ -156,7 +164,7 @@ jobs:
156164
uses: actions/download-artifact@v5
157165
with:
158166
name: python-coverage-reports
159-
path: src/
167+
path: .
160168
- name: "Perform static analysis"
161169
uses: ./.github/actions/perform-static-analysis
162170
with:

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ version.json
1212

1313
# Please, add your custom content below!
1414

15+
# Don't track ephemeral local build files
16+
target/
17+
18+
# Python build artifacts
19+
*.egg-info/
20+
.eggs/
21+
build/
22+
dist/
23+
1524
# dependencies
1625
node_modules
1726
.node-version
@@ -25,6 +34,7 @@ dist
2534
output
2635
/schemas
2736
.env
37+
**/__pycache__
2838

2939
# Python
3040
__pycache__/

Makefile

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,22 @@ include scripts/init.mk
99

1010
quick-start: config clean build serve-docs # Quick start target to setup, build and serve docs @Pipeline
1111

12-
dependencies: # Install dependencies needed to build and test the project @Pipeline
13-
# TODO: Implement installation of your project dependencies
12+
dependencies:: # Install dependencies needed to build and test the project @Pipeline
13+
$(MAKE) -C src/cloudevents install
14+
$(MAKE) -C src/eventcatalogasyncapiimporter install
15+
$(MAKE) -C lambdas/mesh-acknowledge install
16+
npm install --workspaces
17+
$(MAKE) generate
1418

15-
generate: # Generate any autogenerated output @Pipeline
16-
npm run generate-dependencies
19+
dependencies-docs:: # Install documentation dependencies @Pipeline
20+
$(MAKE) -C docs install
1721

18-
build: # Build the project artefact @Pipeline
22+
build: dependencies-docs # Build the project artefact @Pipeline
1923
$(MAKE) -C docs build
2024

25+
generate: # Generate any autogenerated output @Pipeline
26+
npm run generate-dependencies
27+
2128
debug:
2229
$(MAKE) -C docs debug
2330

@@ -32,16 +39,12 @@ clean:: # Clean-up project resources (main) @Operations
3239
$(MAKE) -C src/cloudevents clean && \
3340
$(MAKE) -C src/eventcatalogasyncapiimporter clean && \
3441
$(MAKE) -C src/eventcatalogasyncapiimporter clean-output && \
42+
$(MAKE) -C lambdas/mesh-acknowledge clean && \
3543
$(MAKE) -C src/python-schema-generator clean && \
3644
rm -f .version
3745
npm run clean
3846

39-
config:: _install-dependencies version # Configure development environment (main) @Configuration
40-
$(MAKE) -C docs install
41-
$(MAKE) -C src/cloudevents install
42-
$(MAKE) -C src/eventcatalogasyncapiimporter install
43-
npm install
44-
$(MAKE) generate
47+
config:: _install-dependencies version dependencies # Configure development environment (main) @Configuration
4548

4649
serve-docs:
4750
$(MAKE) -C docs s

infrastructure/terraform/components/dl/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ No requirements.
4242
| <a name="module_kms"></a> [kms](#module\_kms) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-kms.zip | n/a |
4343
| <a name="module_lambda_apim_key_generation"></a> [lambda\_apim\_key\_generation](#module\_lambda\_apim\_key\_generation) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
4444
| <a name="module_lambda_lambda_apim_refresh_token"></a> [lambda\_lambda\_apim\_refresh\_token](#module\_lambda\_lambda\_apim\_refresh\_token) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
45+
| <a name="module_mesh_acknowledge"></a> [mesh\_acknowledge](#module\_mesh\_acknowledge) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
4546
| <a name="module_mesh_poll"></a> [mesh\_poll](#module\_mesh\_poll) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
4647
| <a name="module_pdm_mock"></a> [pdm\_mock](#module\_pdm\_mock) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
4748
| <a name="module_pdm_uploader"></a> [pdm\_uploader](#module\_pdm\_uploader) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.29/terraform-lambda.zip | n/a |
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
__pycache__
2+
.venv

lambdas/mesh-acknowledge/Makefile

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
PACKAGE=mesh_acknowledge
2+
VERSION=0.1.0
3+
4+
install:
5+
pip install -r requirements.txt
6+
7+
install-dev:
8+
pip install -r requirements-dev.txt
9+
10+
test:
11+
cd ../.. && PYTHONPATH=lambdas/mesh-acknowledge:$$PYTHONPATH pytest lambdas/mesh-acknowledge/mesh_acknowledge/__tests__/ -v
12+
13+
coverage:
14+
cd ../.. && PYTHONPATH=lambdas/mesh-acknowledge:$$PYTHONPATH pytest lambdas/mesh-acknowledge/mesh_acknowledge/__tests__/ \
15+
--cov=lambdas/mesh-acknowledge/mesh_acknowledge \
16+
--cov-config=lambdas/mesh-acknowledge/pytest.ini \
17+
--cov-report=html:lambdas/mesh-acknowledge/htmlcov \
18+
--cov-report=term-missing \
19+
--cov-report=xml:lambdas/mesh-acknowledge/coverage.xml \
20+
--cov-branch
21+
22+
lint:
23+
pylint mesh_acknowledge
24+
25+
format:
26+
autopep8 -ri .
27+
28+
package:
29+
../../utils/package_python_lambda.sh meshacknowledgelambda
30+
31+
clean:
32+
rm -rf target
33+
34+
.PHONY: install install-dev test coverage lint format package clean
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"""
2+
MESH Acknowledge Lambda
3+
4+
This lambda handles acknowledging received MESH files, by sending a message to the MESH inbox of
5+
their sender.
6+
"""
7+
8+
__version__ = '0.1.0'
9+
from .handler import *
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# Test package init
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
"""
2+
Tests for Lambda handler
3+
"""
4+
from unittest.mock import Mock
5+
from mesh_acknowledge.handler import handler
6+
7+
8+
def setup_mocks():
9+
"""
10+
Create all mock objects needed for handler testing
11+
"""
12+
mock_context = Mock()
13+
14+
return mock_context
15+
16+
17+
class TestHandler:
18+
"""Test suite for Lambda handler"""
19+
20+
def test_handler_success(self):
21+
"""Test successful handler execution"""
22+
(mock_context) = setup_mocks()
23+
24+
# Execute handler
25+
handler(None, mock_context)
26+
27+
def test_handler_error(self):
28+
"""Test handler execution when an exception is raised"""
29+
(mock_context) = setup_mocks()
30+
31+
# This test should raise an exception
32+
33+
# Execute handler
34+
handler(None, mock_context)
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
"""lambda handler for Mesh Acknowledge application"""
2+
3+
4+
def handler(_, _context):
5+
"""lambda handler for Mesh Acknowledge application"""
6+
print("Started MESH Acknowledge handler")

0 commit comments

Comments
 (0)