From e2a4ed846c46b5cf2b70b502b308ddc8818d7fe7 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Sirot Date: Mon, 30 Jun 2014 17:12:09 +0200 Subject: [PATCH] Fallback to Simple Registration 1.1 when version 1.0 is not available --- .../org/sonar/plugins/openid/OpenIdClient.java | 3 +++ .../sonar/plugins/openid/OpenIdClientTest.java | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/java/org/sonar/plugins/openid/OpenIdClient.java b/src/main/java/org/sonar/plugins/openid/OpenIdClient.java index 9d3b720..f60fb5a 100644 --- a/src/main/java/org/sonar/plugins/openid/OpenIdClient.java +++ b/src/main/java/org/sonar/plugins/openid/OpenIdClient.java @@ -192,6 +192,9 @@ static UserDetails toUser(AuthSuccess authSuccess) { String email = null; SRegResponse sr = OpenIdUtils.getMessageAs(SRegResponse.class, authSuccess, SRegMessage.OPENID_NS_SREG); + if (sr == null) { + sr = OpenIdUtils.getMessageAs(SRegResponse.class, authSuccess, SRegMessage.OPENID_NS_SREG11); + } if (sr != null) { name = sr.getAttributeValue(SREG_ATTR_FULLNAME); email = sr.getAttributeValue(SREG_ATTR_EMAIL); diff --git a/src/test/java/org/sonar/plugins/openid/OpenIdClientTest.java b/src/test/java/org/sonar/plugins/openid/OpenIdClientTest.java index aabc738..8ae2f06 100644 --- a/src/test/java/org/sonar/plugins/openid/OpenIdClientTest.java +++ b/src/test/java/org/sonar/plugins/openid/OpenIdClientTest.java @@ -134,6 +134,21 @@ public void toUserDetails_sreg_attributes() throws Exception { assertThat(user.getEmail()).isEqualTo("me@here.com"); } + @Test + public void toUserDetails_sreg11_attributes() throws Exception { + AuthSuccess authSuccess = mock(AuthSuccess.class); + when(authSuccess.hasExtension(SRegMessage.OPENID_NS_SREG11)).thenReturn(true); + SRegResponse sreg = SRegResponse.createFetchResponse(); + sreg.addAttribute("fullname", "Dee Dee MacCall"); + sreg.addAttribute("email", "deedee@maccall.com"); + when(authSuccess.getExtension(SRegMessage.OPENID_NS_SREG11)).thenReturn(sreg); + + UserDetails user = OpenIdClient.toUser(authSuccess); + + assertThat(user.getName()).isEqualTo("Dee Dee MacCall"); + assertThat(user.getEmail()).isEqualTo("deedee@maccall.com"); + } + @Test public void toUserDetails_missing_fields() throws Exception { AuthSuccess authSuccess = mock(AuthSuccess.class);