diff OrthancFramework/UnitTestsSources/JobsTests.cpp @ 4438:4a4e33c9082d

configuration options for DICOM TLS in Orthanc SCU
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 07 Jan 2021 16:53:35 +0100
parents d9473bd5ed43
children f4dbdb2dcba6
line wrap: on
line diff
--- a/OrthancFramework/UnitTestsSources/JobsTests.cpp	Wed Jan 06 17:27:28 2021 +0100
+++ b/OrthancFramework/UnitTestsSources/JobsTests.cpp	Thu Jan 07 16:53:35 2021 +0100
@@ -28,6 +28,7 @@
 #include <gtest/gtest.h>
 
 #include "../../OrthancFramework/Sources/Compatibility.h"
+#include "../../OrthancFramework/Sources/DicomNetworking/DicomAssociationParameters.h"
 #include "../../OrthancFramework/Sources/DicomNetworking/RemoteModalityParameters.h"
 #include "../../OrthancFramework/Sources/DicomParsing/DicomModification.h"
 #include "../../OrthancFramework/Sources/DicomParsing/ParsedDicomFile.h"
@@ -1269,6 +1270,7 @@
     ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
     modality.Serialize(s, false);
     ASSERT_EQ(Json::arrayValue, s.type());
+    ASSERT_FALSE(modality.IsDicomTlsEnabled());
   }
 
   {
@@ -1285,19 +1287,20 @@
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
     ASSERT_TRUE(modality.IsTranscodingAllowed());
+    ASSERT_FALSE(modality.IsDicomTlsEnabled());
   }
 
   s = Json::nullValue;
 
   {
     RemoteModalityParameters modality;
-    ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
     ASSERT_THROW(modality.SetPortNumber(0), OrthancException);
     ASSERT_THROW(modality.SetPortNumber(65535), OrthancException);
     modality.SetApplicationEntityTitle("HELLO");
     modality.SetHost("world");
     modality.SetPortNumber(45);
     modality.SetManufacturer(ModalityManufacturer_GenericNoWildcardInDates);
+    ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
     modality.Serialize(s, true);
     ASSERT_EQ(Json::objectValue, s.type());
   }
@@ -1316,6 +1319,7 @@
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
     ASSERT_TRUE(modality.IsTranscodingAllowed());
+    ASSERT_FALSE(modality.IsDicomTlsEnabled());
   }
 
   s["Port"] = "46";
@@ -1383,6 +1387,7 @@
     ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
     ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
     ASSERT_TRUE(modality.IsTranscodingAllowed());
+    ASSERT_FALSE(modality.IsDicomTlsEnabled());
   }
 
   {
@@ -1393,6 +1398,7 @@
     t["Host"] = "host";
     t["Port"] = "104";
     t["AllowTranscoding"] = false;
+    t["UseDicomTls"] = true;
     
     RemoteModalityParameters modality(t);
     ASSERT_TRUE(modality.IsAdvancedFormatNeeded());
@@ -1402,6 +1408,7 @@
     ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
     ASSERT_FALSE(modality.IsTranscodingAllowed());
+    ASSERT_TRUE(modality.IsDicomTlsEnabled());
   }
 
   {
@@ -1420,5 +1427,60 @@
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
     ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
     ASSERT_TRUE(modality.IsTranscodingAllowed());
+    ASSERT_FALSE(modality.IsDicomTlsEnabled());
   }
 }
+
+
+
+TEST(JobsSerialization, DicomAssociationParameters)
+{
+  {
+    DicomAssociationParameters a;
+
+    Json::Value v = Json::objectValue;
+    a.SerializeJob(v);
+    ASSERT_EQ(Json::objectValue, v.type());
+    ASSERT_EQ("ORTHANC", v["LocalAet"].asString());
+    ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), v["Timeout"].asInt());
+    ASSERT_TRUE(v.isMember("Remote"));
+
+    ASSERT_EQ(3u, v.getMemberNames().size());
+  
+    DicomAssociationParameters b;
+    b.UnserializeJob(v);
+    ASSERT_EQ("ANY-SCP", b.GetRemoteModality().GetApplicationEntityTitle());
+    ASSERT_EQ("127.0.0.1", b.GetRemoteModality().GetHost());
+    ASSERT_EQ(104u, b.GetRemoteModality().GetPortNumber());
+    ASSERT_EQ("ORTHANC", b.GetLocalApplicationEntityTitle());
+    ASSERT_FALSE(b.GetRemoteModality().IsDicomTlsEnabled());
+  }
+
+  {
+    RemoteModalityParameters p;
+    p.SetApplicationEntityTitle("WORLD");
+    p.SetPortNumber(4242);
+    p.SetHost("hello.world.com");
+    p.SetDicomTlsEnabled(true);
+    
+    DicomAssociationParameters a("HELLO", p);
+    a.SetOwnCertificatePath("key", "crt");
+    a.SetTrustedCertificatesPath("trusted");
+
+    Json::Value v = Json::objectValue;
+    a.SerializeJob(v);
+
+    ASSERT_EQ(6u, v.getMemberNames().size());
+  
+    DicomAssociationParameters b = DicomAssociationParameters::UnserializeJob(v);
+
+    ASSERT_EQ("WORLD", b.GetRemoteModality().GetApplicationEntityTitle());
+    ASSERT_EQ("hello.world.com", b.GetRemoteModality().GetHost());
+    ASSERT_EQ(4242u, b.GetRemoteModality().GetPortNumber());
+    ASSERT_EQ("HELLO", b.GetLocalApplicationEntityTitle());
+    ASSERT_TRUE(b.GetRemoteModality().IsDicomTlsEnabled());
+    ASSERT_EQ("key", b.GetOwnPrivateKeyPath());
+    ASSERT_EQ("crt", b.GetOwnCertificatePath());
+    ASSERT_EQ("trusted", b.GetTrustedCertificatesPath());
+  }  
+}