Skip to content

Commit 8861e8c

Browse files
49 translate the modes (#50)
* add modes translation * Update the tests * Change Object.equals to string.equals
1 parent 2f2c390 commit 8861e8c

4 files changed

Lines changed: 23 additions & 5 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@
109109
<dependency>
110110
<groupId>org.slf4j</groupId>
111111
<artifactId>slf4j-simple</artifactId>
112-
<version>2.0.4</version>
112+
<version>2.0.5</version>
113113
<scope>test</scope>
114114
</dependency>
115115
</dependencies>

src/main/java/org/privacyidea/JSONParser.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import java.util.LinkedHashMap;
1313
import java.util.List;
1414
import java.util.Map;
15+
import java.util.Objects;
1516

1617
import static org.privacyidea.PIConstants.ASSERTIONCLIENTEXTENSIONS;
1718
import static org.privacyidea.PIConstants.ATTRIBUTES;
@@ -85,7 +86,7 @@ public String formatJson(String json)
8586
}
8687
catch (JsonSyntaxException e)
8788
{
88-
privacyIDEA.error(e);
89+
privacyIDEA.error(e.getMessage());
8990
return json;
9091
}
9192

@@ -185,7 +186,21 @@ public PIResponse parsePIResponse(String serverResponse)
185186
if (detailElem != null && !detailElem.isJsonNull())
186187
{
187188
JsonObject detail = obj.getAsJsonObject(DETAIL);
188-
response.preferredClientMode = getString(detail, PREFERRED_CLIENT_MODE);
189+
190+
// Translate some preferred client mode names
191+
String modeFromResponse = getString(detail, PREFERRED_CLIENT_MODE);
192+
if ("poll".equals(modeFromResponse))
193+
{
194+
response.preferredClientMode = "push";
195+
}
196+
else if ("interactive".equals(modeFromResponse))
197+
{
198+
response.preferredClientMode = "otp";
199+
}
200+
else
201+
{
202+
response.preferredClientMode = modeFromResponse;
203+
}
189204
response.message = getString(detail, MESSAGE);
190205
response.image = getString(detail, IMAGE);
191206
response.serial = getString(detail, SERIAL);

src/test/java/org/privacyidea/TestPollTransaction.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public void testPushSynchronous() throws InterruptedException
5454
mockServer.when(HttpRequest.request().withMethod("POST").withPath("/validate/check")
5555
.withBody("user=" + username + "&pass=")).respond(
5656
HttpResponse.response().withContentType(MediaType.APPLICATION_JSON).withBody(
57-
"{\n" + " \"detail\": {\n" + " \"attributes\": null,\n" +
57+
"{\n" + " \"detail\": {\n" + " \"preferred_client_mode\": \"poll\",\n" + " \"attributes\": null,\n" +
5858
" \"message\": \"Bitte geben Sie einen OTP-Wert ein: , Please confirm the authentication on your mobile device!\",\n" +
5959
" \"messages\": [\n" + " \"Bitte geben Sie einen OTP-Wert ein: \",\n" +
6060
" \"Please confirm the authentication on your mobile device!\"\n" + " ],\n" +
@@ -90,6 +90,8 @@ public void testPushSynchronous() throws InterruptedException
9090
assertEquals("", hotpChallenge.getImage());
9191
assertTrue(hotpChallenge.getAttributes().isEmpty());
9292

93+
assertEquals("push", initialResponse.preferredClientMode);
94+
9395
Challenge pushChallenge = challenges.stream().filter(c -> c.getSerial().equals("PIPU0001F75E")).findFirst()
9496
.orElse(null);
9597
assertNotNull(pushChallenge);

src/test/java/org/privacyidea/TestTriggerChallenge.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public void setup()
4848
@Test
4949
public void testTriggerChallengeSuccess()
5050
{
51-
String response = "{\"detail\":{" + "\"attributes\":null," + "\"message\":\"BittegebenSieeinenOTP-Wertein:\"," +
51+
String response = "{\"detail\":{" + "\"preferred_client_mode\":\"interactive\"," + "\"attributes\":null," + "\"message\":\"BittegebenSieeinenOTP-Wertein:\"," +
5252
"\"messages\":[\"BittegebenSieeinenOTP-Wertein:\"]," + "\"multi_challenge\":[{" +
5353
"\"attributes\":null," + "\"message\":\"BittegebenSieeinenOTP-Wertein:\"," +
5454
"\"serial\":\"TOTP00021198\"," + "\"transaction_id\":\"16734787285577957577\"," +
@@ -91,6 +91,7 @@ public void testTriggerChallengeSuccess()
9191
String username = "testuser";
9292
PIResponse responseTriggerChallenge = privacyIDEA.triggerChallenges(username);
9393

94+
assertEquals("otp", responseTriggerChallenge.preferredClientMode);
9495
assertEquals(1, responseTriggerChallenge.id);
9596
assertEquals("BittegebenSieeinenOTP-Wertein:", responseTriggerChallenge.message);
9697
assertEquals("2.0", responseTriggerChallenge.jsonRPCVersion);

0 commit comments

Comments
 (0)