Complete E2E single file script against navikt/mock-oauth2-server
NOTE: The mock test server was added to source in oauth v2.0.11, and has now been upgraded to the latest version of mock-oauth2-server. The mock test server is not in the packaged gem.
docker compose -f docker-compose-ssl.yml up -d --wait
ruby examples/e2e.rb
# If your machine is slow or Docker pulls are cold, increase the wait:
E2E_WAIT_TIMEOUT=120 ruby examples/e2e.rb
# The mock server serves HTTP on 8080; the example points to http://localhost:8080 by default.
The output should be something like this:
β ruby examples/e2e.rb
Access token (truncated): eyJraWQiOiJkZWZhdWx0...
userinfo status: 200
userinfo body: {"sub" => "demo-sub", "aud" => ["demo-aud"], "nbf" => 1757816758000, "iss" => "http://localhost:8080/default", "exp" => 1757820358000, "iat" => 1757816758000, "jti" => "d63b97a7-ebe5-4dea-93e6-d542caba6104"}
E2E complete
Make sure to shut down the mock server when you are done:
docker compose -f docker-compose-ssl.yml down
Troubleshooting: validate connectivity to the mock server
- Check container status and port mapping:
- docker compose -f docker-compose-ssl.yml ps
- From the host, try the discovery URL directly (this is what the example uses by default):
- curl -v http://localhost:8080/default/.well-known/openid-configuration
- If that fails immediately, also try: curl -v --connect-timeout 2 http://127.0.0.1:8080/default/.well-known/openid-configuration
- From inside the container (to distinguish container vs host networking):
- docker exec -it oauth2-mock-oauth2-server-1 curl -v http://127.0.0.1:8080/default/.well-known/openid-configuration
- Simple TCP probe from the host:
- nc -vz localhost 8080 # or: ruby -rsocket -e 'TCPSocket.new("localhost",8080).close; puts "tcp ok"'
- Inspect which host port 8080 is bound to (should be 8080):
- docker inspect -f '{{ (index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort }}' oauth2-mock-oauth2-server-1
- Look at server logs for readiness/errors:
- docker logs -n 200 oauth2-mock-oauth2-server-1
- On Linux, ensure nothing else is bound to 8080 and that firewall/SELinux arenβt blocking:
- ss -ltnp | grep :8080
Notes
- Discovery URL pattern is: http://localhost:8080//.well-known/openid-configuration, where defaults to "default".
- You can change these with env vars when running the example:
- E2E_ISSUER_BASE (default: http://localhost:8080)
- E2E_REALM (default: default)
See the full changelogs after a word from (or is it for?) my sponsor (you!).
Support & Funding Info
I am a full-time FLOSS maintainer. If you find my work valuable I ask that you become a sponsor. Every dollar helps!
2.0.16 - 2025-09-14
- TAG: v2.0.16
- COVERAGE: 96.33% -- 394/409 lines in 14 files
- BRANCH COVERAGE: 86.49% -- 64/74 branches in 14 files
- 90.48% documented ### Added
-
gh!680 - E2E example using mock test server added in v2.0.11 by @pboling
- mock-oauth2-server upgraded to v2.3.0
- https://github.com/navikt/mock-oauth2-server
docker compose -f docker-compose-ssl.yml up -d --wait
ruby examples/e2e.rb
docker compose -f docker-compose-ssl.yml down
- mock server readiness wait is 90s
- override via E2E_WAIT_TIMEOUT
-
gh!676, gh!679 - Apache SkyWalking Eyes dependency license check by @pboling
Changed
- gh!678 - Many improvements to make CI more resilient (past/future proof) by @pboling
- gh!681 - Upgrade to kettle-dev v1.1.19
2.0.15 - 2025-09-08
- TAG: v2.0.15
- COVERAGE: 100.00% -- 519/519 lines in 14 files
- BRANCH COVERAGE: 100.00% -- 174/174 branches in 14 files
- 90.48% documented ### Added
- gh!671 - Complete documentation example for Instagram by @pboling
- .env.local.example for contributor happiness
- note lack of builds for JRuby 9.2, 9.3 & Truffleruby 22.3, 23.0
-
gh!670 - AccessToken: verb-dependent token transmission mode by @mrj
- e.g., Instagram GET=:query, POST/DELETE=:header ### Changed
-
gh!669 - Upgrade to kettle-dev v1.1.9 by @pboling
Fixed
- Remove accidentally duplicated lines, and fix typos in CHANGELOG.md
- point badge to the correct workflow for Ruby 2.3 (caboose.yml)
Photo (cropped) by Zoha Gohar on Unsplash
Top comments (0)