diff --git a/.github/workflows/node-tests.yml b/.github/workflows/node-tests.yml new file mode 100644 index 000000000..6b2c14f10 --- /dev/null +++ b/.github/workflows/node-tests.yml @@ -0,0 +1,45 @@ +name: gpii-windows node tests + +on: [push, pull_request] + +jobs: + build: + runs-on: windows-latest + env: + VCTargetsPath: 'C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140' + steps: + - uses: javihernandez/setup-node-nvm@input-arch-field + with: + node-version: "10.11.0" + node-arch: "32" + node-mirror: "https://nodejs.org/download/release/" + + - uses: actions/checkout@v2 + - run: ./provisioning/CouchDB.ps1 + - uses: actions/setup-python@v2 + with: + python-version: '2.7.17' + + - name: Install vcbuildtools + run: choco install vcbuildtools -ia '/InstallSelectableItems VisualCppBuildTools_ATLMFC_SDK;VisualCppBuildTools_NETFX_SDK' -y + - name: Install Windows 10 SDK + run: choco install windows-sdk-10-version-1809-all --version=10.0.17763.1 -y + - name: Install MS Build Tools + run: choco install microsoft-build-tools -y + - name: Install VisualCppBuildTools + run: choco install visualcppbuildtools -y + - run: npm config set msvs_version 2015 --global + - run: npm config set python python2.7 + + - run: npm install + + - name: Pass linter + run: npx grunt lint + + - name: Run node unit tests + run: node tests/UnitTests.js + + - name: Run Acceptance builtIn tests + env: + GPII_TEST_COUCH_USE_EXTERNAL: 1 + run: node tests/AcceptanceTests.js builtIn diff --git a/gpii/node_modules/gpii-localisation/test/testLanguage.js b/gpii/node_modules/gpii-localisation/test/testLanguage.js index 1b060b4f3..3fb8035e0 100644 --- a/gpii/node_modules/gpii-localisation/test/testLanguage.js +++ b/gpii/node_modules/gpii-localisation/test/testLanguage.js @@ -19,9 +19,15 @@ "use strict"; var fluid = require("gpii-universal"); +var os = require("os"); + var jqUnit = fluid.require("node-jqunit"); var gpii = fluid.registerNamespace("gpii"); +// Windows Server 2019 is based on Windows 10 1809, this is 10.0.17763 +// Information on Windows versions: https://en.wikipedia.org/wiki/Windows_10_version_history +var isWindowsServer2019 = (os.release() === "10.0.17763") ? true : false; + require("../src/language.js"); fluid.registerNamespace("gpii.tests.windows.language"); @@ -177,7 +183,7 @@ gpii.tests.windows.language.nameTests = fluid.freezeRecursive([ "bg-GB": { "english": "Bulgarian (bg-GB)", "local": "Bulgarian (bg-GB)", - "native": "български (bg-GB)", + "native": isWindowsServer2019 ? "" : "български (bg-GB)", "code": "bg-GB" }, "ta-LK": { @@ -195,7 +201,7 @@ gpii.tests.windows.language.nameTests = fluid.freezeRecursive([ "en-xyz": { "english": "English (en-xyz)", "local": "English (en-xyz)", - "native": "English (en-xyz)", + "native": isWindowsServer2019 ? "" : "English (en-xyz)", "code": "en-xyz" } } diff --git a/gpii/node_modules/nativeSettingsHandler/test/testNativeSettingsHandler.js b/gpii/node_modules/nativeSettingsHandler/test/testNativeSettingsHandler.js index 36af598af..e06f1170c 100644 --- a/gpii/node_modules/nativeSettingsHandler/test/testNativeSettingsHandler.js +++ b/gpii/node_modules/nativeSettingsHandler/test/testNativeSettingsHandler.js @@ -453,18 +453,22 @@ gpii.tests.windows.nativeSettingsHandler.volumeApiTest = { } }; -jqUnit.test("Testing nativeSettingsHandler volume API (get and set functions)", function () { - jqUnit.expect(2); - - // Set to initial values: - gpii.windows.nativeSettingsHandler.setImpl(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.init); - // First we test the get functionality - var result = gpii.windows.nativeSettingsHandler.get(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.get.payload); - // Check results - jqUnit.assertDeepEq("Checking return payload of get", gpii.tests.windows.nativeSettingsHandler.volumeApiTest.get.expectedResult, gpii.resolveSync(result)); - - // Test set functionality - var result2 = gpii.windows.nativeSettingsHandler.set(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.set.payload); - // Check results - jqUnit.assertDeepEq("Checking return payload of set", gpii.tests.windows.nativeSettingsHandler.volumeApiTest.set.expectedResult, gpii.resolveSync(result2)); -}); +// Disabled in CI as in Github-hosted windows server image there's no default audio +// playback device set. Even the Windows Audio services are turned down. +if (!process.env.GITHUB_ACTIONS) { + jqUnit.test("Testing nativeSettingsHandler volume API (get and set functions)", function () { + jqUnit.expect(2); + + // Set to initial values: + gpii.windows.nativeSettingsHandler.setImpl(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.init); + // First we test the get functionality + var result = gpii.windows.nativeSettingsHandler.get(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.get.payload); + // Check results + jqUnit.assertDeepEq("Checking return payload of get", gpii.tests.windows.nativeSettingsHandler.volumeApiTest.get.expectedResult, gpii.resolveSync(result)); + + // Test set functionality + var result2 = gpii.windows.nativeSettingsHandler.set(gpii.tests.windows.nativeSettingsHandler.volumeApiTest.set.payload); + // Check results + jqUnit.assertDeepEq("Checking return payload of set", gpii.tests.windows.nativeSettingsHandler.volumeApiTest.set.expectedResult, gpii.resolveSync(result2)); + }); +} diff --git a/gpii/node_modules/processHandling/test/testProcessHandling.js b/gpii/node_modules/processHandling/test/testProcessHandling.js index d94d88d0b..b77251771 100644 --- a/gpii/node_modules/processHandling/test/testProcessHandling.js +++ b/gpii/node_modules/processHandling/test/testProcessHandling.js @@ -280,8 +280,8 @@ jqUnit.test("Testing getServiceState", function () { var state = gpii.windows.getServiceState("LSM"); jqUnit.assertEquals("LSM service should be running", "running", state); - // There's a chance it might be running, but who sends faxes anymore? - state = gpii.windows.getServiceState("Fax"); + // Low chances that the Phone Service is Running + state = gpii.windows.getServiceState("PhoneSvc"); jqUnit.assertEquals("Fax service should be stopped", "stopped", state); state = gpii.windows.getServiceState("gpii-unknown"); diff --git a/package.json b/package.json index b7c01df3d..791163492 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "dependencies": { "edge-js": "10.3.1", "ffi-napi": "2.4.3", - "gpii-universal": "0.3.0-dev.20200604T131823Z.d6fed9a", + "gpii-universal": "0.3.0-dev.20201123T115346Z.7518d0e4f", "@pokusew/pcsclite": "0.4.18", "ref": "1.3.4", "ref-struct": "1.1.0", diff --git a/provisioning/CouchDB.ps1 b/provisioning/CouchDB.ps1 index 51fa14709..6e58461ee 100644 --- a/provisioning/CouchDB.ps1 +++ b/provisioning/CouchDB.ps1 @@ -49,6 +49,10 @@ Function iwr-Retry { } } +# First, let's allow connections to CouchDB ports, 25984 and 25986 +netsh advfirewall firewall add rule name="Open Port 25984" dir=in action=allow protocol=TCP localport=25984 +netsh advfirewall firewall add rule name="Open Port 25986" dir=in action=allow protocol=TCP localport=25986 + Write-Output "Adding CouchDB to the system" $couchDBInstallerURL = "http://archive.apache.org/dist/couchdb/binary/win/2.3.0/couchdb-2.3.0.msi" $couchDBInstaller = Join-Path $originalBuildScriptPath "couchdb-2.3.0.msi" @@ -72,6 +76,18 @@ try { exit 1 } +# Replace the default listening ports +# By default, CouchDB will be installed at C:\CouchDB. +# Port 5986 is already taken by WinRM +Write-Output "Changing default listening ports to 25984 and 25986 ..." +$couchDBConfigFile = Join-Path (Join-Path "C:\CouchDB" "etc") "default.ini" +((Get-Content -path $couchDBConfigFile -Raw) -replace "5984","25984") | Set-Content -Path $couchDBConfigFile +((Get-Content -path $couchDBConfigFile -Raw) -replace "5986","25986") | Set-Content -Path $couchDBConfigFile + +# In addition to that, we must restart CouchDB in order for the changes to take effect +Write-Output "Restarting CouchDB ..." +Restart-Service -Name "Apache CouchDB" + # Set-up CouchDB to run as a single node server as described # here: https://docs.couchdb.org/en/stable/setup/single-node.html Write-Output "Configuring CouchDB ..." @@ -79,22 +95,15 @@ try { # Let's retry the first request until CouchDB is ready. # When the maximum retries is reached, the error is propagated. # - $r1 = iwr-Retry -Method PUT -Uri http://127.0.0.1:5984/_users - $r2 = iwr -Method PUT -Uri http://127.0.0.1:5984/_replicator - $r3 = iwr -Method PUT -Uri http://127.0.0.1:5984/_global_changes + $r1 = iwr-Retry -Method PUT -Uri http://127.0.0.1:25984/_users + $r2 = iwr -Method PUT -Uri http://127.0.0.1:25984/_replicator + $r3 = iwr -Method PUT -Uri http://127.0.0.1:25984/_global_changes } catch { Write-Error "ERROR: CouchDB couldn't be configured. Error was $_" exit 1 } -# Replace the default listening port -# By default, CouchDB will be installed at C:\CouchDB. -Write-Output "Changing default listening port to 25984 ..." -$couchDBConfigFile = Join-Path (Join-Path "C:\CouchDB" "etc") "default.ini" -((Get-Content -path $couchDBConfigFile -Raw) -replace "5984","25984") | Set-Content -Path $couchDBConfigFile - -# In addition to that, we must restart CouchDB in order for the changes to take effect -Write-Output "Restarting CouchDB ..." +Write-Output "Restarting CouchDB again after been configured as a single node ..." Restart-Service -Name "Apache CouchDB" Write-Output "CouchDB is now installed and configured"