Details
diff --git a/services/src/main/java/org/keycloak/exportimport/singlefile/SingleFileExportProvider.java b/services/src/main/java/org/keycloak/exportimport/singlefile/SingleFileExportProvider.java
index 78bae43..a2a8852 100755
--- a/services/src/main/java/org/keycloak/exportimport/singlefile/SingleFileExportProvider.java
+++ b/services/src/main/java/org/keycloak/exportimport/singlefile/SingleFileExportProvider.java
@@ -62,7 +62,7 @@ public class SingleFileExportProvider implements ExportProvider {
List<RealmModel> realms = session.realms().getRealms();
List<RealmRepresentation> reps = new ArrayList<RealmRepresentation>();
for (RealmModel realm : realms) {
- reps.add(ExportUtils.exportRealm(session, realm, true));
+ reps.add(ExportUtils.exportRealm(session, realm, true, true));
}
writeToFile(reps);
@@ -80,7 +80,7 @@ public class SingleFileExportProvider implements ExportProvider {
@Override
protected void runExportImportTask(KeycloakSession session) throws IOException {
RealmModel realm = session.realms().getRealmByName(realmName);
- RealmRepresentation realmRep = ExportUtils.exportRealm(session, realm, true);
+ RealmRepresentation realmRep = ExportUtils.exportRealm(session, realm, true, true);
writeToFile(realmRep);
}
diff --git a/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java b/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java
index c549fd6..f6beac5 100755
--- a/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java
+++ b/services/src/main/java/org/keycloak/exportimport/util/ExportUtils.java
@@ -84,16 +84,16 @@ import com.fasterxml.jackson.databind.SerializationFeature;
*/
public class ExportUtils {
- public static RealmRepresentation exportRealm(KeycloakSession session, RealmModel realm, boolean includeUsers) {
+ public static RealmRepresentation exportRealm(KeycloakSession session, RealmModel realm, boolean includeUsers, boolean internal) {
ExportOptions opts = new ExportOptions(false, true, true);
if (includeUsers) {
opts.setUsersIncluded(true);
}
- return exportRealm(session, realm, opts);
+ return exportRealm(session, realm, opts, internal);
}
- public static RealmRepresentation exportRealm(KeycloakSession session, RealmModel realm, ExportOptions options) {
- RealmRepresentation rep = ModelToRepresentation.toRepresentation(realm, false);
+ public static RealmRepresentation exportRealm(KeycloakSession session, RealmModel realm, ExportOptions options, boolean internal) {
+ RealmRepresentation rep = ModelToRepresentation.toRepresentation(realm, internal);
ModelToRepresentation.exportAuthenticationFlows(realm, rep);
ModelToRepresentation.exportRequiredActions(realm, rep);
diff --git a/services/src/main/java/org/keycloak/exportimport/util/MultipleStepsExportProvider.java b/services/src/main/java/org/keycloak/exportimport/util/MultipleStepsExportProvider.java
index fa73f81..851abe2 100755
--- a/services/src/main/java/org/keycloak/exportimport/util/MultipleStepsExportProvider.java
+++ b/services/src/main/java/org/keycloak/exportimport/util/MultipleStepsExportProvider.java
@@ -75,7 +75,7 @@ public abstract class MultipleStepsExportProvider implements ExportProvider {
@Override
protected void runExportImportTask(KeycloakSession session) throws IOException {
RealmModel realm = session.realms().getRealmByName(realmName);
- RealmRepresentation rep = ExportUtils.exportRealm(session, realm, exportUsersIntoRealmFile);
+ RealmRepresentation rep = ExportUtils.exportRealm(session, realm, exportUsersIntoRealmFile, true);
writeRealm(realmName + "-realm.json", rep);
logger.info("Realm '" + realmName + "' - data exported");
diff --git a/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java b/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
index 3d09f93..88af6f6 100644
--- a/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
+++ b/services/src/main/java/org/keycloak/services/resources/admin/RealmAdminResource.java
@@ -955,7 +955,7 @@ public class RealmAdminResource {
boolean clientsExported = exportClients != null && exportClients;
ExportOptions options = new ExportOptions(false, clientsExported, groupsAndRolesExported);
- RealmRepresentation rep = ExportUtils.exportRealm(session, realm, options);
+ RealmRepresentation rep = ExportUtils.exportRealm(session, realm, options, false);
return stripForExport(session, rep);
}
diff --git a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
index c130cfd..42fa4cf 100755
--- a/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
+++ b/testsuite/integration-arquillian/tests/base/src/test/java/org/keycloak/testsuite/exportimport/ExportImportTest.java
@@ -18,6 +18,8 @@
package org.keycloak.testsuite.exportimport;
import org.jboss.arquillian.container.spi.client.container.LifecycleException;
+import org.jboss.arquillian.container.test.api.Deployment;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.After;
import org.junit.Test;
import org.keycloak.admin.client.resource.RealmResource;
@@ -25,23 +27,16 @@ import org.keycloak.exportimport.ExportImportConfig;
import org.keycloak.exportimport.dir.DirExportProvider;
import org.keycloak.exportimport.dir.DirExportProviderFactory;
import org.keycloak.exportimport.singlefile.SingleFileExportProviderFactory;
-import org.keycloak.representations.idm.ComponentRepresentation;
-import org.keycloak.representations.idm.KeysMetadataRepresentation;
-import org.keycloak.representations.idm.RealmEventsConfigRepresentation;
-import org.keycloak.representations.idm.RealmRepresentation;
-import org.keycloak.representations.idm.UserRepresentation;
+import org.keycloak.representations.idm.*;
import org.keycloak.testsuite.AbstractKeycloakTest;
import org.keycloak.testsuite.Assert;
+import org.keycloak.testsuite.runonserver.RunHelpers;
+import org.keycloak.testsuite.runonserver.RunOnServerDeployment;
import org.keycloak.testsuite.util.UserBuilder;
import java.io.File;
import java.net.URL;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
+import java.util.*;
import static org.junit.Assert.assertEquals;
import static org.keycloak.testsuite.admin.AbstractAdminTest.loadJson;
@@ -54,6 +49,11 @@ import static org.keycloak.testsuite.admin.AbstractAdminTest.loadJson;
*/
public class ExportImportTest extends AbstractKeycloakTest {
+ @Deployment
+ public static WebArchive deploy() {
+ return RunOnServerDeployment.create(ExportImportTest.class);
+ }
+
@Override
public void addTestRealms(List<RealmRepresentation> testRealms) {
RealmRepresentation testRealm1 = loadJson(getClass().getResourceAsStream("/testrealm.json"), RealmRepresentation.class);
@@ -61,6 +61,8 @@ public class ExportImportTest extends AbstractKeycloakTest {
testRealm1.getUsers().add(makeUser("user2"));
testRealm1.getUsers().add(makeUser("user3"));
+ testRealm1.getSmtpServer().put("password", "secret");
+
setEventsConfig(testRealm1);
testRealms.add(testRealm1);
@@ -194,6 +196,9 @@ public class ExportImportTest extends AbstractKeycloakTest {
assertAuthenticated("test", "user1", "password");
assertAuthenticated("test", "user2", "password");
assertAuthenticated("test", "user3", "password");
+
+ // KEYCLOAK-6050 Check SMTP password is exported/imported
+ assertEquals("secret", testingClient.server("test").fetch(RunHelpers.internalRealm()).getSmtpServer().get("password"));
}
private void testRealmExportImport() throws LifecycleException {