From d69875976a279cce340a07a7d0783b0f712fd8a7 Mon Sep 17 00:00:00 2001 From: halprin Date: Mon, 8 Jan 2024 15:32:17 -0700 Subject: [PATCH 1/3] 672: Write metadata even if we fail to call the history API --- .../etor/metadata/PartnerMetadata.java | 4 ++++ .../etor/metadata/PartnerMetadataOrchestrator.java | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadata.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadata.java index e54675ef8..6a453bc62 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadata.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadata.java @@ -25,6 +25,10 @@ public PartnerMetadata( this(receivedSubmissionId, null, sender, null, timeReceived, hash); } + public PartnerMetadata(String receivedSubmissionId, String hash) { + this(receivedSubmissionId, null, null, null, null, hash); + } + public PartnerMetadata withSentSubmissionId(String sentSubmissionId) { return new PartnerMetadata( this.receivedSubmissionId, diff --git a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java index 5de7acaf7..0ca1f6d0d 100644 --- a/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java +++ b/etor/src/main/java/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestrator.java @@ -54,6 +54,14 @@ public void updateMetadataForReceivedOrder(String receivedSubmissionId, String o timeReceived = Instant.parse(timestamp); } catch (Exception e) { + // write the received submission ID so that the rest of the metadata flow works even if + // some data is missing + logger.logWarning( + "Unable to retrieve metadata from RS history API, but writing basic metadata entry anyway for received submission ID {}", + receivedSubmissionId); + PartnerMetadata partnerMetadata = new PartnerMetadata(receivedSubmissionId, orderHash); + partnerMetadataStorage.saveMetadata(partnerMetadata); + throw new PartnerMetadataException( "Unable to retrieve metadata from RS history API", e); } From 7520e515c8ad0a70b372bb1f77d37752fa595d51 Mon Sep 17 00:00:00 2001 From: halprin Date: Mon, 8 Jan 2024 15:33:21 -0700 Subject: [PATCH 2/3] 672: Test for the new PartnerMetadata constructor --- .../etor/metadata/PartnerMetadataTest.groovy | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataTest.groovy b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataTest.groovy index 19e45d379..4bf7d1c85 100644 --- a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataTest.groovy +++ b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataTest.groovy @@ -54,6 +54,23 @@ class PartnerMetadataTest extends Specification { metadata.hash() == hash } + def "test constructor with only received submission ID and hash"() { + given: + def receivedSubmissionId = "receivedSubmissionId" + def hash = "abcd" + + when: + def metadata = new PartnerMetadata(receivedSubmissionId, hash) + + then: + metadata.receivedSubmissionId() == receivedSubmissionId + metadata.sentSubmissionId() == null + metadata.sender() == null + metadata.receiver() == null + metadata.timeReceived() == null + metadata.hash() == hash + } + def "test withSentSubmissionId and withReceiver to update PartnerMetadata"() { given: def receivedSubmissionId = "receivedSubmissionId" From 4b3427a7904ef21b1e592516e05264fe8b84c7d3 Mon Sep 17 00:00:00 2001 From: halprin Date: Mon, 8 Jan 2024 15:38:47 -0700 Subject: [PATCH 3/3] 672: Test that we write the metadata even if we cannot call the history API --- .../etor/metadata/PartnerMetadataOrchestratorTest.groovy | 3 +++ 1 file changed, 3 insertions(+) diff --git a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestratorTest.groovy b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestratorTest.groovy index 7815e0c18..696162b42 100644 --- a/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestratorTest.groovy +++ b/etor/src/test/groovy/gov/hhs/cdc/trustedintermediary/etor/metadata/PartnerMetadataOrchestratorTest.groovy @@ -101,6 +101,9 @@ class PartnerMetadataOrchestratorTest extends Specification { PartnerMetadataOrchestrator.getInstance().updateMetadataForReceivedOrder(receivedSubmissionId, "hash") then: + 1 * mockPartnerMetadataStorage.saveMetadata(_ as PartnerMetadata) >> { PartnerMetadata metadata -> + assert metadata.receivedSubmissionId() == receivedSubmissionId + } thrown(PartnerMetadataException) }