-
Notifications
You must be signed in to change notification settings - Fork 40.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pulsar auth parameters don't properly encode JSON values #40493
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -81,8 +81,10 @@ void customizeClientBuilderWhenHasNoAuthentication() { | |
@Test | ||
void customizeClientBuilderWhenHasAuthentication() throws UnsupportedAuthenticationException { | ||
PulsarProperties properties = new PulsarProperties(); | ||
Map<String, String> params = Map.of("param", "name"); | ||
String authParamString = "{\"param\":\"name\"}"; | ||
Map<String, String> params = Map.of("simpleParam", "foo", "complexParam", | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We are not exhausting all possible replacements characters but are covering the majority. @philwebb should we add a bit more coverage here? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm not Phil, but I think this is fine :) |
||
"{\n\t\"k1\" : \"v1\",\n\t\"k2\":\"v2\"\n}"); | ||
String authParamString = "{\"complexParam\":\"{\\n\\t\\\"k1\\\" : \\\"v1\\\",\\n\\t\\\"k2\\\":\\\"v2\\\"\\n}\"" | ||
+ ",\"simpleParam\":\"foo\"}"; | ||
properties.getClient().getAuthentication().setPluginClassName("myclass"); | ||
properties.getClient().getAuthentication().setParam(params); | ||
ClientBuilder builder = mock(ClientBuilder.class); | ||
|
@@ -166,8 +168,10 @@ void customizeAdminBuilderWhenHasNoAuthentication() { | |
@Test | ||
void customizeAdminBuilderWhenHasAuthentication() throws UnsupportedAuthenticationException { | ||
PulsarProperties properties = new PulsarProperties(); | ||
Map<String, String> params = Map.of("param", "name"); | ||
String authParamString = "{\"param\":\"name\"}"; | ||
Map<String, String> params = Map.of("simpleParam", "foo", "complexParam", | ||
"{\n\t\"k1\" : \"v1\",\n\t\"k2\":\"v2\"\n}"); | ||
String authParamString = "{\"complexParam\":\"{\\n\\t\\\"k1\\\" : \\\"v1\\\",\\n\\t\\\"k2\\\":\\\"v2\\\"\\n}\"" | ||
+ ",\"simpleParam\":\"foo\"}"; | ||
properties.getAdmin().getAuthentication().setPluginClassName("myclass"); | ||
properties.getAdmin().getAuthentication().setParam(params); | ||
PulsarAdminBuilder builder = mock(PulsarAdminBuilder.class); | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because we do not directly bring in a JSON library (e.g. Gson or Jackson) we can not use the simple facilities that these libs have to "encode a JSON string".
Here were the options:
Use JSON lib
Add required dependency on Jackson or Gson and use their built-in methods
Add feature to Spring Boot JsonParser
Add "encode a JSON string" to our
JsonParser
abstractionHand-roll basic encoder
Inline a simple encode JSON facility in the mapper.