Skip to content
Snippets Groups Projects
Commit 6617fc9e authored by Klaus Fischer's avatar Klaus Fischer
Browse files

Added test on preencrypted submissions

parent 781f369f
No related branches found
No related tags found
No related merge requests found
......@@ -31,6 +31,7 @@ public class StraightForwardTest : EndToEndTestBase {
_submission.SubmissionId.Should().NotBeNull();
_submission.AuthenticationTags.Metadata.Should().NotBeNullOrWhiteSpace();
_submission.AuthenticationTags.Data.Should().NotBeNullOrWhiteSpace();
_submission.AuthenticationTags.Attachments.Should().NotBeNullOrEmpty();
_submission.AuthenticationTags.Attachments!.All(item =>
!(string.IsNullOrWhiteSpace(item.Value) || string.IsNullOrWhiteSpace(item.Key)))
.Should().BeTrue();
......
......@@ -65,6 +65,7 @@ public class StraightPreEncryptedForwardTest : EndToEndTestBase {
_submission.CaseId.Should().NotBeNullOrWhiteSpace();
_submission.SubmissionId.Should().NotBeNullOrWhiteSpace();
_submission.AuthenticationTags.Attachments.Should().NotBeNullOrEmpty();
_submission.AuthenticationTags.Attachments!.All(item =>
!(string.IsNullOrWhiteSpace(item.Key) || string.IsNullOrWhiteSpace(item.Value)))
.Should().BeTrue();
......
......@@ -192,7 +192,7 @@ public abstract class FitConnectClient {
/// </summary>
/// <param name="publicKey">Public key for encryption</param>
/// <param name="attachments">List of attachments to encrypt</param>
/// <returns></returns>
/// <returns>List with ID and authentication tag</returns>
public Dictionary<string, string> Encrypt(string publicKey,
IEnumerable<Attachment> attachments) {
return attachments.Select(a => Encrypt(publicKey, a))
......
......@@ -5,6 +5,24 @@ using FitConnect.Models.Api.Metadata;
namespace FitConnect.Models;
public class Attachment {
/// <summary>
/// Private on purpose.
/// Make sure to set necessary properties per hand!
/// </summary>
/// <param name="id"></param>
private Attachment(string id) {
Id = id;
MimeType = System.Net.Mime.MediaTypeNames.Application.Octet;
}
internal static Attachment FromPreEncryptedAttachment(string id, string attachmentAuthentication) {
return new Attachment(id) {
AttachmentAuthentication = attachmentAuthentication,
};
}
public Attachment(string id, Api.Metadata.Attachment metadata, byte[] content,
string attachmentAuthentication) {
Id = id;
......
......@@ -75,8 +75,9 @@ public class Sender : FitConnectClient, ISender {
var encryptedAttachments = Encrypt(PublicKey!, sendable.Attachments);
await UploadAttachmentsAsync(sendable.Id!, encryptedAttachments);
foreach (var (key, value) in encryptedAttachments) {
var item = submission.Attachments!.Single(i => i.Id == key);
var item = submission.Attachments!.Single(attachment => attachment.Id == key);
item.AttachmentAuthentication = value.Split('.').Last();
}
......@@ -100,7 +101,6 @@ public class Sender : FitConnectClient, ISender {
sendable.EncryptedMetadata = submission.Metadata;
var announcedSubmission = (CreateSubmissionDto)sendable;
announcedSubmission.AnnouncedAttachments = submission.Attachments?.Keys.ToList();
var created =
......@@ -114,6 +114,14 @@ public class Sender : FitConnectClient, ISender {
Logger?.LogInformation("Uploading pre encrypted attachments");
await UploadAttachmentsAsync(sendable.Id!, submission.Attachments!);
if (submission.Attachments != null) {
sendable.Attachments ??= new List<Attachment>();
foreach (var (key, value) in submission.Attachments) {
sendable.Attachments.Add(
Attachment.FromPreEncryptedAttachment(key, value.Split('.').Last()));
}
}
return (SentSubmission)(await Submit(sendable));
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment