Skip to content

Commit

Permalink
Merge #72: Add Firefox ESR+Nightly Windows tests
Browse files Browse the repository at this point in the history
e4a02e2 Exports tests: set ErrorActionPreference (Jeremy Rand)
1cef0f6 Fix assert-proxy-log Linux tests (Jeremy Rand)
2c61d98 pkcs11mod: Improve logfile path detection (Jeremy Rand)
c8f713c Add Firefox ESR+Nightly Windows tests (Jeremy Rand)

Pull request description:

  Refs #24

Top commit has no ACKs.

Tree-SHA512: 2e49f94c2a192780cf25b04c3d8e205a103effffddadabfdf17fffb2d706bbe9a64183d73034f93d8bf97508d97230caef13b8d086b1745a4e832593214a6ef7
  • Loading branch information
JeremyRand committed Mar 15, 2022
2 parents b857159 + e4a02e2 commit 29cdad8
Show file tree
Hide file tree
Showing 7 changed files with 207 additions and 6 deletions.
36 changes: 36 additions & 0 deletions .cirrus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,42 @@ task:
depends_on:
- "Compile Go latest linux amd64"

task:
name: "firefox $CI_CHANNEL windows"
compute_engine_instance:
image_project: windows-cloud
image: family/windows-2022
platform: windows
cpu: 1
memory: 2G
choco_script:
- powershell -ExecutionPolicy Unrestricted -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin\\"
install_script:
- SET "PATH=%PATH%;%ALLUSERSPROFILE%\\chocolatey\\bin\\"
- choco install %CI_PACKAGE% --yes --pre
- curl -o pkcs11mod.tar.gz --location https://api.cirrus-ci.com/v1/artifact/build/%CIRRUS_BUILD_ID%/Compile%%%%20Go%%%%20latest%%%%20windows%%%%20%GOARCH%/binaries/dist/pkcs11mod.tar.gz
- tar -xf pkcs11mod.tar.gz
test_script:
- SET PATH=%PATH%;%cd%
- powershell -ExecutionPolicy Unrestricted -File "testdata/ci-firefox-tests.ps1"
matrix:
- env:
GOARCH: "amd64"
CI_CHANNEL: "Nightly"
CI_PACKAGE: "firefox-nightly"
CI_MAIN_MODULE: "C:\\Program Files\\Firefox Nightly\\nssckbi.dll"
CI_BAK_MODULE: "C:\\Program Files\\Firefox Nightly\\nssckbi.orig.dll"
CI_MAIN_EXE: "C:\\Program Files\\Firefox Nightly\\firefox.exe"
- env:
GOARCH: "amd64"
CI_CHANNEL: "ESR"
CI_PACKAGE: "firefoxesr"
CI_MAIN_MODULE: "C:\\Program Files\\Mozilla Firefox\\nssckbi.dll"
CI_BAK_MODULE: "C:\\Program Files\\Mozilla Firefox\\nssckbi.orig.dll"
CI_MAIN_EXE: "C:\\Program Files\\Mozilla Firefox\\firefox.exe"
depends_on:
- "Compile Go latest windows amd64"

task:
name: "gnutls-cli"
container:
Expand Down
11 changes: 7 additions & 4 deletions pkcs11mod.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,14 +39,17 @@ var logfile io.Closer
var backend Backend

func init() {
f, err := os.OpenFile(os.Getenv("HOME")+"/pkcs11mod.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
dir, err := os.UserConfigDir()
if err != nil {
log.Printf("error opening file (will try fallback): %v", err)
f, err = os.OpenFile("./pkcs11mod.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
log.Printf("error reading config dir (will try fallback): %v", err)
dir = "."
}

f, err := os.OpenFile(dir+"/pkcs11mod.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
if err != nil {
log.Printf("error opening file (will try fallback): %v", err)
f, err = os.OpenFile(os.Getenv("APPDATA")+"/pkcs11mod.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
dir = "."
f, err = os.OpenFile(dir+"/pkcs11mod.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0600)
}
if err != nil {
log.Printf("error opening file (will fallback to console logging): %v", err)
Expand Down
5 changes: 3 additions & 2 deletions testdata/assert-proxy-log.bash
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@ then
exit 1
fi

if [[ -e "$HOME/pkcs11mod.log" ]]
if [[ -e "$HOME/.config/pkcs11mod.log" ]] || [[ -e "./pkcs11mod.log" ]]
then
RESULT="present"
else
RESULT="missing"
fi

rm -f "$HOME/pkcs11mod.log"
rm -f "$HOME/.config/pkcs11mod.log"
rm -f "./pkcs11mod.log"

if [[ "$RESULT" != "$DESIRED" ]]
then
Expand Down
28 changes: 28 additions & 0 deletions testdata/assert-proxy-log.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
param (
$desired
)

$ErrorActionPreference = "Stop"

if ( ("$desired" -ne "present" ) -and ( "$desired" -ne "missing" ) ) {
Write-Host "Invalid DESIRED value; should be present or missing"
exit 1
}

if ( ( Test-Path -Path "$Env:APPDATA/pkcs11mod.log" ) -Or ( Test-Path -Path "./pkcs11mod.log" ) ) {
$result="present"
}
else {
$result="missing"
}

Remove-Item -Force -ErrorAction SilentlyContinue "$Env:APPDATA/pkcs11mod.log"
Remove-Item -Force -ErrorAction SilentlyContinue "./pkcs11mod.log"

if ( "$result" -ne "$desired" ) {
Write-Host "Log test failed"
Write-Host "Got $result, wanted $desired"
exit 1
}

exit 0
2 changes: 2 additions & 0 deletions testdata/ci-exports-tests.ps1
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
$ErrorActionPreference = "Stop"

Write-Host "Checking pkcs11proxy..."

if ( ( .\Dependencies.exe -exports .\pkcs11proxy.dll | Select-String -Pattern "C_GetFunctionList" -SimpleMatch -Quiet ) -ne $true ) {
Expand Down
93 changes: 93 additions & 0 deletions testdata/ci-firefox-tests.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
$ErrorActionPreference = "Stop"

Write-Host "===== Default System CKBI ====="

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "www.namecoin.org" -desired "success"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "missing"
If (!$?) {
exit 222
}

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "untrusted-root.badssl.com" -desired "fail"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "missing"
If (!$?) {
exit 222
}

Write-Host "===== Deleted System CKBI ====="

Move-Item -Path "$Env:CI_MAIN_MODULE" -Destination "$Env:CI_BAK_MODULE"

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "www.namecoin.org" -desired "fail"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "missing"
If (!$?) {
exit 222
}

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "untrusted-root.badssl.com" -desired "fail"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "missing"
If (!$?) {
exit 222
}

# TODO: No env var, -desired "missing" default target

# TODO: Env var pointing to -desired "missing" target

Write-Host "===== System CKBI via pkcs11proxy ====="

$Env:PKCS11PROXY_CKBI_TARGET = "$Env:CI_BAK_MODULE"
Copy-Item pkcs11proxy.dll -Destination "$Env:CI_MAIN_MODULE"

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "www.namecoin.org" -desired "success"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "present"
If (!$?) {
exit 222
}

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "untrusted-root.badssl.com" -desired "fail"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "present"
If (!$?) {
exit 222
}

Write-Host "===== System CKBI via p11proxy ====="

$Env:P11PROXY_CKBI_TARGET = "$Env:CI_BAK_MODULE"
Copy-Item p11proxy.dll -Destination "$Env:CI_MAIN_MODULE"

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "www.namecoin.org" -desired "success"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "present"
If (!$?) {
exit 222
}

& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/try-firefox-connect.ps1" -server_host "untrusted-root.badssl.com" -desired "fail"
If (!$?) {
exit 222
}
& "powershell" "-ExecutionPolicy" "Unrestricted" "-File" "testdata/assert-proxy-log.ps1" -desired "present"
If (!$?) {
exit 222
}
38 changes: 38 additions & 0 deletions testdata/try-firefox-connect.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
param (
$server_host,
$desired
)

$ErrorActionPreference = "Stop"

Write-Host "$server_host"

if ( ("$desired" -ne "success" ) -and ( "$desired" -ne "fail" ) ) {
Write-Host "Invalid DESIRED value; should be success or fail"
exit 1
}

# Nuke whatever cached state might exist...
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "$Env:APPDATA/Mozilla"

& "$Env:CI_MAIN_EXE" --screenshot "https://$server_host"
Start-Sleep -seconds 10
Stop-Process -Name "firefox" -ErrorAction SilentlyContinue
Start-Sleep -seconds 5

if ( Test-Path -Path "screenshot.png" ) {
$result = "success"
}
else {
$result = "fail"
}

Remove-Item -Force -ErrorAction SilentlyContinue "screenshot.png"

if ( "$result" -ne "$desired" ) {
Write-Host "TLS test failed"
Write-Host "Got $result, wanted $desired"
exit 1
}

exit 0

0 comments on commit 29cdad8

Please sign in to comment.