Я использую Keycloak 4.4.0 Final, ниже структура проекта
Parent A pom Содержит все зависимости.Управление ниже - это psedocode
<dependencyManagement>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-core</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-spi</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi-private</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-model-jpa</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-servlet-filter-adapter</artifactId>
<version>${keycloak.version}</version>
<exclusions>
<exclusion>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-spi</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</exclusion>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
<exclusion>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-legacy-spring-boot-starter</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-wildfly-adapter-dist</artifactId>
<version>${keycloak.version}</version>
<type>zip</type>
</dependency>
</dependencyManagement>
и в Child B я добавляю зависимости
<dependencies>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-core</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-adapter-spi</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependency>
<groupId>org.keycloak.bom</groupId>
<artifactId>keycloak-adapter-bom</artifactId>
<version>${keycloak.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencyManagement>
Интеграционный тест в дочернем дочернем элементе D терпит неудачу, выдавая исключение «java.lang.RuntimeException: необходимо установить« realm »в конфигурации». Удивительно, если я добавлю зависимость keycloak-legacy-spring-boot-starter к тесту Child B pom без исключения. Без изменений в тестовом коде.
@ActiveProfiles(profiles = "Development")
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT,
classes = FacebookTestConfiguration.class)
public class FacebookGreetingClientShouldTest {
@Autowired
private TestRestTemplate testRestTemplate;
FacebookGreetingClient greetingClient;
FacebookChannelConfiguration facebookChannelConfiguration;
@Autowired
MockFacebookServer facebookServer;
@Before
public void setUp() {
facebookChannelConfiguration = new FacebookChannelConfiguration();
Deencapsulation.setField(facebookChannelConfiguration, "url", "/facebookTest");
Deencapsulation.setField(facebookChannelConfiguration, "valid", true);
FacebookToken fbAccessToken = new FacebookToken();
fbAccessToken.setSecureValue("abcdfghf");
facebookChannelConfiguration.setAccessToken(fbAccessToken);
facebookChannelConfiguration.setGreeting("greeting");
Deencapsulation.setField(facebookChannelConfiguration, "fbClient",
testRestTemplate.getRestTemplate());
}
@After
public void destroy() {
facebookServer.data.clear();
}
@Test
public void greetingsTest() throws Exception {
try {
greetingClient = new FacebookGreetingClient(facebookChannelConfiguration);
greetingClient.run();
Assert.assertEquals(2, facebookServer.data.size()); Assert.assertTrue(facebookServer.data.get(0).toString().contains("get_started")); Assert.assertTrue(facebookServer.data.get(1).toString().contains("greeting"));
} catch (Exception e) {
Assert.fail();
e.printStackTrace();
}
}
}
ПРИМЕЧАНИЕ: странное поведение, если я удаляю зависимости keycloak-legacy-spring-boot-starter из Parent A pom dependencyManagement и добавляю их в Child B pom dependencyManagement, тесты пройдены, ошибок и исключений нет. Без изменений в тестовом коде
Может ли кто-нибудь помочь мне.
Исключение: java.lang.RuntimeException: java.lang.RuntimeException: необходимо установить 'realm' в конфигурации, когда зависимости childcloak-legacy-spring-boot-starter добавлены в Child B