Testcontainers-Keycloak 使用教程
项目介绍
Testcontainers-Keycloak 是一个用于 Keycloak IAM & SSO 的 Testcontainer 实现。它允许开发者在测试环境中轻松地启动和管理 Keycloak 实例,从而简化集成测试的流程。该项目支持 Keycloak 从版本 22.x 及以上,对于 21.x 及以下版本,请参考 2.x 分支。
项目快速启动
依赖配置
首先,在 Maven 项目的 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.github.dasniko</groupId>
<artifactId>testcontainers-keycloak</artifactId>
<version>3.4.0</version>
</dependency>
启动 Keycloak 容器
以下是一个简单的示例,展示如何在 JUnit 5 测试中启动一个默认的 Keycloak 实例:
import org.testcontainers.containers.KeycloakContainer;
import org.junit.jupiter.api.Test;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;
@Testcontainers
public class KeycloakTest {
@Container
private static final KeycloakContainer keycloak = new KeycloakContainer();
@Test
public void testKeycloak() {
// 在这里编写你的测试逻辑
String authServerUrl = keycloak.getAuthServerUrl();
System.out.println("Keycloak Auth Server URL: " + authServerUrl);
}
}
应用案例和最佳实践
自定义 Keycloak 容器
如果你需要一个自定义的 Keycloak 容器实现,可以继承 ExtendableKeycloakContainer
类:
public class MyCustomKeycloakContainer extends ExtendableKeycloakContainer<MyCustomKeycloakContainer> {
public MyCustomKeycloakContainer() {
super();
}
public MyCustomKeycloakContainer(String dockerImageName) {
super(dockerImageName);
}
}
使用自定义管理员密码
你可以设置自定义的管理员密码:
@Container
private static final KeycloakContainer keycloak = new KeycloakContainer()
.withAdminPassword("customPassword");
导入 Realm 配置
你可以通过 withRealmImportFile
方法导入现有的 realm JSON 配置文件:
@Container
private static final KeycloakContainer keycloak = new KeycloakContainer()
.withRealmImportFile("/test-realm.json");
典型生态项目
Testcontainers-Keycloak 通常与其他测试工具和框架一起使用,例如:
- JUnit 5: 用于编写和运行测试。
- Docker: 用于容器化环境的管理。
- Keycloak: 用于身份验证和授权。
这些工具和框架共同构成了一个强大的测试生态系统,帮助开发者确保其应用程序的安全性和可靠性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考