Skip to content

Commit

Permalink
Add optional parameter to identity-providers GET to retrieve only act…
Browse files Browse the repository at this point in the history
…ive IDPs

[#92876196] https://www.pivotaltracker.com/story/show/92876196

Signed-off-by: Madhura Bhave <mbhave@pivotal.io>
  • Loading branch information
mbhave committed Apr 21, 2015
1 parent a79b89f commit de1d439
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 11 deletions.
Expand Up @@ -14,15 +14,12 @@

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.cloudfoundry.identity.uaa.authentication.Origin;
import org.cloudfoundry.identity.uaa.authentication.manager.DynamicLdapAuthenticationManager;
import org.cloudfoundry.identity.uaa.authentication.manager.LdapLoginAuthenticationManager;
import org.cloudfoundry.identity.uaa.ldap.LdapIdentityProviderDefinition;
import org.cloudfoundry.identity.uaa.login.saml.IdentityProviderDefinition;
import org.cloudfoundry.identity.uaa.scim.ScimGroupExternalMembershipManager;
import org.cloudfoundry.identity.uaa.scim.ScimGroupProvisioning;
import org.cloudfoundry.identity.uaa.util.JsonUtils;
import org.cloudfoundry.identity.uaa.util.JsonUtils.JsonUtilException;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.authentication.BadCredentialsException;
Expand All @@ -32,6 +29,7 @@
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.io.PrintWriter;
Expand Down Expand Up @@ -85,8 +83,9 @@ public ResponseEntity<IdentityProvider> updateIdentityProvider(@PathVariable Str
}

@RequestMapping(method = GET)
public ResponseEntity<List<IdentityProvider>> retrieveIdentityProviders() {
List<IdentityProvider> identityProviderList = identityProviderProvisioning.retrieveAll(false,IdentityZoneHolder.get().getId());
public ResponseEntity<List<IdentityProvider>> retrieveIdentityProviders(@RequestParam(required = false) String retrieveActive) {
Boolean retrieveActiveIdps = Boolean.valueOf(retrieveActive);
List<IdentityProvider> identityProviderList = identityProviderProvisioning.retrieveAll(retrieveActiveIdps, IdentityZoneHolder.get().getId());
return new ResponseEntity<>(identityProviderList, OK);
}

Expand Down
Expand Up @@ -55,6 +55,7 @@

import static java.util.Arrays.asList;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.springframework.http.MediaType.APPLICATION_JSON;
Expand Down Expand Up @@ -152,6 +153,15 @@ public void testCreateSamlProvider() throws Exception {

@Test
public void testEnsureWeRetrieveInactiveIDPsToo() throws Exception {
testRetrieveIdps(false);
}

@Test
public void testRetrieveOnlyActiveIdps() throws Exception {
testRetrieveIdps(true);
}

private void testRetrieveIdps(boolean retrieveActive) throws Exception {
String clientId = RandomStringUtils.randomAlphabetic(6);
BaseClientDetails client = new BaseClientDetails(clientId,null,"idps.write,idps.read","password",null);
client.setClientSecret("test-client-secret");
Expand All @@ -163,11 +173,12 @@ public void testEnsureWeRetrieveInactiveIDPsToo() throws Exception {
IdentityProvider identityProvider = MultitenancyFixture.identityProvider(randomOriginKey, IdentityZone.getUaa().getId());
IdentityProvider createdIDP = createIdentityProvider(null, identityProvider, accessToken, status().isCreated());

MockHttpServletRequestBuilder requestBuilder = get("/identity-providers")
.header("Authorization", "Bearer" + accessToken)
.contentType(APPLICATION_JSON);
String retrieveActiveParam = retrieveActive ? "?retrieveActive=true" : "";
MockHttpServletRequestBuilder requestBuilder = get("/identity-providers" + retrieveActiveParam)
.header("Authorization", "Bearer" + accessToken)
.contentType(APPLICATION_JSON);

int numberOfIdps = identityProviderProvisioning.retrieveAll(false, IdentityZone.getUaa().getId()).size();
int numberOfIdps = identityProviderProvisioning.retrieveAll(retrieveActive, IdentityZone.getUaa().getId()).size();

MvcResult result = mockMvc.perform(requestBuilder).andExpect(status().isOk()).andReturn();
List<IdentityProvider> identityProviderList = JsonUtils.readValue(result.getResponse().getContentAsString(), new TypeReference<List<IdentityProvider>>() {});
Expand All @@ -180,8 +191,13 @@ public void testEnsureWeRetrieveInactiveIDPsToo() throws Exception {
result = mockMvc.perform(requestBuilder).andExpect(status().isOk()).andReturn();
identityProviderList = JsonUtils.readValue(result.getResponse().getContentAsString(), new TypeReference<List<IdentityProvider>>() {
});
assertEquals(numberOfIdps, identityProviderList.size());
assertTrue(identityProviderList.contains(createdIDP));
if (!retrieveActive) {
assertEquals(numberOfIdps, identityProviderList.size());
assertTrue(identityProviderList.contains(createdIDP));
} else {
assertEquals(numberOfIdps - 1, identityProviderList.size());
assertFalse(identityProviderList.contains(createdIDP));
}
}

private void createAndUpdateIdentityProvider(String accessToken, String zoneId) throws Exception {
Expand Down

0 comments on commit de1d439

Please sign in to comment.