Skip to content

Commit

Permalink
Add model, factories, constants, helpers and vcr cassettes (#20346)
Browse files Browse the repository at this point in the history
  • Loading branch information
pmclaren19 authored Jan 21, 2025
1 parent fe5d9cf commit 1066e5e
Show file tree
Hide file tree
Showing 10 changed files with 590 additions and 2 deletions.
13 changes: 11 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ app/models/education_benefits_claim.rb @department-of-veterans-affairs/my-educat
app/models/education_benefits_submission.rb @department-of-veterans-affairs/my-education-benefits @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/models/education_stem_automated_decision.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/models/eligible_data_class.rb @department-of-veterans-affairs/vfs-vaos @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/models/evidence_submission.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/models/evss_claim_document.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/models/evss_claim.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/models/evss_claims_sync_status_tracker.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
Expand Down Expand Up @@ -537,7 +538,7 @@ app/swagger/swagger/schemas/bb/health_records.rb @department-of-veterans-affairs
app/swagger/swagger/schemas/connected_applications.rb @department-of-veterans-affairs/lighthouse-pivot
app/swagger/swagger/schemas/contacts.rb @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/vfs-mhv-integration @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/swagger/swagger/schemas/dependents.rb @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/swagger/swagger/schemas/dependents_verifications.rb @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/swagger/swagger/schemas/dependents_verifications.rb @department-of-veterans-affairs/benefits-dependents-management @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/swagger/swagger/schemas/form526 @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/swagger/swagger/schemas/form526/address.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
app/swagger/swagger/schemas/form526/date_range.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
Expand Down Expand Up @@ -943,6 +944,8 @@ lib/lgy/tag_sentry.rb @department-of-veterans-affairs/benefits-non-disability @d
lib/lighthouse @department-of-veterans-affairs/backend-review-group
lib/lighthouse/benefits_claims @department-of-veterans-affairs/disability-experience @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
lib/lighthouse/benefits_claims/monitor.rb @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group
lib/lighthouse/benefits_documents/constants.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
lib/lighthouse/benefits_documents/utilities/helpers.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
lib/lighthouse/benefits_intake @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group
lib/lighthouse/letters_generator @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
lib/logging @department-of-veterans-affairs/pension-and-burials @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/va-api-engineers
Expand Down Expand Up @@ -1225,6 +1228,7 @@ spec/factories/income_and_assets_claim.rb @department-of-veterans-affairs/pensio
spec/factories/in_progress_forms @department-of-veterans-affairs/vfs-authenticated-experience-backend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/factories/ivc_champva_forms.rb @department-of-veterans-affairs/champva-engineering @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/factories/lighthouse @department-of-veterans-affairs/vfs-facilities-frontend @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/factories/lighthouse/benefits_documents/evidence_submission.rb @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/va-api-engineers
spec/factories/lighthouse526_document_uploads.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/factories/lighthouse_documents.rb @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/factories/maintenance_windows.rb @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
Expand Down Expand Up @@ -2117,6 +2121,9 @@ spec/support/vcr_cassettes/lighthouse/auth/client_credentials/invalid_scopes_400
spec/support/vcr_cassettes/lighthouse/auth/client_credentials/revoke_consent_204.yml @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/vfs-facilities
spec/support/vcr_cassettes/lighthouse/auth/client_credentials/token_200.yml @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/vfs-facilities
spec/support/vcr_cassettes/lighthouse/benefits_claims @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/dbex-trex
spec/support/vcr_cassettes/lighthouse/benefits_claims/documents/lighthouse_document_upload_status_polling_failed.yml @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/va-api-engineers
spec/support/vcr_cassettes/lighthouse/benefits_claims/documents/lighthouse_document_upload_status_polling_pending.yml @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/va-api-engineers
spec/support/vcr_cassettes/lighthouse/benefits_claims/documents/lighthouse_document_upload_status_polling_success.yml @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/va-api-engineers
spec/support/vcr_cassettes/lighthouse/benefits_intake/200_lighthouse_intake_bulk_status_report_error.yml @department-of-veterans-affairs/platform-va-product-forms @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/support/vcr_cassettes/lighthouse/benefits_intake/200_lighthouse_intake_bulk_status_report_success.yml @department-of-veterans-affairs/platform-va-product-forms @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/support/vcr_cassettes/lighthouse/claims/200_response.yml @department-of-veterans-affairs/Disability-Experience @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/dbex-trex
Expand Down Expand Up @@ -2153,7 +2160,9 @@ spec/support/vcr_cassettes/shared @department-of-veterans-affairs/va-api-enginee
spec/support/vcr_cassettes/sign_in_service @department-of-veterans-affairs/octo-identity
spec/support/vcr_cassettes/slack/slack_bot_notify.yml @department-of-veterans-affairs/octo-identity
spec/support/vcr_cassettes/sm_client @department-of-veterans-affairs/vfs-mhv-secure-messaging @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/support/vcr_cassettes/spec/support @department-of-veterans-affairs/octo-identity
spec/support/vcr_cassettes/spec/support @department-of-veterans-affairs/backend-review-group
spec/support/vcr_cassettes/spec/support/vcr_cassettes/lighthouse/benefits_claims/documents/lighthouse_document_upload_200_jpg.yml @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/va-api-engineers
spec/support/vcr_cassettes/spec/support/vcr_cassettes/lighthouse/benefits_claims/documents/lighthouse_document_upload_200_pdf.yml @department-of-veterans-affairs/benefits-management-tools-be @department-of-veterans-affairs/backend-review-group @department-of-veterans-affairs/va-api-engineers
spec/support/vcr_cassettes/staccato @department-of-veterans-affairs/vfs-10-10 @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/support/vcr_cassettes/token_validation @department-of-veterans-affairs/lighthouse-banana-peels @department-of-veterans-affairs/va-api-engineers @department-of-veterans-affairs/backend-review-group
spec/support/vcr_cassettes/travel_pay @department-of-veterans-affairs/travel-pay-integration @department-of-veterans-affairs/backend-review-group
Expand Down
39 changes: 39 additions & 0 deletions app/models/evidence_submission.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# frozen_string_literal: true

require 'lighthouse/benefits_documents/constants'

class EvidenceSubmission < ApplicationRecord
belongs_to :user_account
has_kms_key
has_encrypted :template_metadata, key: :kms_key, **lockbox_options

# Lighthouse upload statuses:
# IN_PROGRESS: the workflow is currently executing.
# SUCCESS: the workflow has completed all steps successfully.
# FAILED: the workflow could not complete because a step encountered a non-recoverable error.
scope :completed, -> { where(upload_status: BenefitsDocuments::Constants::UPLOAD_STATUS[:SUCCESS]) }
scope :failed, -> { where(upload_status: BenefitsDocuments::Constants::UPLOAD_STATUS[:FAILED]) }
scope :pending, -> { where(upload_status: BenefitsDocuments::Constants::UPLOAD_STATUS[:PENDING]) }
# used for sending failure notification emails
scope :va_notify_email_queued, lambda {
where(upload_status: BenefitsDocuments::Constants::UPLOAD_STATUS[:FAILED])
.where.not(va_notify_date: nil)
.where.not(va_notify_id: nil)
}
# used for sending failure notification emails
scope :va_notify_email_not_queued, lambda {
where(upload_status: BenefitsDocuments::Constants::UPLOAD_STATUS[:FAILED], va_notify_id: nil, va_notify_date: nil)
}

def completed?
upload_status == BenefitsDocuments::Constants::UPLOAD_STATUS[:SUCCESS]
end

def failed?
upload_status == BenefitsDocuments::Constants::UPLOAD_STATUS[:FAILED]
end

def pending?
upload_status == BenefitsDocuments::Constants::UPLOAD_STATUS[:PENDING]
end
end
11 changes: 11 additions & 0 deletions lib/lighthouse/benefits_documents/constants.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

module BenefitsDocuments
module Constants
UPLOAD_STATUS = {
PENDING: 'IN_PROGRESS',
FAILED: 'FAILED',
SUCCESS: 'SUCCESS'
}.freeze
end
end
25 changes: 25 additions & 0 deletions lib/lighthouse/benefits_documents/utilities/helpers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# frozen_string_literal: true

module BenefitsDocuments
module Utilities
module Helpers
FILENAME_EXTENSION_MATCHER = /\.\w*$/
OBFUSCATED_CHARACTER_MATCHER = /[a-zA-Z\d]/

def self.generate_obscured_file_name(original_filename)
extension = original_filename[FILENAME_EXTENSION_MATCHER]
filename_without_extension = original_filename.gsub(FILENAME_EXTENSION_MATCHER, '')

if filename_without_extension.length > 5
# Obfuscate with the letter 'X'; we cannot obfuscate with special characters such as an asterisk,
# as these filenames appear in VA Notify Mailers and their templating engine uses markdown.
# Therefore, special characters can be interpreted as markdown and introduce formatting issues in the mailer
obfuscated_portion = filename_without_extension[3..-3].gsub(OBFUSCATED_CHARACTER_MATCHER, 'X')
filename_without_extension[0..2] + obfuscated_portion + filename_without_extension[-2..] + extension
else
original_filename
end
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# frozen_string_literal: true

require 'lighthouse/benefits_documents/constants'

FactoryBot.define do
factory :bd_evidence_submission, class: 'EvidenceSubmission' do
association :user_account, factory: :user_account
created_at { DateTime.now.utc }
end

factory :bd_evidence_submission_timeout, class: 'EvidenceSubmission' do
association :user_account, factory: :user_account
created_at { DateTime.new(1985, 10, 26).utc }
end

factory :bd_evidence_submission_pending, class: 'EvidenceSubmission' do
association :user_account, factory: :user_account
created_at { DateTime.now.utc }
upload_status { BenefitsDocuments::Constants::UPLOAD_STATUS[:PENDING] }
template_metadata_ciphertext do
{ 'personalisation' => {
'first_name' => 'test',
'document_type' => 'L014',
'file_name' => 'testfile.txt',
'obfuscated_file_name' => 'tesXXile.txt',
'date_submitted' => DateTime.now.utc.to_s,
'date_failed' => nil
} }.to_json
end
end

factory :bd_evidence_submission_failed, class: 'EvidenceSubmission' do
association :user_account, factory: :user_account
created_at { DateTime.now.utc }
upload_status { BenefitsDocuments::Constants::UPLOAD_STATUS[:FAILED] }
job_class { 'Lighthouse::EvidenceSubmissions::DocumentUpload' }
template_metadata_ciphertext do
{ 'personalisation' => {
'first_name' => 'test',
'document_type' => 'L014',
'file_name' => 'test.txt',
'obfuscated_file_name' => 'tesXXile.txt',
'date_submitted' => DateTime.now.utc.to_s,
'date_failed' => DateTime.now.utc.to_s
} }.to_json
end
end

factory :bd_evidence_submission_failed_va_notify_email_enqueued, class: 'EvidenceSubmission' do
association :user_account, factory: :user_account
created_at { 5.days.ago }
upload_status { BenefitsDocuments::Constants::UPLOAD_STATUS[:FAILED] }
job_class { 'Lighthouse::EvidenceSubmissions::DocumentUpload' }
va_notify_id { 123 }
va_notify_date { DateTime.now.utc }
end

factory :bd_evidence_submission_failed_va_notify_email_queued, class: 'EvidenceSubmission' do
association :user_account, factory: :user_account
created_at { 5.days.ago }
upload_status { BenefitsDocuments::Constants::UPLOAD_STATUS[:FAILED] }
job_class { 'Lighthouse::EvidenceSubmissions::DocumentUpload' }
va_notify_id { 123 }
va_notify_date { DateTime.now.utc }
va_notify_status { 'success' }
end
end

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

Loading

0 comments on commit 1066e5e

Please sign in to comment.