From df72f0f42a10e0d2e202dbf28cb8853927bbcea3 Mon Sep 17 00:00:00 2001
From: Klaus Fischer <klaus.fischer@eloware.com>
Date: Tue, 18 Apr 2023 15:09:48 +0200
Subject: [PATCH] Wrapped GetStatusForSubmission in specific client calls

---
 FitConnect/FitConnectClient.cs                | 24 +++++++------------
 FitConnect/Sender.cs                          | 11 +++++++--
 FitConnect/Subscriber.cs                      | 13 +++++++---
 Tests/E2ETest/StraightForwardTest.cs          |  2 +-
 .../StraightPreEncryptedForwardTest.cs        |  2 +-
 5 files changed, 29 insertions(+), 23 deletions(-)

diff --git a/FitConnect/FitConnectClient.cs b/FitConnect/FitConnectClient.cs
index 05580fd7..57c02848 100644
--- a/FitConnect/FitConnectClient.cs
+++ b/FitConnect/FitConnectClient.cs
@@ -190,24 +190,16 @@ public abstract class FitConnectClient {
     /// <returns></returns>
     protected virtual async Task<SubmissionStatus> GetStatusForSubmissionAsync(
         SentSubmission submission, bool withAuthenticationTags) {
-        try {
-            var eventLog = await GetEventLogAsync(submission.CaseId, submission.DestinationId,
-                !withAuthenticationTags);
+        var eventLog = await GetEventLogAsync(submission.CaseId, submission.DestinationId,
+            !withAuthenticationTags);
 
-            var status = eventLog
-                .Where(e => e.SubmissionId == submission.SubmissionId)
-                .Select(e => CreateSubmissionStatusFromSet(submission, e, withAuthenticationTags))
-                .OrderBy(e => (int)e.SubmissionState)
-                .Last();
+        var status = eventLog
+            .Where(e => e.SubmissionId == submission.SubmissionId)
+            .Select(e => CreateSubmissionStatusFromSet(submission, e, withAuthenticationTags))
+            .OrderBy(e => (int)e.SubmissionState)
+            .Last();
 
-            return status;
-        }
-        catch (Exception e) {
-            Logger?.LogError(e, "Error while retrieving status for submission");
-            throw new FitConnectException("Error while retrieving status for submission",
-                FitConnectException.ErrorTypeEnum.SubmissionStatusRetrievalError,
-                e);
-        }
+        return status;
     }
 
     private static SubmissionStatus CreateSubmissionStatusFromSet(SentSubmission submission,
diff --git a/FitConnect/Sender.cs b/FitConnect/Sender.cs
index 50beeaba..28a87094 100644
--- a/FitConnect/Sender.cs
+++ b/FitConnect/Sender.cs
@@ -53,8 +53,15 @@ public class Sender : FitConnectClient, ISender {
         return publicKey;
     }
 
-    public async Task<SubmissionStatus> GetStatusForSubmissionAsync(SentSubmission submission)
-        => await base.GetStatusForSubmissionAsync(submission, true);
+    public async Task<SubmissionStatus> GetStatusForSubmissionAsync(SentSubmission submission) {
+        try {
+            return await base.GetStatusForSubmissionAsync(submission, true);
+        }
+        catch (Exception e) {
+            Logger?.LogError("Error while getting status for submission");
+            throw new FitConnectSenderException("Error while getting status for submission", e);
+        }
+    }
 
 
     public async Task<SentSubmission> SendAsync(SendableSubmission submission) {
diff --git a/FitConnect/Subscriber.cs b/FitConnect/Subscriber.cs
index 3f89f104..ab12e815 100644
--- a/FitConnect/Subscriber.cs
+++ b/FitConnect/Subscriber.cs
@@ -283,9 +283,16 @@ public class Subscriber : FitConnectClient, IReceivedSubmission,
     }
 
     public async Task<SubmissionStatus> GetStatusForSubmission(Guid destinationId, Guid caseId,
-        Guid submissionId)
-        => await base.GetStatusForSubmissionAsync(
-            new SentSubmission(submissionId, caseId, destinationId, null), false);
+        Guid submissionId) {
+        try {
+            return await base.GetStatusForSubmissionAsync(
+                new SentSubmission(submissionId, caseId, destinationId, null), false);
+        }
+        catch (Exception e) {
+            Logger?.LogError("Error getting status for submission");
+            throw new FitConnectSubscriberException("Error getting status for submission", e);
+        }
+    }
 
     public Submission? Submission { get; private set; }
 
diff --git a/Tests/E2ETest/StraightForwardTest.cs b/Tests/E2ETest/StraightForwardTest.cs
index 122a78e1..1bef9de6 100644
--- a/Tests/E2ETest/StraightForwardTest.cs
+++ b/Tests/E2ETest/StraightForwardTest.cs
@@ -231,7 +231,7 @@ public class StraightForwardTest : EndToEndTestBase {
         var exception = Assert.Throws<AggregateException>(() =>
             Sender.GetStatusForSubmissionAsync(manipulated).Wait());
 
-        exception.InnerExceptions.Any(e => e is FitConnectException).Should().BeTrue();
+        exception.InnerExceptions.Any(e => e is FitConnectSenderException).Should().BeTrue();
     }
 
 
diff --git a/Tests/E2ETest/StraightPreEncryptedForwardTest.cs b/Tests/E2ETest/StraightPreEncryptedForwardTest.cs
index 39917261..e1654a3a 100644
--- a/Tests/E2ETest/StraightPreEncryptedForwardTest.cs
+++ b/Tests/E2ETest/StraightPreEncryptedForwardTest.cs
@@ -168,7 +168,7 @@ public class StraightPreEncryptedForwardTest : EndToEndTestBase {
         var exception = Assert.Throws<AggregateException>(() =>
             Sender.GetStatusForSubmissionAsync(manipulated).Wait());
 
-        (exception!.InnerExceptions.FirstOrDefault(e => e is FitConnectException)!
+        (exception!.InnerExceptions.FirstOrDefault(e => e is FitConnectSenderException)!
             .InnerException is AuthenticationTagException).Should().BeTrue();
     }
 }
-- 
GitLab