[KEYCLOAK-5379] MigrationTest fails for migration to 3.3.0

This commit is contained in:
Bruno Oliveira authored and Stian Thorgersen committed 2017-11-16 07:22:57 +01:00
1 parent f186ea12c6
commit 07aa718cb9
3 files changed
+28 -27

No files matched your search

@@ -35,8 +35,8 @@ import org.keycloak.migration.migrators.MigrateTo2_5_0;
import org.keycloak.migration.migrators.MigrateTo3_0_0;
import org.keycloak.migration.migrators.MigrateTo3_1_0;
import org.keycloak.migration.migrators.MigrateTo3_2_0;
import org.keycloak.migration.migrators.MigrateTo3_3_0;
import org.keycloak.migration.migrators.MigrateTo3_4_0;
import org.keycloak.migration.migrators.MigrateTo3_4_1;
import org.keycloak.migration.migrators.Migration;
import org.keycloak.models.KeycloakSession;
@@ -65,8 +65,8 @@ public class MigrationModelManager {
new MigrateTo3_0_0(),
new MigrateTo3_1_0(),
new MigrateTo3_2_0(),
new MigrateTo3_3_0(),
new MigrateTo3_4_0()
new MigrateTo3_4_0(),
new MigrateTo3_4_1()
};
public static void migrate(KeycloakSession session) {
@@ -25,26 +25,27 @@ import org.keycloak.models.RealmModel;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
/**
* @author <a href="mailto:bruno@abstractj.org">Bruno Oliveira</a>
*/
public class MigrateTo3_3_0 implements Migration {
public class MigrateTo3_4_1 implements Migration {
public static final ModelVersion VERSION = new ModelVersion("3.3.0");
public static final ModelVersion VERSION = new ModelVersion("3.4.1");
@Override
public void migrate(KeycloakSession session) {
for (RealmModel realm : session.realms().getRealms()) {
Map<String, String> securityHeaders = realm.getBrowserSecurityHeaders();
if (securityHeaders != null && securityHeaders.containsValue("frame-src 'self';")) {
Map<String, String> browserSecurityHeaders = new HashMap<>(securityHeaders);
browserSecurityHeaders.put("contentSecurityPolicy", "frame-src 'self'; frame-ancestors 'self'; object-src 'none';");
realm.setBrowserSecurityHeaders(Collections.unmodifiableMap(browserSecurityHeaders));
}
}
session.realms().getRealms().stream().forEach(
r -> {
Map<String, String> securityHeaders = new HashMap<>(r.getBrowserSecurityHeaders());
securityHeaders.entrySet().stream()
.filter(Objects::nonNull)
.filter(entry -> entry.getValue().equals("frame-src 'self'"))
.forEach(entry -> entry.setValue("frame-src 'self'; frame-ancestors 'self'; object-src 'none';"));
r.setBrowserSecurityHeaders(Collections.unmodifiableMap(securityHeaders));
}
);
}
@Override
@@ -116,7 +116,7 @@ public class MigrationTest extends AbstractKeycloakTest {
public void migration2_5_5Test() {
testMigratedData();
testMigrationTo3_0_0();
testMigrationTo3_3_0();
testMigrationTo3_4_1();
}
@Test
@Migration(versionFrom = "1.9.8.Final")
@@ -130,8 +130,8 @@ public class MigrationTest extends AbstractKeycloakTest {
testMigrationTo2_5_1();
testMigrationTo3_0_0();
testMigrationTo3_2_0();
testMigrationTo3_3_0();
testMigrationTo3_4_0();
testMigrationTo3_4_1();
}
@Test
@Migration(versionFrom = "2.2.1.Final")
@@ -209,16 +209,6 @@ public class MigrationTest extends AbstractKeycloakTest {
testDockerAuthenticationFlow(masterRealm, migrationRealm);
}
private void testMigrationTo3_3_0() {
Map<String, String> securityHeaders = masterRealm.toRepresentation().getBrowserSecurityHeaders();
if (securityHeaders != null) {
assertEquals("frame-src 'self'; frame-ancestors 'self'; object-src 'none';",
securityHeaders.get("contentSecurityPolicy"));
} else {
fail("Browser security headers not found");
}
}
private void testMigrationTo3_4_0() {
Map<String, String> securityHeaders = masterRealm.toRepresentation().getBrowserSecurityHeaders();
if (securityHeaders != null) {
@@ -229,6 +219,16 @@ public class MigrationTest extends AbstractKeycloakTest {
}
}
private void testMigrationTo3_4_1() {
Map<String, String> securityHeaders = masterRealm.toRepresentation().getBrowserSecurityHeaders();
if (securityHeaders != null) {
assertEquals("frame-src 'self'; frame-ancestors 'self'; object-src 'none';",
securityHeaders.get("contentSecurityPolicy"));
} else {
fail("Browser security headers not found");
}
}
private void testDockerAuthenticationFlow(RealmResource... realms) {
for (RealmResource realm : realms) {
AuthenticationFlowRepresentation flow = null;