Skip to content

Commit

Permalink
added github workflows and removed some unused code
Browse files Browse the repository at this point in the history
  • Loading branch information
lambeb committed Jan 29, 2025
1 parent bdebcef commit 0a1cfb5
Show file tree
Hide file tree
Showing 8 changed files with 119 additions and 62 deletions.
38 changes: 38 additions & 0 deletions .github/workflows/codeql-analysis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: "CodeQL"

on:
push:
branches: [ main, preprod, prod ]
pull_request:
branches: [ main ]
schedule:
- cron: '35 10 * * 6'

jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write

strategy:
fail-fast: false
matrix:
language: [ 'python' ]

steps:
- name: Checkout repository
uses: actions/checkout@v2

- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}

- name: Autobuild

Check notice

Code scanning / CodeQL

Workflow Should Use Default Setup Note

CodeQL Action could use default setup instead of advanced configuration.
uses: github/codeql-action/autobuild@v1

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
71 changes: 71 additions & 0 deletions .github/workflows/test.py.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
name: Test coverage report

on:
pull_request:
branches: [ main ]
push:
branches: [ main ]

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ 3.9 ]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Run pytest
run: |
poetry run python -m pytest --cov=./
poetry run python -m coverage xml -i
- name: Codecov
uses: codecov/[email protected]

Check warning

Code scanning / CodeQL

Unpinned tag for a non-immutable Action in workflow Medium test

Unpinned 3rd party Action 'Test coverage report' step
Uses Step
uses 'codecov/codecov-action' with ref 'v1.5.0', not a pinned commit hash
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true

lint:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium test

Actions Job or Workflow does not set permissions
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [ 3.9 ]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install poetry
poetry install
- name: Run black
run: poetry run black --check .
- name: Run isort
run: poetry run isort --check .

# check-types:
# runs-on: ubuntu-latest
# strategy:
# matrix:
# python-version: [ 3.9 ]
# steps:
# - uses: actions/checkout@v2
# - name: Set up Python ${{ matrix.python-version }}
# uses: actions/setup-python@v2
# with:
# python-version: ${{ matrix.python-version }}
# - name: Install dependencies
# run: |
# pip install poetry
# poetry install
# - name: Run mypy
# run: poetry run mypy .

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium test

Actions Job or Workflow does not set permissions
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ lint:
@poetry run black --check .
@poetry run isort --check .
@poetry run flake8 --ignore=E501 .
@poetry run mypy --config-file ${mkfile_dir}mypy.ini .

.PHONY: test
## Run unit tests
Expand Down
4 changes: 3 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,4 +86,6 @@ def process_zip_file(data, _context):


if __name__ == "__main__":
process_zip_file({"bucket": "ons-blaise-v2-dev-rr3-ingest", "name": "IPS2501A.zip"})
process_zip_file(
{"bucket": "ons-blaise-v2-dev-rr3-ingest", "name": "IPS2501A.zip"}, None
)
9 changes: 5 additions & 4 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

58 changes: 1 addition & 57 deletions services/validation_service.py
Original file line number Diff line number Diff line change
@@ -1,72 +1,16 @@
import logging
import re

import blaise_restapi
import flask

from appconfig.config import Config
from utilities.custom_exceptions import BlaiseError, ConfigError, RequestError
from utilities.custom_exceptions import BlaiseError, ConfigError
from utilities.logging import function_name


class ValidationService:
def __init__(self) -> None:
self.request_json = None

def get_valid_request_values_for_ingest_service(
self, request: flask.request
) -> tuple[str, str, str]:
self.validate_request_is_json(request)
self.validate_request_values_are_not_empty()
self.validate_questionnaire_name()

return (
self.request_json["serverParkName"],
self.request_json["questionnaireName"],
self.request_json["tempFilePath"],
)

def validate_request_is_json(self, request):
try:
self.request_json = request.get_json()
except Exception as e:
error_message = (
f"Exception raised in {function_name()}. "
f"Error getting json from request '{request}': {e}"
)
logging.error(error_message)
raise RequestError(error_message)

def validate_request_values_are_not_empty(self):
missing_values = []
questionnaire_name = self.request_json["questionnaire_name"]
server_park = self.request_json["server_park"]

if questionnaire_name is None or questionnaire_name == "":
missing_values.append("questionnaire_name")

if server_park is None or server_park == "":
missing_values.append("server_park")

if missing_values:
error_message = f"Missing required values from request: {missing_values}"
logging.error(error_message)
raise RequestError(error_message)

def validate_questionnaire_name(self):
result = re.match(
r"^[A-Za-z]{3}\d{4}.*$", self.request_json["questionnaire_name"]
)
if not result:
error_message = (
f"{self.request_json['questionnaire_name']} is not a valid "
"questionnaire name format. "
"Questionnaire name must start with 3 letters, followed by 4 numbers"
)

logging.error(error_message)
raise RequestError(error_message)

@staticmethod
def validate_config(config):
missing_configs = []
Expand Down
Empty file added tests/__init__.py
Empty file.
Empty file added utilities/__init__.py
Empty file.

0 comments on commit 0a1cfb5

Please sign in to comment.