Importing organizations failing if there is no broker and members in the representation
Closes #30305 Signed-off-by: Martin Kanis <mkanis@redhat.com>
This commit is contained in:
parent
57139cbefc
commit
89f83e9788
2 changed files with 45 additions and 21 deletions
|
@ -1592,12 +1592,12 @@ public class DefaultExportImportManager implements ExportImportManager {
|
|||
OrganizationModel org = provider.create(orgRep.getName());
|
||||
org.setDomains(orgRep.getDomains().stream().map(r -> new OrganizationDomainModel(r.getName(), r.isVerified())).collect(Collectors.toSet()));
|
||||
|
||||
for (IdentityProviderRepresentation identityProvider : orgRep.getIdentityProviders()) {
|
||||
for (IdentityProviderRepresentation identityProvider : Optional.ofNullable(orgRep.getIdentityProviders()).orElse(Collections.emptyList())) {
|
||||
IdentityProviderModel idp = newRealm.getIdentityProviderByAlias(identityProvider.getAlias());
|
||||
provider.addIdentityProvider(org, idp);
|
||||
}
|
||||
|
||||
for (UserRepresentation member : orgRep.getMembers()) {
|
||||
for (UserRepresentation member : Optional.ofNullable(orgRep.getMembers()).orElse(Collections.emptyList())) {
|
||||
UserModel m = session.users().getUserByUsername(newRealm, member.getUsername());
|
||||
provider.addMember(org, m);
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import org.hamcrest.Matchers;
|
||||
import org.junit.Test;
|
||||
import org.keycloak.admin.client.resource.OrganizationResource;
|
||||
|
@ -109,25 +110,7 @@ public class OrganizationExportTest extends AbstractOrganizationTest {
|
|||
}
|
||||
}
|
||||
|
||||
// export
|
||||
TestingExportImportResource exportImport = testingClient.testing().exportImport();
|
||||
exportImport.setProvider(SingleFileExportProviderFactory.PROVIDER_ID);
|
||||
exportImport.setAction(ExportImportConfig.ACTION_EXPORT);
|
||||
exportImport.setRealmName(testRealm().toRepresentation().getRealm());
|
||||
String targetFilePath = exportImport.getExportImportTestDirectory() + File.separator + "org-export.json";
|
||||
exportImport.setFile(targetFilePath);
|
||||
exportImport.runExport();
|
||||
|
||||
// remove the realm and import it back
|
||||
testRealm().remove();
|
||||
exportImport = testingClient.testing().exportImport();
|
||||
exportImport.setProvider(SingleFileImportProviderFactory.PROVIDER_ID);
|
||||
exportImport.setAction(ExportImportConfig.ACTION_IMPORT);
|
||||
exportImport.setFile(targetFilePath);
|
||||
exportImport.runImport();
|
||||
getCleanup().addCleanup(() -> testRealm().remove());
|
||||
|
||||
RealmRepresentation importedRealm = testRealm().toRepresentation();
|
||||
RealmRepresentation importedRealm = exportRemoveImportRealm();
|
||||
|
||||
assertTrue(importedRealm.isOrganizationsEnabled());
|
||||
|
||||
|
@ -158,6 +141,47 @@ public class OrganizationExportTest extends AbstractOrganizationTest {
|
|||
assertThat(appPage.getRequestType(),is(AppPage.RequestType.AUTH_RESPONSE));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExportImportEmptyOrg() {
|
||||
OrganizationRepresentation orgRep = createRepresentation("acme", "acme.com");
|
||||
|
||||
try (Response response = testRealm().organizations().create(orgRep)) {
|
||||
assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
|
||||
}
|
||||
List<OrganizationRepresentation> orgs = testRealm().organizations().getAll();
|
||||
assertEquals(1, orgs.size());
|
||||
|
||||
RealmRepresentation importedRealm = exportRemoveImportRealm();
|
||||
|
||||
assertTrue(importedRealm.isOrganizationsEnabled());
|
||||
|
||||
orgs = testRealm().organizations().getAll();
|
||||
assertEquals(1, orgs.size());
|
||||
assertEquals("acme", orgs.get(0).getName());
|
||||
}
|
||||
|
||||
private RealmRepresentation exportRemoveImportRealm() {
|
||||
//export
|
||||
TestingExportImportResource exportImport = testingClient.testing().exportImport();
|
||||
exportImport.setProvider(SingleFileExportProviderFactory.PROVIDER_ID);
|
||||
exportImport.setAction(ExportImportConfig.ACTION_EXPORT);
|
||||
exportImport.setRealmName(testRealm().toRepresentation().getRealm());
|
||||
String targetFilePath = exportImport.getExportImportTestDirectory() + File.separator + "org-export.json";
|
||||
exportImport.setFile(targetFilePath);
|
||||
exportImport.runExport();
|
||||
|
||||
// remove the realm and import it back
|
||||
testRealm().remove();
|
||||
exportImport = testingClient.testing().exportImport();
|
||||
exportImport.setProvider(SingleFileImportProviderFactory.PROVIDER_ID);
|
||||
exportImport.setAction(ExportImportConfig.ACTION_IMPORT);
|
||||
exportImport.setFile(targetFilePath);
|
||||
exportImport.runImport();
|
||||
getCleanup().addCleanup(() -> testRealm().remove());
|
||||
|
||||
return testRealm().toRepresentation();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testPartialExport() {
|
||||
createOrganization();
|
||||
|
|
Loading…
Reference in a new issue