Mercurial > hg > orthanc
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 } |