-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QA reporting enhancements #55
Conversation
QA Summary
Test CoverageCoverage report for
|
St | File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---|---|---|---|---|---|---|
🔴 | All files | 23.04 | 2.17 | 31.79 | 23.47 | |
🟢 | directives/requireAuth | 100 | 100 | 100 | 100 | |
🟢 | requireAuth.ts | 100 | 100 | 100 | 100 | |
🟡 | directives/skipAuth | 50 | 100 | 0 | 50 | |
🟡 | skipAuth.ts | 50 | 100 | 0 | 50 | 13 |
🔴 | functions | 0 | 100 | 0 | 0 | |
🔴 | graphql.ts | 0 | 100 | 0 | 0 | 14-22 |
🔴 | functions/cpfValidation | 0 | 100 | 0 | 0 | |
🔴 | cpfValidation.scenarios.ts | 0 | 100 | 100 | 0 | 3 |
🔴 | cpfValidation.ts | 0 | 100 | 0 | 0 | 7-25 |
🔴 | functions/excelToJson | 0 | 0 | 0 | 0 | |
🔴 | excelToJson.scenarios.ts | 0 | 100 | 100 | 0 | 3 |
🔴 | excelToJson.ts | 0 | 0 | 0 | 0 | 12-47 |
🔴 | graphql | 0 | 100 | 100 | 0 | |
🔴 | agencies.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | expenditureCategories.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | inputTemplates.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | organizations.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | outputTemplates.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | projects.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | reportingPeriods.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | roles.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | subrecipients.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | uploadValidations.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | uploads.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | users.sdl.ts | 0 | 100 | 100 | 0 | 1 |
🔴 | lib | 4.91 | 2.23 | 6.66 | 5.04 | |
🔴 | auth.ts | 20 | 10.34 | 25 | 21.21 | 40-41,72-101,120,124-159 |
🔴 | aws.ts | 27.02 | 12.5 | 18.18 | 27.02 | 46-51,67-99,125-166,179 |
🔴 | db.ts | 31.25 | 50 | 50 | 31.25 | 15-35,45,47 |
🔴 | ec-codes.ts | 0 | 100 | 100 | 0 | 1 |
🟢 | logger.ts | 100 | 100 | 100 | 100 | |
🔴 | persist-upload.js | 0 | 0 | 0 | 0 | 16-295 |
🔴 | preconditions.ts | 0 | 0 | 0 | 0 | 2-3 |
🔴 | records.js | 0 | 0 | 0 | 0 | 12-214 |
🔴 | templateRules.ts | 0 | 0 | 0 | 0 | |
🔴 | tracer.ts | 0 | 100 | 100 | 0 | 5-14 |
🔴 | validate-upload.js | 0 | 0 | 0 | 0 | 18-790 |
🔴 | validation-error.ts | 0 | 0 | 0 | 0 | 14-22 |
🔴 | validation-rules.js | 0 | 0 | 0 | 0 | 6-194 |
🟡 | services/agencies | 70.58 | 0 | 83.33 | 70.58 | |
🟢 | agencies.scenarios.ts | 100 | 100 | 100 | 100 | |
🟡 | agencies.ts | 68.75 | 0 | 83.33 | 68.75 | 39-47 |
🟢 | services/expenditureCategories | 92.3 | 100 | 83.33 | 92.3 | |
🟢 | expenditureCategories.scenarios.ts | 100 | 100 | 100 | 100 | |
🟢 | expenditureCategories.ts | 91.66 | 100 | 83.33 | 91.66 | 46 |
🟢 | services/inputTemplates | 92.3 | 100 | 83.33 | 92.3 | |
🟢 | inputTemplates.scenarios.ts | 100 | 100 | 100 | 100 | |
🟢 | inputTemplates.ts | 91.66 | 100 | 83.33 | 91.66 | 47 |
🟢 | services/organizations | 92.3 | 100 | 83.33 | 92.3 | |
🟢 | organizations.scenarios.ts | 100 | 100 | 100 | 100 | |
🟢 | organizations.ts | 91.66 | 100 | 83.33 | 91.66 | 47 |
🟢 | services/outputTemplates | 92.3 | 100 | 83.33 | 92.3 | |
🟢 | outputTemplates.scenarios.ts | 100 | 100 | 100 | 100 | |
🟢 | outputTemplates.ts | 91.66 | 100 | 83.33 | 91.66 | 43 |
🟡 | services/projects | 80 | 100 | 62.5 | 80 | |
🟢 | projects.scenarios.ts | 100 | 100 | 100 | 100 | |
🟡 | projects.ts | 78.57 | 100 | 62.5 | 78.57 | 45-51 |
🟡 | services/reportingPeriods | 53.84 | 0 | 41.66 | 56 | |
🟢 | reportingPeriods.scenarios.ts | 100 | 100 | 100 | 100 | |
🟡 | reportingPeriods.ts | 52 | 0 | 41.66 | 54.16 | 21-31,42-45,72-82 |
🟢 | services/roles | 92.3 | 100 | 83.33 | 92.3 | |
🟢 | roles.scenarios.ts | 100 | 100 | 100 | 100 | |
🟢 | roles.ts | 91.66 | 100 | 83.33 | 91.66 | 40 |
🟡 | services/subrecipients | 80 | 100 | 62.5 | 80 | |
🟢 | subrecipients.scenarios.ts | 100 | 100 | 100 | 100 | |
🟡 | subrecipients.ts | 78.57 | 100 | 62.5 | 78.57 | 47-55 |
🔴 | services/uploadValidations | 0 | 100 | 0 | 0 | |
🔴 | uploadValidations.scenarios.ts | 0 | 100 | 100 | 0 | 5 |
🔴 | uploadValidations.ts | 0 | 100 | 0 | 0 | 9-66 |
🟡 | services/uploads | 70 | 100 | 45.45 | 70 | |
🟢 | uploads.scenarios.ts | 100 | 100 | 100 | 100 | |
🟡 | uploads.ts | 68.42 | 100 | 45.45 | 68.42 | 49-66 |
🟡 | services/users | 52 | 0 | 38.46 | 52 | |
🟢 | users.scenarios.ts | 100 | 100 | 100 | 100 | |
🟡 | users.ts | 50 | 0 | 38.46 | 50 | 40-48,54-72 |
Coverage report for web
suite
St | File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s |
---|---|---|---|---|---|---|
🔴 | All files | 13.49 | 12.6 | 12.32 | 12.76 | |
🔴 | src | 25.92 | 0 | 21.42 | 25.92 | |
🔴 | App.tsx | 0 | 0 | 0 | 0 | 3-35 |
🟢 | Routes.tsx | 100 | 100 | 100 | 100 | |
🔴 | auth.ts | 35.71 | 100 | 16.66 | 35.71 | 33-45,68-88 |
🔴 | entry.client.tsx | 0 | 0 | 100 | 0 | 10-22 |
🔴 | src/components/Agency/Agencies | 0 | 100 | 0 | 0 | |
🔴 | Agencies.tsx | 0 | 100 | 0 | 0 | 9-21 |
🔴 | src/components/Agency/AgenciesCell | 0 | 100 | 0 | 0 | |
🔴 | AgenciesCell.tsx | 0 | 100 | 0 | 0 | 8-39 |
🔴 | src/components/Agency/Agency | 0 | 0 | 0 | 0 | |
🔴 | Agency.tsx | 0 | 0 | 0 | 0 | 10-78 |
🔴 | src/components/Agency/AgencyCell | 0 | 100 | 0 | 0 | |
🔴 | AgencyCell.tsx | 0 | 100 | 0 | 0 | 7-27 |
🔴 | src/components/Agency/AgencyForm | 0 | 0 | 0 | 0 | |
🔴 | AgencyForm.tsx | 0 | 0 | 0 | 0 | 24-39 |
🔴 | src/components/Agency/EditAgencyCell | 0 | 100 | 0 | 0 | |
🔴 | EditAgencyCell.tsx | 0 | 100 | 0 | 0 | 10-58 |
🔴 | src/components/Agency/NewAgency | 0 | 100 | 0 | 0 | |
🔴 | NewAgency.tsx | 0 | 100 | 0 | 0 | 9-35 |
🟢 | src/components/Navigation | 100 | 100 | 100 | 100 | |
🟢 | Navigation.tsx | 100 | 100 | 100 | 100 | |
🔴 | src/components/Organization/EditOrganizationCell | 0 | 100 | 0 | 0 | |
🔴 | EditOrganizationCell.tsx | 0 | 100 | 0 | 0 | 13-62 |
🔴 | src/components/Organization/NewOrganization | 0 | 100 | 0 | 0 | |
🔴 | NewOrganization.tsx | 0 | 100 | 0 | 0 | 9-35 |
🔴 | src/components/Organization/Organization | 0 | 0 | 0 | 0 | |
🔴 | Organization.tsx | 0 | 0 | 0 | 0 | 10-70 |
🔴 | src/components/Organization/OrganizationCell | 0 | 100 | 0 | 0 | |
🔴 | OrganizationCell.tsx | 0 | 100 | 0 | 0 | 7-27 |
🔴 | src/components/Organization/OrganizationForm | 0 | 0 | 0 | 0 | |
🔴 | OrganizationForm.tsx | 0 | 0 | 0 | 0 | 27-41 |
🔴 | src/components/Organization/Organizations | 0 | 100 | 0 | 0 | |
🔴 | Organizations.tsx | 0 | 100 | 0 | 0 | 9-21 |
🔴 | src/components/Organization/OrganizationsCell | 0 | 100 | 0 | 0 | |
🔴 | OrganizationsCell.tsx | 0 | 100 | 0 | 0 | 8-37 |
🟡 | src/components/ReportingPeriodCell | 55 | 0 | 55.55 | 47.05 | |
🟢 | ReportingPeriodCell.mock.ts | 100 | 100 | 100 | 100 | |
🔴 | ReportingPeriodCell.stories.tsx | 0 | 0 | 0 | 0 | 6-32 |
🟢 | ReportingPeriodCell.tsx | 100 | 100 | 100 | 100 | |
🟡 | src/components/ReportingPeriodsCell | 57.14 | 28.57 | 60 | 50 | |
🟢 | ReportingPeriodsCell.mock.ts | 100 | 100 | 100 | 100 | |
🔴 | ReportingPeriodsCell.stories.tsx | 0 | 0 | 0 | 0 | 6-32 |
🟢 | ReportingPeriodsCell.tsx | 100 | 66.66 | 100 | 100 | 63-66 |
🔴 | src/components/TableBuilder | 0 | 0 | 0 | 0 | |
🔴 | DebouncedInput.tsx | 0 | 0 | 0 | 0 | 13-32 |
🔴 | Filter.tsx | 0 | 0 | 0 | 0 | 6-15 |
🔴 | TableBuilder.tsx | 0 | 0 | 0 | 0 | 22-70 |
🔴 | TableHeader.tsx | 0 | 0 | 0 | 0 | 5-42 |
🔴 | TableRow.tsx | 0 | 100 | 0 | 0 | 3-7 |
🔴 | src/components/Upload/EditUploadCell | 0 | 100 | 0 | 0 | |
🔴 | EditUploadCell.tsx | 0 | 100 | 0 | 0 | 10-68 |
🔴 | src/components/Upload/NewUpload | 0 | 100 | 0 | 0 | |
🔴 | NewUpload.tsx | 0 | 100 | 0 | 0 | 7-30 |
🔴 | src/components/Upload/Upload | 0 | 0 | 0 | 0 | |
🔴 | Upload.tsx | 0 | 0 | 0 | 0 | 12-100 |
🔴 | src/components/Upload/UploadCell | 0 | 100 | 0 | 0 | |
🔴 | UploadCell.tsx | 0 | 100 | 0 | 0 | 7-32 |
🔴 | src/components/Upload/UploadForm | 0 | 0 | 0 | 0 | |
🔴 | UploadForm.tsx | 0 | 0 | 0 | 0 | 21-95 |
🔴 | src/components/Upload/Uploads | 0 | 0 | 0 | 0 | |
🔴 | Uploads.tsx | 0 | 0 | 0 | 0 | 9-66 |
🔴 | columns.tsx | 0 | 0 | 0 | 0 | 7-62 |
🔴 | src/components/Upload/UploadsCell | 0 | 100 | 0 | 0 | |
🔴 | UploadsCell.tsx | 0 | 100 | 0 | 0 | 8-53 |
🔴 | src/components/User/EditUserCell | 0 | 100 | 0 | 0 | |
🔴 | EditUserCell.tsx | 0 | 100 | 0 | 0 | 10-60 |
🔴 | src/components/User/NewUser | 0 | 100 | 0 | 0 | |
🔴 | NewUser.tsx | 0 | 100 | 0 | 0 | 9-32 |
🔴 | src/components/User/User | 0 | 0 | 0 | 0 | |
🔴 | User.tsx | 0 | 0 | 0 | 0 | 9-93 |
🔴 | src/components/User/UserCell | 0 | 100 | 0 | 0 | |
🔴 | UserCell.tsx | 0 | 100 | 0 | 0 | 7-31 |
🔴 | src/components/User/UserForm | 0 | 0 | 0 | 0 | |
🔴 | UserForm.tsx | 0 | 0 | 0 | 0 | 25-39 |
🔴 | src/components/User/Users | 0 | 100 | 0 | 0 | |
🔴 | Users.tsx | 0 | 100 | 0 | 0 | 9-24 |
🔴 | src/components/User/UsersCell | 0 | 100 | 0 | 0 | |
🔴 | UsersCell.tsx | 0 | 100 | 0 | 0 | 8-43 |
🟡 | src/layouts/AuthenticatedLayout | 60 | 50 | 100 | 60 | |
🔴 | AuthenticatedLayout.stories.tsx | 0 | 100 | 100 | 0 | 5-13 |
🟢 | AuthenticatedLayout.tsx | 100 | 50 | 100 | 100 | 24 |
🟢 | src/lib | 100 | 100 | 100 | 100 | |
🟢 | formatters.tsx | 100 | 100 | 100 | 100 | |
🔴 | src/pages/Agency/AgenciesPage | 0 | 100 | 0 | 0 | |
🔴 | AgenciesPage.tsx | 0 | 100 | 0 | 0 | 7-11 |
🔴 | src/pages/Agency/AgencyPage | 0 | 100 | 0 | 0 | |
🔴 | AgencyPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/Agency/EditAgencyPage | 0 | 100 | 0 | 0 | |
🔴 | EditAgencyPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/Agency/NewAgencyPage | 0 | 100 | 0 | 0 | |
🔴 | NewAgencyPage.tsx | 0 | 100 | 0 | 0 | 3-4 |
🔴 | src/pages/FatalErrorPage | 0 | 0 | 0 | 0 | |
🔴 | FatalErrorPage.tsx | 0 | 0 | 0 | 0 | 15 |
🟡 | src/pages/LoginPage | 50 | 100 | 100 | 50 | |
🔴 | LoginPage.stories.tsx | 0 | 100 | 100 | 0 | 5-13 |
🟢 | LoginPage.tsx | 100 | 100 | 100 | 100 | |
🔴 | src/pages/NotFoundPage | 0 | 100 | 0 | 0 | |
🔴 | NotFoundPage.tsx | 0 | 100 | 0 | 0 | 2 |
🔴 | src/pages/Organization/EditOrganizationPage | 0 | 100 | 0 | 0 | |
🔴 | EditOrganizationPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/Organization/NewOrganizationPage | 0 | 100 | 0 | 0 | |
🔴 | NewOrganizationPage.tsx | 0 | 100 | 0 | 0 | 3-4 |
🔴 | src/pages/Organization/OrganizationPage | 0 | 100 | 0 | 0 | |
🔴 | OrganizationPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/Organization/OrganizationsPage | 0 | 100 | 0 | 0 | |
🔴 | OrganizationsPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🟡 | src/pages/ReportingPeriodsPage | 50 | 100 | 100 | 50 | |
🔴 | ReportingPeriodsPage.stories.tsx | 0 | 100 | 100 | 0 | 5-13 |
🟢 | ReportingPeriodsPage.tsx | 100 | 100 | 100 | 100 | |
🔴 | src/pages/Upload/EditUploadPage | 0 | 100 | 0 | 0 | |
🔴 | EditUploadPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/Upload/NewUploadPage | 0 | 100 | 0 | 0 | |
🔴 | NewUploadPage.tsx | 0 | 100 | 0 | 0 | 3-4 |
🔴 | src/pages/Upload/UploadPage | 0 | 100 | 0 | 0 | |
🔴 | UploadPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/Upload/UploadsPage | 0 | 100 | 0 | 0 | |
🔴 | UploadsPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🟡 | src/pages/UploadTemplatePage | 50 | 100 | 50 | 50 | |
🔴 | UploadTemplatePage.stories.tsx | 0 | 100 | 100 | 0 | 5-13 |
🟡 | UploadTemplatePage.tsx | 75 | 100 | 50 | 75 | 9 |
🔴 | src/pages/User/EditUserPage | 0 | 100 | 0 | 0 | |
🔴 | EditUserPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/User/NewUserPage | 0 | 100 | 0 | 0 | |
🔴 | NewUserPage.tsx | 0 | 100 | 0 | 0 | 3-4 |
🔴 | src/pages/User/UserPage | 0 | 100 | 0 | 0 | |
🔴 | UserPage.tsx | 0 | 100 | 0 | 0 | 7-8 |
🔴 | src/pages/User/UsersPage | 0 | 100 | 0 | 0 | |
🔴 | UsersPage.tsx | 0 | 100 | 0 | 0 | 7-11 |
🔴 | src/utils | 0 | 0 | 0 | 0 | |
🔴 | index.ts | 0 | 0 | 0 | 0 | 3-37 |
Pusher: @TylerHendrickson, Action: pull_request_target
, Workflow: Continuous Integration
Terraform Summary
Hint: If "Terraform Format & Style" failed, run OutputValidation Output
Plan OutputTerraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+ create
~ update in-place
- destroy
-/+ destroy and then create replacement
+/- create replacement and then destroy
Terraform will perform the following actions:
# aws_ecs_service.console will be updated in-place
~ resource "aws_ecs_service" "console" {
id = "arn:aws:ecs:us-west-2:357150818708:service/cpfreporter/cpfreporter-console"
name = "cpfreporter-console"
tags = {}
~ task_definition = "arn:aws:ecs:us-west-2:357150818708:task-definition/cpfreporter-console:30" -> (known after apply)
# (15 unchanged attributes hidden)
# (3 unchanged blocks hidden)
}
# aws_ecs_task_definition.console must be replaced
+/- resource "aws_ecs_task_definition" "console" {
~ arn = "arn:aws:ecs:us-west-2:357150818708:task-definition/cpfreporter-console:30" -> (known after apply)
~ arn_without_revision = "arn:aws:ecs:us-west-2:357150818708:task-definition/cpfreporter-console" -> (known after apply)
~ container_definitions = (sensitive value) # forces replacement
~ id = "cpfreporter-console" -> (known after apply)
~ revision = 30 -> (known after apply)
- tags = {} -> null
# (9 unchanged attributes hidden)
# (1 unchanged block hidden)
}
# aws_s3_bucket_notification.excel_notification will be created
+ resource "aws_s3_bucket_notification" "excel_notification" {
+ bucket = "cpfreporter-cpf-reporter-staging-357150818708-us-west-2"
+ eventbridge = false
+ id = (known after apply)
+ lambda_function {
+ events = [
+ "s3:ObjectCreated:*",
]
+ filter_suffix = ".xlsm"
+ id = (known after apply)
+ lambda_function_arn = (known after apply)
}
}
# aws_s3_bucket_notification.json_notification will be created
+ resource "aws_s3_bucket_notification" "json_notification" {
+ bucket = "cpfreporter-cpf-reporter-staging-357150818708-us-west-2"
+ eventbridge = false
+ id = (known after apply)
+ lambda_function {
+ events = [
+ "s3:ObjectCreated:*",
]
+ filter_suffix = ".json"
+ id = (known after apply)
+ lambda_function_arn = (known after apply)
}
}
# aws_s3_object.lambda_artifact-cpfValidation will be updated in-place
~ resource "aws_s3_object" "lambda_artifact-cpfValidation" {
~ etag = "812b842ca7e65e7a018d21ee16b22edd-5" -> "b1d7303d212a05c9e6bb7c868b81296b"
id = "cpfValidation.b1d7303d212a05c9e6bb7c868b81296b.zip"
tags = {}
~ version_id = "goxiCsRXN6O8daOS9gJDnZQf_2t1xtNd" -> (known after apply)
# (11 unchanged attributes hidden)
}
# aws_s3_object.lambda_artifact-excelToJson will be updated in-place
~ resource "aws_s3_object" "lambda_artifact-excelToJson" {
~ etag = "41ce91252ab8d3546fb5905ff561b7c4-6" -> "20739793d622992f3eae2ba77a6afbb0"
id = "excelToJson.20739793d622992f3eae2ba77a6afbb0.zip"
tags = {}
~ version_id = "0xOSnc9Ity1JKngLCCY5WJ4tC8TNho35" -> (known after apply)
# (11 unchanged attributes hidden)
}
# aws_s3_object.lambda_artifact-graphql will be updated in-place
~ resource "aws_s3_object" "lambda_artifact-graphql" {
~ etag = "9326a606374d28b4950d319df67d84e1-6" -> "7c136621a9a1c814e2b6341e58a0362e"
id = "graphql.7c136621a9a1c814e2b6341e58a0362e.zip"
tags = {}
~ version_id = "s3kVN.bPwvpvE2J1kP0tdb4Ami6nrJiz" -> (known after apply)
# (11 unchanged attributes hidden)
}
# aws_s3_object.origin_dist_artifact["200.html"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "97963b3e57de06c48bbdbfa50ee12686" -> "26b4ba1df316b898fd04d4aa33fe7033"
id = "dist/200.html"
~ source_hash = "97963b3e57de06c48bbdbfa50ee12686" -> "26b4ba1df316b898fd04d4aa33fe7033"
tags = {}
~ version_id = "9XD2FFv0MWobxmeaeL7O8u3i1TVCk3Ff" -> (known after apply)
# (10 unchanged attributes hidden)
}
# aws_s3_object.origin_dist_artifact["build-manifest.json"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "6d989e54b15594d712bf9ac874eb1709" -> "3230fb7175d132db128371edce2e0926"
id = "dist/build-manifest.json"
~ source_hash = "6d989e54b15594d712bf9ac874eb1709" -> "3230fb7175d132db128371edce2e0926"
tags = {}
~ version_id = "RNKRV8bafx7FqxjsvKfRzEUqGktWurYP" -> (known after apply)
# (10 unchanged attributes hidden)
}
# aws_s3_object.origin_dist_artifact["chunk-references.json"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "b60c5472ecccd4db797614c49637bf37" -> "9afd05b39afd4d91a002bf2b91273459"
id = "dist/chunk-references.json"
~ source_hash = "b60c5472ecccd4db797614c49637bf37" -> "9afd05b39afd4d91a002bf2b91273459"
tags = {}
~ version_id = "2cpUKrAqTsQyOVzxwF.zQL2GReQy46sQ" -> (known after apply)
# (10 unchanged attributes hidden)
}
# aws_s3_object.origin_dist_artifact["index.html"] will be updated in-place
~ resource "aws_s3_object" "origin_dist_artifact" {
~ etag = "97963b3e57de06c48bbdbfa50ee12686" -> "26b4ba1df316b898fd04d4aa33fe7033"
id = "dist/index.html"
~ source_hash = "97963b3e57de06c48bbdbfa50ee12686" -> "26b4ba1df316b898fd04d4aa33fe7033"
tags = {}
~ version_id = "tV3jNHRcgREV13ZfLP4zA8e5FMy0PCzG" -> (known after apply)
# (10 unchanged attributes hidden)
}
# aws_s3_object.origin_dist_artifact["static/js/app.65a3fc25.js"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = (known after apply)
+ bucket = "cpfreporter-origin-357150818708-us-west-2"
+ bucket_key_enabled = (known after apply)
+ checksum_crc32 = (known after apply)
+ checksum_crc32c = (known after apply)
+ checksum_sha1 = (known after apply)
+ checksum_sha256 = (known after apply)
+ content_type = "text/javascript"
+ etag = "b330a241c69dbe4c59a9c08e2dc03a76"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/static/js/app.65a3fc25.js"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.65a3fc25.js"
+ source_hash = "b330a241c69dbe4c59a9c08e2dc03a76"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# aws_s3_object.origin_dist_artifact["static/js/app.65a3fc25.js.LICENSE.txt"] will be created
+ resource "aws_s3_object" "origin_dist_artifact" {
+ acl = (known after apply)
+ bucket = "cpfreporter-origin-357150818708-us-west-2"
+ bucket_key_enabled = (known after apply)
+ checksum_crc32 = (known after apply)
+ checksum_crc32c = (known after apply)
+ checksum_sha1 = (known after apply)
+ checksum_sha256 = (known after apply)
+ content_type = "text/plain"
+ etag = "22534f5b586cb736e9cdf4c0742c3fd1"
+ force_destroy = false
+ id = (known after apply)
+ key = "dist/static/js/app.65a3fc25.js.LICENSE.txt"
+ kms_key_id = (known after apply)
+ server_side_encryption = "AES256"
+ source = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.65a3fc25.js.LICENSE.txt"
+ source_hash = "22534f5b586cb736e9cdf4c0742c3fd1"
+ storage_class = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
+ version_id = (known after apply)
}
# aws_s3_object.origin_dist_artifact["static/js/app.dc0e7cec.js"] will be destroyed
# (because key ["static/js/app.dc0e7cec.js"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- bucket = "cpfreporter-origin-357150818708-us-west-2" -> null
- bucket_key_enabled = false -> null
- content_type = "text/javascript" -> null
- etag = "9b07d777749bdd4aa2835f53e8d3ecb4" -> null
- force_destroy = false -> null
- id = "dist/static/js/app.dc0e7cec.js" -> null
- key = "dist/static/js/app.dc0e7cec.js" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.dc0e7cec.js" -> null
- source_hash = "9b07d777749bdd4aa2835f53e8d3ecb4" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "cpf-reporter"
- "service" = "cpf-reporter"
- "usage" = "workload"
} -> null
- version_id = "XQ.VoWcCkb4nCvN5At4EwMbhDmrs9u2j" -> null
}
# aws_s3_object.origin_dist_artifact["static/js/app.dc0e7cec.js.LICENSE.txt"] will be destroyed
# (because key ["static/js/app.dc0e7cec.js.LICENSE.txt"] is not in for_each map)
- resource "aws_s3_object" "origin_dist_artifact" {
- bucket = "cpfreporter-origin-357150818708-us-west-2" -> null
- bucket_key_enabled = false -> null
- content_type = "text/plain" -> null
- etag = "22534f5b586cb736e9cdf4c0742c3fd1" -> null
- force_destroy = false -> null
- id = "dist/static/js/app.dc0e7cec.js.LICENSE.txt" -> null
- key = "dist/static/js/app.dc0e7cec.js.LICENSE.txt" -> null
- metadata = {} -> null
- server_side_encryption = "AES256" -> null
- source = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.dc0e7cec.js.LICENSE.txt" -> null
- source_hash = "22534f5b586cb736e9cdf4c0742c3fd1" -> null
- storage_class = "STANDARD" -> null
- tags = {} -> null
- tags_all = {
- "env" = "staging"
- "management" = "terraform"
- "owner" = "grants"
- "repo" = "cpf-reporter"
- "service" = "cpf-reporter"
- "usage" = "workload"
} -> null
- version_id = "qVzDODX6x7sFwTazv9lcQwjlPK_DbCMa" -> null
}
# module.lambda_function-cpfValidation.aws_iam_policy.logs[0] will be created
+ resource "aws_iam_policy" "logs" {
+ arn = (known after apply)
+ id = (known after apply)
+ name = "lambda-role-cpfValidation-logs"
+ name_prefix = (known after apply)
+ path = "/"
+ policy = jsonencode(
{
+ Statement = [
+ {
+ Action = [
+ "logs:PutLogEvents",
+ "logs:CreateLogStream",
+ "logs:CreateLogGroup",
]
+ Effect = "Allow"
+ Resource = [
+ "arn:aws:logs:us-west-2:357150818708:log-group:/aws/lambda/cpf-validation:*:*",
+ "arn:aws:logs:us-west-2:357150818708:log-group:/aws/lambda/cpf-validation:*",
]
},
]
+ Version = "2012-10-17"
}
)
+ policy_id = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
}
# module.lambda_function-cpfValidation.aws_iam_role.lambda[0] will be created
+ resource "aws_iam_role" "lambda" {
+ arn = (known after apply)
+ assume_role_policy = jsonencode(
{
+ Statement = [
+ {
+ Action = "sts:AssumeRole"
+ Effect = "Allow"
+ Principal = {
+ Service = "lambda.amazonaws.com"
}
},
]
+ Version = "2012-10-17"
}
)
+ create_date = (known after apply)
+ force_detach_policies = true
+ id = (known after apply)
+ managed_policy_arns = (known after apply)
+ max_session_duration = 3600
+ name = "lambda-role-cpfValidation"
+ name_prefix = (known after apply)
+ path = "/"
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
+ unique_id = (known after apply)
}
# module.lambda_function-cpfValidation.aws_iam_role_policy_attachment.additional_one[0] will be created
+ resource "aws_iam_role_policy_attachment" "additional_one" {
+ id = (known after apply)
+ policy_arn = "arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
+ role = "lambda-role-cpfValidation"
}
# module.lambda_function-cpfValidation.aws_iam_role_policy_attachment.logs[0] will be created
+ resource "aws_iam_role_policy_attachment" "logs" {
+ id = (known after apply)
+ policy_arn = (known after apply)
+ role = "lambda-role-cpfValidation"
}
# module.lambda_function-cpfValidation.aws_lambda_function.this[0] will be created
+ resource "aws_lambda_function" "this" {
+ architectures = [
+ "x86_64",
]
+ arn = (known after apply)
+ description = "Reacts to S3 events and validates CPF JSON files."
+ function_name = "cpf-validation"
+ handler = "index.handler"
+ id = (known after apply)
+ invoke_arn = (known after apply)
+ last_modified = (known after apply)
+ layers = [
+ "arn:aws:lambda:us-west-2:464622532012:layer:Datadog-Extension:51",
+ "arn:aws:lambda:us-west-2:464622532012:layer:Datadog-Node18-x:101",
]
+ memory_size = 128
+ package_type = "Zip"
+ publish = true
+ qualified_arn = (known after apply)
+ qualified_invoke_arn = (known after apply)
+ reserved_concurrent_executions = -1
+ role = (known after apply)
+ runtime = "nodejs18.x"
+ s3_bucket = "cpfreporter-lambdaartifacts-357150818708-us-west-2"
+ s3_key = "cpfValidation.b1d7303d212a05c9e6bb7c868b81296b.zip"
+ signing_job_arn = (known after apply)
+ signing_profile_version_arn = (known after apply)
+ skip_destroy = false
+ source_code_hash = (known after apply)
+ source_code_size = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
+ timeout = 3
+ version = (known after apply)
+ ephemeral_storage {
+ size = 512
}
+ timeouts {}
+ vpc_config {
+ ipv6_allowed_for_dual_stack = false
+ security_group_ids = [
+ "sg-088d54ce85f679ac1",
+ "sg-0ac4f2c8cfc0c58bc",
]
+ subnet_ids = (sensitive value)
+ vpc_id = (known after apply)
}
}
# module.lambda_function-excelToJson.aws_iam_policy.logs[0] will be created
+ resource "aws_iam_policy" "logs" {
+ arn = (known after apply)
+ id = (known after apply)
+ name = "lambda-role-excelToJson-logs"
+ name_prefix = (known after apply)
+ path = "/"
+ policy = jsonencode(
{
+ Statement = [
+ {
+ Action = [
+ "logs:PutLogEvents",
+ "logs:CreateLogStream",
+ "logs:CreateLogGroup",
]
+ Effect = "Allow"
+ Resource = [
+ "arn:aws:logs:us-west-2:357150818708:log-group:/aws/lambda/excel-to-json:*:*",
+ "arn:aws:logs:us-west-2:357150818708:log-group:/aws/lambda/excel-to-json:*",
]
},
]
+ Version = "2012-10-17"
}
)
+ policy_id = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
}
# module.lambda_function-excelToJson.aws_iam_role.lambda[0] will be created
+ resource "aws_iam_role" "lambda" {
+ arn = (known after apply)
+ assume_role_policy = jsonencode(
{
+ Statement = [
+ {
+ Action = "sts:AssumeRole"
+ Effect = "Allow"
+ Principal = {
+ Service = "lambda.amazonaws.com"
}
},
]
+ Version = "2012-10-17"
}
)
+ create_date = (known after apply)
+ force_detach_policies = true
+ id = (known after apply)
+ managed_policy_arns = (known after apply)
+ max_session_duration = 3600
+ name = "lambda-role-excelToJson"
+ name_prefix = (known after apply)
+ path = "/"
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
+ unique_id = (known after apply)
}
# module.lambda_function-excelToJson.aws_iam_role_policy_attachment.additional_one[0] will be created
+ resource "aws_iam_role_policy_attachment" "additional_one" {
+ id = (known after apply)
+ policy_arn = "arn:aws:iam::aws:policy/AmazonS3FullAccess"
+ role = "lambda-role-excelToJson"
}
# module.lambda_function-excelToJson.aws_iam_role_policy_attachment.logs[0] will be created
+ resource "aws_iam_role_policy_attachment" "logs" {
+ id = (known after apply)
+ policy_arn = (known after apply)
+ role = "lambda-role-excelToJson"
}
# module.lambda_function-excelToJson.aws_lambda_function.this[0] will be created
+ resource "aws_lambda_function" "this" {
+ architectures = [
+ "x86_64",
]
+ arn = (known after apply)
+ description = "Reacts to S3 events and converts Excel files to JSON."
+ function_name = "excel-to-json"
+ handler = "index.handler"
+ id = (known after apply)
+ invoke_arn = (known after apply)
+ last_modified = (known after apply)
+ layers = [
+ "arn:aws:lambda:us-west-2:464622532012:layer:Datadog-Extension:51",
+ "arn:aws:lambda:us-west-2:464622532012:layer:Datadog-Node18-x:101",
]
+ memory_size = 128
+ package_type = "Zip"
+ publish = true
+ qualified_arn = (known after apply)
+ qualified_invoke_arn = (known after apply)
+ reserved_concurrent_executions = -1
+ role = (known after apply)
+ runtime = "nodejs18.x"
+ s3_bucket = "cpfreporter-lambdaartifacts-357150818708-us-west-2"
+ s3_key = "excelToJson.20739793d622992f3eae2ba77a6afbb0.zip"
+ signing_job_arn = (known after apply)
+ signing_profile_version_arn = (known after apply)
+ skip_destroy = false
+ source_code_hash = (known after apply)
+ source_code_size = (known after apply)
+ tags_all = {
+ "env" = "staging"
+ "management" = "terraform"
+ "owner" = "grants"
+ "repo" = "cpf-reporter"
+ "service" = "cpf-reporter"
+ "usage" = "workload"
}
+ timeout = 3
+ version = (known after apply)
+ ephemeral_storage {
+ size = 512
}
+ timeouts {}
+ vpc_config {
+ ipv6_allowed_for_dual_stack = false
+ security_group_ids = [
+ "sg-088d54ce85f679ac1",
+ "sg-0ac4f2c8cfc0c58bc",
]
+ subnet_ids = (sensitive value)
+ vpc_id = (known after apply)
}
}
# module.lambda_function-graphql.aws_lambda_function.this[0] will be updated in-place
~ resource "aws_lambda_function" "this" {
id = "cpfreporter-graphql"
~ qualified_arn = "arn:aws:lambda:us-west-2:357150818708:function:cpfreporter-graphql:46" -> (known after apply)
~ qualified_invoke_arn = "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:357150818708:function:cpfreporter-graphql:46/invocations" -> (known after apply)
tags = {}
~ version = "46" -> (known after apply)
# (21 unchanged attributes hidden)
~ environment {
~ variables = {
~ "DD_COMMIT_SHA" = "6514ba63fe5bffc58dda54d15f1993e17698c761" -> "676ccb9efaea612f207ed1b5551538c702b9cf46"
~ "DD_TAGS" = "git.commit.sha:6514ba63fe5bffc58dda54d15f1993e17698c761,git.repository_url:github.com/usdigitalresponse/cpf-reporter" -> "git.commit.sha:676ccb9efaea612f207ed1b5551538c702b9cf46,git.repository_url:github.com/usdigitalresponse/cpf-reporter"
~ "DD_VERSION" = "6514ba63fe5bffc58dda54d15f1993e17698c761" -> "676ccb9efaea612f207ed1b5551538c702b9cf46"
# (16 unchanged elements hidden)
}
}
# (4 unchanged blocks hidden)
}
# module.lambda_function-graphql.aws_lambda_permission.current_version_triggers["APIGateway"] must be replaced
-/+ resource "aws_lambda_permission" "current_version_triggers" {
~ id = "APIGateway" -> (known after apply)
~ qualifier = "46" # forces replacement -> (known after apply) # forces replacement
+ statement_id_prefix = (known after apply)
# (5 unchanged attributes hidden)
}
Plan: 16 to add, 9 to change, 4 to destroy. Pusher: @TylerHendrickson, Action: |
@@ -61,7 +62,7 @@ function getS3Client() { | |||
export function uploadWorkbook( | |||
upload: CreateUploadInput, | |||
uploadId: number, | |||
body: any | |||
body: StreamingBlobPayloadInputTypes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using types from @smithy/types
as a more descriptive alternative.
This way, type-checkers can determine whether body
values are compatible with the S3 PutObject operation.
@@ -70,8 +71,8 @@ export function uploadWorkbook( | |||
async function sendPutObjectToS3Bucket( | |||
bucketName: string, | |||
key: string, | |||
body: any | |||
) { | |||
body: StreamingBlobPayloadInputTypes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same as above.
/** | ||
* This function is a wrapper around the getSignedUrl function from the @aws-sdk/s3-request-presigner package. | ||
* Exists to organize the imports and to make it easier to mock in tests. | ||
*/ | ||
|
||
// eslint-disable-next-line @typescript-eslint/no-unused-vars |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This function's signature doesn't appear to have any unused vars, so removed this pragma.
@@ -143,8 +143,7 @@ function getSQSClient() { | |||
return sqs | |||
} | |||
|
|||
// eslint-disable-next-line @typescript-eslint/no-unused-vars |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This function's signature doesn't appear to have any unused vars, so removed this pragma.
@@ -154,7 +153,6 @@ async function sendSqsMessage(queueUrl: string, messageBody: any) { | |||
) | |||
} | |||
|
|||
// eslint-disable-next-line @typescript-eslint/no-unused-vars |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This function's signature doesn't appear to have any unused vars, so removed this pragma.
@@ -143,8 +143,7 @@ function getSQSClient() { | |||
return sqs | |||
} | |||
|
|||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | |||
async function sendSqsMessage(queueUrl: string, messageBody: any) { | |||
async function sendSqsMessage(queueUrl: string, messageBody: unknown) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This post makes a compelling argument for preferring unknown
over any
for typing values that are passed through to JSON.stringify()
, so decided to go with it.
This PR tweaks various parts of the repo involved in the QA phase of the CI workflow, with particular focus on reinforcing existing (lint) checks related to code quality and consistency.
Summary of changes:
web/src
were skipped if ESLint failed forapi/src
. We want ESLint to run for both sides, even if one of them fails. This also fixes an issue where ESLint checks were incorrectly reporting as passing.docs/
for developer reference when dealing with QA check failures.api/src
).