Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Firefox ESR+Nightly Windows tests #72

Merged
merged 4 commits into from
Mar 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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