comparison 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
comparison
equal deleted inserted replaced
4437:d9473bd5ed43 4438:4a4e33c9082d
26 #endif 26 #endif
27 27
28 #include <gtest/gtest.h> 28 #include <gtest/gtest.h>
29 29
30 #include "../../OrthancFramework/Sources/Compatibility.h" 30 #include "../../OrthancFramework/Sources/Compatibility.h"
31 #include "../../OrthancFramework/Sources/DicomNetworking/DicomAssociationParameters.h"
31 #include "../../OrthancFramework/Sources/DicomNetworking/RemoteModalityParameters.h" 32 #include "../../OrthancFramework/Sources/DicomNetworking/RemoteModalityParameters.h"
32 #include "../../OrthancFramework/Sources/DicomParsing/DicomModification.h" 33 #include "../../OrthancFramework/Sources/DicomParsing/DicomModification.h"
33 #include "../../OrthancFramework/Sources/DicomParsing/ParsedDicomFile.h" 34 #include "../../OrthancFramework/Sources/DicomParsing/ParsedDicomFile.h"
34 #include "../../OrthancFramework/Sources/JobsEngine/GenericJobUnserializer.h" 35 #include "../../OrthancFramework/Sources/JobsEngine/GenericJobUnserializer.h"
35 #include "../../OrthancFramework/Sources/JobsEngine/JobsEngine.h" 36 #include "../../OrthancFramework/Sources/JobsEngine/JobsEngine.h"
1267 { 1268 {
1268 RemoteModalityParameters modality; 1269 RemoteModalityParameters modality;
1269 ASSERT_FALSE(modality.IsAdvancedFormatNeeded()); 1270 ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
1270 modality.Serialize(s, false); 1271 modality.Serialize(s, false);
1271 ASSERT_EQ(Json::arrayValue, s.type()); 1272 ASSERT_EQ(Json::arrayValue, s.type());
1273 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1272 } 1274 }
1273 1275
1274 { 1276 {
1275 RemoteModalityParameters modality(s); 1277 RemoteModalityParameters modality(s);
1276 ASSERT_EQ("ORTHANC", modality.GetApplicationEntityTitle()); 1278 ASSERT_EQ("ORTHANC", modality.GetApplicationEntityTitle());
1283 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); 1285 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store));
1284 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); 1286 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move));
1285 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1287 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1286 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1288 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1287 ASSERT_TRUE(modality.IsTranscodingAllowed()); 1289 ASSERT_TRUE(modality.IsTranscodingAllowed());
1290 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1288 } 1291 }
1289 1292
1290 s = Json::nullValue; 1293 s = Json::nullValue;
1291 1294
1292 { 1295 {
1293 RemoteModalityParameters modality; 1296 RemoteModalityParameters modality;
1294 ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
1295 ASSERT_THROW(modality.SetPortNumber(0), OrthancException); 1297 ASSERT_THROW(modality.SetPortNumber(0), OrthancException);
1296 ASSERT_THROW(modality.SetPortNumber(65535), OrthancException); 1298 ASSERT_THROW(modality.SetPortNumber(65535), OrthancException);
1297 modality.SetApplicationEntityTitle("HELLO"); 1299 modality.SetApplicationEntityTitle("HELLO");
1298 modality.SetHost("world"); 1300 modality.SetHost("world");
1299 modality.SetPortNumber(45); 1301 modality.SetPortNumber(45);
1300 modality.SetManufacturer(ModalityManufacturer_GenericNoWildcardInDates); 1302 modality.SetManufacturer(ModalityManufacturer_GenericNoWildcardInDates);
1303 ASSERT_FALSE(modality.IsAdvancedFormatNeeded());
1301 modality.Serialize(s, true); 1304 modality.Serialize(s, true);
1302 ASSERT_EQ(Json::objectValue, s.type()); 1305 ASSERT_EQ(Json::objectValue, s.type());
1303 } 1306 }
1304 1307
1305 { 1308 {
1314 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store)); 1317 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Store));
1315 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move)); 1318 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_Move));
1316 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1319 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1317 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1320 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1318 ASSERT_TRUE(modality.IsTranscodingAllowed()); 1321 ASSERT_TRUE(modality.IsTranscodingAllowed());
1322 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1319 } 1323 }
1320 1324
1321 s["Port"] = "46"; 1325 s["Port"] = "46";
1322 1326
1323 { 1327 {
1381 ASSERT_EQ("host", modality.GetHost()); 1385 ASSERT_EQ("host", modality.GetHost());
1382 ASSERT_EQ(104u, modality.GetPortNumber()); 1386 ASSERT_EQ(104u, modality.GetPortNumber());
1383 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1387 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
1384 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1388 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1385 ASSERT_TRUE(modality.IsTranscodingAllowed()); 1389 ASSERT_TRUE(modality.IsTranscodingAllowed());
1390 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1386 } 1391 }
1387 1392
1388 { 1393 {
1389 Json::Value t; 1394 Json::Value t;
1390 t["AllowNAction"] = false; 1395 t["AllowNAction"] = false;
1391 t["AllowNEventReport"] = true; 1396 t["AllowNEventReport"] = true;
1392 t["AET"] = "AET"; 1397 t["AET"] = "AET";
1393 t["Host"] = "host"; 1398 t["Host"] = "host";
1394 t["Port"] = "104"; 1399 t["Port"] = "104";
1395 t["AllowTranscoding"] = false; 1400 t["AllowTranscoding"] = false;
1401 t["UseDicomTls"] = true;
1396 1402
1397 RemoteModalityParameters modality(t); 1403 RemoteModalityParameters modality(t);
1398 ASSERT_TRUE(modality.IsAdvancedFormatNeeded()); 1404 ASSERT_TRUE(modality.IsAdvancedFormatNeeded());
1399 ASSERT_EQ("AET", modality.GetApplicationEntityTitle()); 1405 ASSERT_EQ("AET", modality.GetApplicationEntityTitle());
1400 ASSERT_EQ("host", modality.GetHost()); 1406 ASSERT_EQ("host", modality.GetHost());
1401 ASSERT_EQ(104u, modality.GetPortNumber()); 1407 ASSERT_EQ(104u, modality.GetPortNumber());
1402 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1408 ASSERT_FALSE(modality.IsRequestAllowed(DicomRequestType_NAction));
1403 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1409 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1404 ASSERT_FALSE(modality.IsTranscodingAllowed()); 1410 ASSERT_FALSE(modality.IsTranscodingAllowed());
1411 ASSERT_TRUE(modality.IsDicomTlsEnabled());
1405 } 1412 }
1406 1413
1407 { 1414 {
1408 Json::Value t; 1415 Json::Value t;
1409 t["AllowNAction"] = true; 1416 t["AllowNAction"] = true;
1418 ASSERT_EQ("host", modality.GetHost()); 1425 ASSERT_EQ("host", modality.GetHost());
1419 ASSERT_EQ(104u, modality.GetPortNumber()); 1426 ASSERT_EQ(104u, modality.GetPortNumber());
1420 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction)); 1427 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NAction));
1421 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport)); 1428 ASSERT_TRUE(modality.IsRequestAllowed(DicomRequestType_NEventReport));
1422 ASSERT_TRUE(modality.IsTranscodingAllowed()); 1429 ASSERT_TRUE(modality.IsTranscodingAllowed());
1423 } 1430 ASSERT_FALSE(modality.IsDicomTlsEnabled());
1424 } 1431 }
1432 }
1433
1434
1435
1436 TEST(JobsSerialization, DicomAssociationParameters)
1437 {
1438 {
1439 DicomAssociationParameters a;
1440
1441 Json::Value v = Json::objectValue;
1442 a.SerializeJob(v);
1443 ASSERT_EQ(Json::objectValue, v.type());
1444 ASSERT_EQ("ORTHANC", v["LocalAet"].asString());
1445 ASSERT_EQ(DicomAssociationParameters::GetDefaultTimeout(), v["Timeout"].asInt());
1446 ASSERT_TRUE(v.isMember("Remote"));
1447
1448 ASSERT_EQ(3u, v.getMemberNames().size());
1449
1450 DicomAssociationParameters b;
1451 b.UnserializeJob(v);
1452 ASSERT_EQ("ANY-SCP", b.GetRemoteModality().GetApplicationEntityTitle());
1453 ASSERT_EQ("127.0.0.1", b.GetRemoteModality().GetHost());
1454 ASSERT_EQ(104u, b.GetRemoteModality().GetPortNumber());
1455 ASSERT_EQ("ORTHANC", b.GetLocalApplicationEntityTitle());
1456 ASSERT_FALSE(b.GetRemoteModality().IsDicomTlsEnabled());
1457 }
1458
1459 {
1460 RemoteModalityParameters p;
1461 p.SetApplicationEntityTitle("WORLD");
1462 p.SetPortNumber(4242);
1463 p.SetHost("hello.world.com");
1464 p.SetDicomTlsEnabled(true);
1465
1466 DicomAssociationParameters a("HELLO", p);
1467 a.SetOwnCertificatePath("key", "crt");
1468 a.SetTrustedCertificatesPath("trusted");
1469
1470 Json::Value v = Json::objectValue;
1471 a.SerializeJob(v);
1472
1473 ASSERT_EQ(6u, v.getMemberNames().size());
1474
1475 DicomAssociationParameters b = DicomAssociationParameters::UnserializeJob(v);
1476
1477 ASSERT_EQ("WORLD", b.GetRemoteModality().GetApplicationEntityTitle());
1478 ASSERT_EQ("hello.world.com", b.GetRemoteModality().GetHost());
1479 ASSERT_EQ(4242u, b.GetRemoteModality().GetPortNumber());
1480 ASSERT_EQ("HELLO", b.GetLocalApplicationEntityTitle());
1481 ASSERT_TRUE(b.GetRemoteModality().IsDicomTlsEnabled());
1482 ASSERT_EQ("key", b.GetOwnPrivateKeyPath());
1483 ASSERT_EQ("crt", b.GetOwnCertificatePath());
1484 ASSERT_EQ("trusted", b.GetTrustedCertificatesPath());
1485 }
1486 }