12
12
SECRET_RESULTS_SHEET_ID : ${{ secrets.RESULTS_SHEET_ID }}
13
13
jobs :
14
14
build_and_test :
15
- name : ' ${{ matrix.os }}: build and test (install mdns: ${{ matrix.install_mdns }}, use conan: ${{ matrix.use_conan }}, force cpprest asio: ${{ matrix.force_cpprest_asio }}, dns-sd mode: ${{ matrix.dns_sd_mode}})'
15
+ name : ' ${{ matrix.os }}: build and test (install mdns: ${{ matrix.install_mdns }}, use conan: ${{ matrix.use_conan }}, force cpprest asio: ${{ matrix.force_cpprest_asio }}, dns-sd mode: ${{ matrix.dns_sd_mode}}, enable_authorization: ${{ matrix.enable_authorization }} )'
16
16
runs-on : ${{ matrix.os }}
17
17
strategy :
18
18
fail-fast : false
22
22
use_conan : [true]
23
23
force_cpprest_asio : [false]
24
24
dns_sd_mode : [multicast, unicast]
25
+ enable_authorization : [false, true]
25
26
exclude :
26
27
# install_mdns is only meaningful on Linux
28
+ - os : macos-11
29
+ enable_authorization : false
30
+ - os : windows-2019
31
+ enable_authorization : false
32
+ - os : ubuntu-20.04
33
+ enable_authorization : false
27
34
- os : macos-11
28
35
install_mdns : true
29
36
- os : windows-2019
@@ -38,34 +45,55 @@ jobs:
38
45
- os : ubuntu-20.04
39
46
install_mdns : true
40
47
dns_sd_mode : unicast
48
+ enable_authorization : true
41
49
include :
42
50
- os : windows-2022
43
51
install_mdns : false
44
52
use_conan : true
45
53
force_cpprest_asio : true
46
54
dns_sd_mode : multicast
55
+ enable_authorization : true
56
+ - os : windows-2022
57
+ install_mdns : false
58
+ use_conan : true
59
+ force_cpprest_asio : true
60
+ dns_sd_mode : multicast
61
+ enable_authorization : false
47
62
- os : ubuntu-22.04
48
63
install_mdns : false
49
64
use_conan : true
50
65
force_cpprest_asio : false
51
66
dns_sd_mode : multicast
67
+ enable_authorization : true
68
+ - os : ubuntu-22.04
69
+ install_mdns : false
70
+ use_conan : true
71
+ force_cpprest_asio : false
72
+ dns_sd_mode : multicast
73
+ enable_authorization : false
52
74
53
75
steps :
54
76
- uses : actions/checkout@v3
55
77
56
78
- name : set environment variables
57
79
shell : bash
58
80
run : |
81
+ if [[ "${{ matrix.enable_authorization }}" == "true" ]]; then
82
+ authorization_mode=auth
83
+ else
84
+ authorization_mode=noauth
85
+ fi
86
+
59
87
if [[ "${{ runner.os }}" == "Linux" ]]; then
60
88
if [[ "${{ matrix.install_mdns }}" == "true" ]]; then
61
- echo "BUILD_NAME=${{ matrix.os }}_mdns_${{ matrix.dns_sd_mode }}" >> $GITHUB_ENV
89
+ echo "BUILD_NAME=${{ matrix.os }}_mdns_${{ matrix.dns_sd_mode }}_$authorization_mode " >> $GITHUB_ENV
62
90
else
63
- echo "BUILD_NAME=${{ matrix.os }}_avahi_${{ matrix.dns_sd_mode }}" >> $GITHUB_ENV
91
+ echo "BUILD_NAME=${{ matrix.os }}_avahi_${{ matrix.dns_sd_mode }}_$authorization_mode " >> $GITHUB_ENV
64
92
fi
65
93
elif [[ "${{ matrix.force_cpprest_asio }}" == "true" ]]; then
66
- echo "BUILD_NAME=${{ matrix.os }}_asio " >> $GITHUB_ENV
94
+ echo "BUILD_NAME=${{ matrix.os }}_asio_$authorization_mode " >> $GITHUB_ENV
67
95
else
68
- echo "BUILD_NAME=${{ matrix.os }}" >> $GITHUB_ENV
96
+ echo "BUILD_NAME=${{ matrix.os }}_auth_$authorization_mode " >> $GITHUB_ENV
69
97
fi
70
98
GITHUB_COMMIT=`echo "${{ github.sha }}" | cut -c1-7`
71
99
echo "GITHUB_COMMIT=$GITHUB_COMMIT" >> $GITHUB_ENV
@@ -344,10 +372,23 @@ jobs:
344
372
git clone https://github.com/AMWA-TV/nmos-testing.git
345
373
cd nmos-testing
346
374
347
- # Configure the Testing Tool so all APIs are tested with TLS
348
- printf "from . import Config as CONFIG\nCONFIG.ENABLE_HTTPS = True\n" > nmostesting/UserConfig.py
375
+ # Configure the Testing Tool so all APIs are tested with TLS and authorization
376
+ printf "from . import Config as CONFIG\nCONFIG.ENABLE_HTTPS = True\nCONFIG.MOCK_SERVICES_WARM_UP_DELAY = 30\nCONFIG.HTTP_TIMEOUT = 2\ n" > nmostesting/UserConfig.py
349
377
# Set the DNS-SD mode
350
378
printf 'CONFIG.DNS_SD_MODE = "'${{ matrix.dns_sd_mode }}'"\n' >> nmostesting/UserConfig.py
379
+ # Set the client JWKS_URI for mock Authorization Server to obtain the client JSON Web Key Set (public keys) to verify the client_assertion, when the client is requesting the access token
380
+ if [[ "${{ matrix.dns_sd_mode }}" == "multicast" ]]; then
381
+ hostname=nmos-api.local
382
+ else
383
+ hostname=api.testsuite.nmos.tv
384
+ fi
385
+ printf 'CONFIG.JWKS_URI = "https://'${hostname}':1080/x-authorization/jwks"\n' >> nmostesting/UserConfig.py
386
+
387
+ if [[ "${{matrix.enable_authorization}}" == "true" ]]; then
388
+ printf 'CONFIG.ENABLE_AUTH = True\n' >> nmostesting/UserConfig.py
389
+ else
390
+ printf 'CONFIG.ENABLE_AUTH = False\n' >> nmostesting/UserConfig.py
391
+ fi
351
392
352
393
# Download testssl
353
394
cd testssl
@@ -386,20 +427,21 @@ jobs:
386
427
pip install -r utilities/run-test-suites/gsheetsImport/requirements.txt
387
428
388
429
if [[ "${{ runner.os }}" == "Windows" ]]; then
389
- certutil -enterprise -addstore -user root test_data\\BCP00301\\ca\\certs\\ca.cert.pem
390
- certutil -enterprise -addstore -user ca test_data\\BCP00301\\ca\\intermediate\\certs\\intermediate.cert.pem
391
- certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\ecdsa.api.testsuite.nmos.tv.cert.chain.pfx
392
- certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\rsa.api.testsuite.nmos.tv.cert.chain.pfx
393
-
394
- # RSA
395
- netsh http add sslcert ipport=0.0.0.0:1080 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
396
- # ECDSA
397
- # netsh http add sslcert ipport=0.0.0.0:1080 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
398
-
399
- # RSA
400
- netsh http add sslcert ipport=0.0.0.0:8088 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
401
- # ECDSA
402
- # netsh http add sslcert ipport=0.0.0.0:8088 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
430
+ # install certificates
431
+ certutil -enterprise -addstore -user root test_data\\BCP00301\\ca\\certs\\ca.cert.pem
432
+ certutil -enterprise -addstore -user ca test_data\\BCP00301\\ca\\intermediate\\certs\\intermediate.cert.pem
433
+ certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\ecdsa.api.testsuite.nmos.tv.cert.chain.pfx
434
+ certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\rsa.api.testsuite.nmos.tv.cert.chain.pfx
435
+
436
+ # RSA
437
+ netsh http add sslcert ipport=0.0.0.0:1080 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
438
+ # ECDSA
439
+ # netsh http add sslcert ipport=0.0.0.0:1080 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
440
+
441
+ # RSA
442
+ netsh http add sslcert ipport=0.0.0.0:8088 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
443
+ # ECDSA
444
+ # netsh http add sslcert ipport=0.0.0.0:8088 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
403
445
fi
404
446
405
447
if [[ "${{ runner.os }}" == "macOS" ]]; then
@@ -534,7 +576,7 @@ jobs:
534
576
535
577
536
578
build_and_test_ubuntu_14 :
537
- name : ' ${{ matrix.os }}: build and test (install mdns: ${{ matrix.install_mdns }}, use conan: ${{ matrix.use_conan }}, force cpprest asio: ${{ matrix.force_cpprest_asio }}, dns-sd mode: ${{ matrix.dns_sd_mode}})'
579
+ name : ' ${{ matrix.os }}: build and test (install mdns: ${{ matrix.install_mdns }}, use conan: ${{ matrix.use_conan }}, force cpprest asio: ${{ matrix.force_cpprest_asio }}, dns-sd mode: ${{ matrix.dns_sd_mode}}, enable_authorization: ${{ matrix.enable_authorization }} )'
538
580
runs-on : ubuntu-20.04
539
581
container :
540
582
image : ubuntu:14.04
@@ -546,6 +588,7 @@ jobs:
546
588
use_conan : [false]
547
589
force_cpprest_asio : [false]
548
590
dns_sd_mode : [multicast]
591
+ enable_authorization : [true]
549
592
550
593
steps :
551
594
- uses : actions/checkout@v3
@@ -865,10 +908,23 @@ jobs:
865
908
git clone https://github.com/AMWA-TV/nmos-testing.git
866
909
cd nmos-testing
867
910
868
- # Configure the Testing Tool so all APIs are tested with TLS
869
- printf "from . import Config as CONFIG\nCONFIG.ENABLE_HTTPS = True\n" > nmostesting/UserConfig.py
911
+ # Configure the Testing Tool so all APIs are tested with TLS and authorization
912
+ printf "from . import Config as CONFIG\nCONFIG.ENABLE_HTTPS = True\nCONFIG.MOCK_SERVICES_WARM_UP_DELAY = 30\nCONFIG.HTTP_TIMEOUT = 2\ n" > nmostesting/UserConfig.py
870
913
# Set the DNS-SD mode
871
914
printf 'CONFIG.DNS_SD_MODE = "'${{ matrix.dns_sd_mode }}'"\n' >> nmostesting/UserConfig.py
915
+ # Set the client JWKS_URI for mock Authorization Server to obtain the client JSON Web Key Set (public keys) to verify the client_assertion, when the client is requesting the access token
916
+ if [[ "${{ matrix.dns_sd_mode }}" == "multicast" ]]; then
917
+ hostname=nmos-api.local
918
+ else
919
+ hostname=api.testsuite.nmos.tv
920
+ fi
921
+ printf 'CONFIG.JWKS_URI = "https://'${hostname}':1080/x-authorization/jwks"\n' >> nmostesting/UserConfig.py
922
+
923
+ if [[ "${{matrix.enable_authorization}}" == "true" ]]; then
924
+ printf 'CONFIG.ENABLE_AUTH = True\n' >> nmostesting/UserConfig.py
925
+ else
926
+ printf 'CONFIG.ENABLE_AUTH = False\n' >> nmostesting/UserConfig.py
927
+ fi
872
928
873
929
# Download testssl
874
930
cd testssl
@@ -907,20 +963,21 @@ jobs:
907
963
pip install -r utilities/run-test-suites/gsheetsImport/requirements.txt
908
964
909
965
if [[ "${{ runner.os }}" == "Windows" ]]; then
910
- certutil -enterprise -addstore -user root test_data\\BCP00301\\ca\\certs\\ca.cert.pem
911
- certutil -enterprise -addstore -user ca test_data\\BCP00301\\ca\\intermediate\\certs\\intermediate.cert.pem
912
- certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\ecdsa.api.testsuite.nmos.tv.cert.chain.pfx
913
- certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\rsa.api.testsuite.nmos.tv.cert.chain.pfx
914
-
915
- # RSA
916
- netsh http add sslcert ipport=0.0.0.0:1080 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
917
- # ECDSA
918
- # netsh http add sslcert ipport=0.0.0.0:1080 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
919
-
920
- # RSA
921
- netsh http add sslcert ipport=0.0.0.0:8088 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
922
- # ECDSA
923
- # netsh http add sslcert ipport=0.0.0.0:8088 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
966
+ # install certificates
967
+ certutil -enterprise -addstore -user root test_data\\BCP00301\\ca\\certs\\ca.cert.pem
968
+ certutil -enterprise -addstore -user ca test_data\\BCP00301\\ca\\intermediate\\certs\\intermediate.cert.pem
969
+ certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\ecdsa.api.testsuite.nmos.tv.cert.chain.pfx
970
+ certutil -importpfx -enterprise test_data\\BCP00301\\ca\\intermediate\\certs\\rsa.api.testsuite.nmos.tv.cert.chain.pfx
971
+
972
+ # RSA
973
+ netsh http add sslcert ipport=0.0.0.0:1080 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
974
+ # ECDSA
975
+ # netsh http add sslcert ipport=0.0.0.0:1080 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
976
+
977
+ # RSA
978
+ netsh http add sslcert ipport=0.0.0.0:8088 certhash=021d50df2177c07095485184206ee2297e50b65c appid="{00000000-0000-0000-0000-000000000000}"
979
+ # ECDSA
980
+ # netsh http add sslcert ipport=0.0.0.0:8088 certhash=875eca592c49120254b32bb8bed90ac3679015a5 appid="{00000000-0000-0000-0000-000000000000}"
924
981
fi
925
982
926
983
if [[ "${{ runner.os }}" == "macOS" ]]; then
0 commit comments