fix: admin cli client should set the content when performing a merge (#30539)
closes: #29878 Signed-off-by: Steve Hawkins <shawkins@redhat.com>
This commit is contained in:
parent
cc2ccc87b0
commit
d534860e2b
2 changed files with 20 additions and 3 deletions
|
@ -29,6 +29,7 @@ import org.keycloak.client.cli.util.HeadersBodyStatus;
|
|||
import org.keycloak.client.cli.util.HttpUtil;
|
||||
import org.keycloak.client.cli.util.OutputFormat;
|
||||
import org.keycloak.client.cli.util.ReturnFields;
|
||||
import org.keycloak.util.JsonSerialization;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.ByteArrayInputStream;
|
||||
|
@ -265,6 +266,11 @@ public abstract class AbstractRequestCmd extends AbstractAuthOptionsCmd {
|
|||
ReflectionUtil.merge(ctx.getResult(), (ObjectNode) ctxremote.getResult());
|
||||
}
|
||||
ctx = ctxremote;
|
||||
try {
|
||||
ctx.setContent(JsonSerialization.writeValueAsString(ctxremote.getResult()));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Could not convert merge result to string " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
if (attrs.size() > 0) {
|
||||
|
|
|
@ -162,17 +162,28 @@ public class KcAdmUpdateTest extends AbstractAdmCliTest {
|
|||
// test using merge with file
|
||||
exe = KcAdmExec.newBuilder()
|
||||
.argsLine("update clients/" + client.getId() + " --config '" + configFile.getName() +
|
||||
"' -o -s enabled=true -m -f -")
|
||||
"' -o -m -f -")
|
||||
.stdin(new ByteArrayInputStream("{ \"webOrigins\": [\"http://localhost:8980/myapp\"] }".getBytes()))
|
||||
.execute();
|
||||
|
||||
assertExitCodeAndStdErrSize(exe, 0, 0);
|
||||
|
||||
|
||||
client = JsonSerialization.readValue(exe.stdout(), ClientRepresentation.class);
|
||||
Assert.assertEquals("webOrigins", Arrays.asList("http://localhost:8980/myapp"), client.getWebOrigins());
|
||||
Assert.assertTrue("enabled is true", client.isEnabled());
|
||||
Assert.assertFalse("enabled is false", client.isEnabled());
|
||||
Assert.assertEquals("redirectUris", Arrays.asList("http://localhost:8980/myapp/*"), client.getRedirectUris());
|
||||
|
||||
exe = KcAdmExec.newBuilder()
|
||||
.argsLine("update clients/" + client.getId() + " --config '" + configFile.getName() +
|
||||
"' -o -s enabled=true -m -f -")
|
||||
.stdin(new ByteArrayInputStream("{ \"webOrigins\": [\"http://localhost:8980/myapp1\"] }".getBytes()))
|
||||
.execute();
|
||||
|
||||
assertExitCodeAndStdErrSize(exe, 0, 0);
|
||||
|
||||
client = JsonSerialization.readValue(exe.stdout(), ClientRepresentation.class);
|
||||
Assert.assertEquals("webOrigins", Arrays.asList("http://localhost:8980/myapp1"), client.getWebOrigins());
|
||||
Assert.assertTrue("enabled is true", client.isEnabled());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue