-
Notifications
You must be signed in to change notification settings - Fork 17
Add comprehensive unit and integration tests for Keycloak functionality #20
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
Conversation
jkyberneees
commented
Nov 23, 2025
- Implement unit tests for the Token class, covering constructor behavior, expiration checks, role verification, and edge cases.
- Create integration tests for Keycloak interactions, including access token generation, role verification, token verification (both online and offline), and error handling.
- Set up Docker-based integration testing environment with Keycloak v26 and PostgreSQL.
- Include a realm export configuration for testing, defining users, roles, and client settings.
- Add a script to wait for Keycloak to be ready before running integration tests.
- Document integration test setup and usage in README.md.
- Implement unit tests for the Token class, covering constructor behavior, expiration checks, role verification, and edge cases. - Create integration tests for Keycloak interactions, including access token generation, role verification, token verification (both online and offline), and error handling. - Set up Docker-based integration testing environment with Keycloak and PostgreSQL. - Include a realm export configuration for testing, defining users, roles, and client settings. - Add a script to wait for Keycloak to be ready before running integration tests. - Document integration test setup and usage in README.md.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds comprehensive unit and integration tests for the Keycloak backend library, significantly improving code quality and maintainability. The changes introduce a full testing infrastructure with Docker-based integration testing and thorough unit test coverage for all core classes.
Key changes:
- Implements unit tests for Token, Keycloak, Jwt, and AccessToken classes with extensive mock-based testing
- Creates Docker-based integration test environment with Keycloak v26 and PostgreSQL, including realm configuration and startup scripts
- Enhances source code documentation with comprehensive JSDoc comments for all public APIs
Reviewed changes
Copilot reviewed 19 out of 20 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
package.json |
Updates dependencies and adds test scripts; contains invalid version numbers that will cause installation failures |
jest.config.js |
Configures Jest for unit tests with coverage thresholds and excludes integration tests |
jest.integration.config.js |
Separate Jest configuration for integration tests with extended timeout |
docker-compose.yml |
Sets up Keycloak 26 and PostgreSQL containers for integration testing |
tests/integration/realm-export.json |
Defines test realm with pre-configured users, roles, and client settings |
tests/integration/wait-for-keycloak.js |
Health check script that polls Keycloak until ready before running tests |
tests/integration/integration.test.ts |
End-to-end tests covering token generation, verification, roles, and error handling |
tests/Token.test.ts |
Unit tests for Token class covering constructor validation, expiration, and role checks |
tests/Keycloak.test.ts |
Unit tests for Keycloak constructor with various configuration options |
tests/Jwt.test.ts |
Unit tests for JWT verification (online/offline) and decoding |
tests/AccessToken.test.ts |
Unit tests for token lifecycle including caching, refresh, and error handling |
tests/integration/README.md |
Comprehensive documentation for integration test setup and usage |
README.md |
Updates main documentation with compatibility info and testing instructions |
.github/workflows/tests.yml |
Adds CI workflow for automated unit test execution |
.eslintignore |
Excludes test directories from linting |
libs/Token.ts |
Adds JSDoc documentation and fixes null-safety for role checking methods |
libs/Keycloak.ts |
Adds JSDoc documentation and timeout/httpsAgent configuration support |
libs/Jwt.ts |
Adds JSDoc documentation and default RS256 algorithm for offline verification; contains duplicate JSDoc blocks |
libs/AccessToken.ts |
Adds JSDoc documentation, retry limits, and error callback hooks |
libs/index.ts |
Adds explanatory comment about public API exports |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@jkyberneees I've opened a new pull request, #21, to work on those changes. Once the pull request is ready, I'll request review from you. |
|
@jkyberneees I've opened a new pull request, #22, to work on those changes. Once the pull request is ready, I'll request review from you. |
|
@jkyberneees I've opened a new pull request, #23, to work on those changes. Once the pull request is ready, I'll request review from you. |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Initial plan * Remove duplicate JSDoc comment block in Jwt.ts Co-authored-by: jkyberneees <4096860+jkyberneees@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jkyberneees <4096860+jkyberneees@users.noreply.github.com>
* Initial plan * Remove duplicate JSDoc comments from Jwt.ts methods Co-authored-by: jkyberneees <4096860+jkyberneees@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jkyberneees <4096860+jkyberneees@users.noreply.github.com>
* Initial plan * Remove duplicate JSDoc comments from Jwt.ts Co-authored-by: jkyberneees <4096860+jkyberneees@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: jkyberneees <4096860+jkyberneees@users.noreply.github.com>