ci: run test suite against nginx master in addition to 1.30.0#8
Merged
matthias-lay merged 2 commits intoMay 12, 2026
Merged
Conversation
Agent-Logs-Url: https://github.com/Securepoint/nginx-ntlm-modulev2/sessions/8831a97e-8661-4d9f-bcbc-3e4d37c12738 Co-authored-by: matthias-lay <163420385+matthias-lay@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Update GitHub Actions workflow to run tests for nginx master
ci: run test suite against nginx master in addition to 1.30.0
May 12, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI only validated the module against nginx
1.30.0; master was never tested despite being listed as supported.Changes
.github/workflows/test-nginx-1.30.ymlfrom a singlenginx-versionlist to anincludematrix with two entries:Download nginx sourcestep with a shell conditional — tagged tarball forrelease,refs/heads/master.tar.gzformaster. Build andprove -rsteps are shared across both legs unchanged.test nginx 1.30→test nginxto reflect broader coverage.Original prompt
Update the GitHub Actions workflow in repository
Securepoint/nginx-ntlm-modulev2so the existing test suite also runs against nginxmasterin addition to nginx1.30.0.Requirements:
.github/workflows/test-nginx-1.30.yml.1.30.0.1.30.0mastermasterbranch tarball from the nginx repository../auto/configure --prefix="$RUNNER_TEMP/nginx" --add-module="$GITHUB_WORKSPACE", then run the existing Perl test suite withprove -r "$GITHUB_WORKSPACE/t".mainand on pull requests.Please create a pull request with the workflow change.
The following is the prior conversation context from the user's chat exploration (may be truncated):
User: can you explain what the testsuite actually does?
Assistant: Yes — the testsuite is basically an integration test harness for the nginx NTLM module, not a unit test suite.
What it does, in plain terms:
Core idea being tested
NTLM and Negotiate are connection-oriented auth schemes. That means once a client authenticates, nginx must keep reusing the same upstream TCP connection for that client/session, otherwise auth breaks.
The fake backend in
t/backend/index.jssimulates that behavior by storing the auth token on the backend connection and echoing it back on later requests asX-NGX-NTLM-AUTH.So the suite is asking:
How the harness works
From
README.md, tests are run with Perl’sTest::Nginx:npm install -C t/backendTest::Nginxprove -r tGitHub Actions does the same in
.github/workflows/test-nginx-1.30.yml:--add-module="$GITHUB_WORKSPACE"prove -r "$GITHUB_WORKSPACE/t"The fake backend
t/backend/index.jsstarts two Express servers on ports19841and19842.Its behavior:
Authorization: NTLM ...orAuthorization: Negotiate ..., it extracts the tokenreq.connection.xauthDataX-NGX-NTLM-AUTH: <token>OKThat means:
What each test file covers
t/001-sanity.tThis checks the basic expected behavior.
Main cases:
NTLM triggers connection pinning
Authorization: NTLM <token>X-NGX-NTLM-AUTHNegotiate does the same
Authorization: Negotiate <token>Client disconnect cleanup
t/002-timeout.tThis tests behavior when the NTLM upstream cache entry times out.
Key config:
ntlm_timeout 2s;Cases:
Client drops connection after backend timeout
Client sends another request after timeout
So this file is mostly regression testing around timeout-related cleanup and crash safety.
t/003-stress.tThis is more of an edge-case/regression suite for cache pressure and lifetime limits.
Visible tests include:
Cache eviction under saturation
ntlm 2;ntlm_requestsboundaryThis pull request was created from Copilot chat.