/*
* *****************************************************************************
* Cloud Foundry
* Copyright (c) [2009-2015] Pivotal Software, Inc. All Rights Reserved.
* This product is licensed to you under the Apache License, Version 2.0 (the "License").
* You may not use this product except in compliance with the License.
*
* This product includes a number of subcomponents with
* separate copyright notices and license terms. Your use of these
* subcomponents is subject to the terms and conditions of the
* subcomponent's license, as noted in the LICENSE file.
* *****************************************************************************
*/
package org.cloudfoundry.identity.uaa.config;
import org.cloudfoundry.identity.uaa.util.JsonUtils;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneConfiguration;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.Collections;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.springframework.http.HttpHeaders.ACCEPT;
import static org.springframework.http.HttpHeaders.AUTHORIZATION;
import static org.springframework.http.HttpHeaders.CONTENT_TYPE;
import static org.springframework.http.HttpMethod.GET;
import static org.springframework.http.HttpMethod.POST;
public class IdentityZoneConfigurationTests {
private IdentityZoneConfiguration definition;
@Before
public void configure() {
definition = new IdentityZoneConfiguration();
}
@Test
public void test_want_assertion_signed_setters() {
assertTrue(definition.getSamlConfig().isRequestSigned());
definition = JsonUtils.readValue(JsonUtils.writeValueAsString(definition), IdentityZoneConfiguration.class);
assertTrue(definition.getSamlConfig().isRequestSigned());
definition.getSamlConfig().setRequestSigned(false);
assertFalse(definition.getSamlConfig().isRequestSigned());
}
@Test
public void test_request_signed_setters() {
assertTrue(definition.getSamlConfig().isWantAssertionSigned());
definition = JsonUtils.readValue(JsonUtils.writeValueAsString(definition), IdentityZoneConfiguration.class);
assertTrue(definition.getSamlConfig().isWantAssertionSigned());
definition.getSamlConfig().setWantAssertionSigned(false);
assertFalse(definition.getSamlConfig().isWantAssertionSigned());
}
@Test
public void testDeserialize_Without_SamlConfig() {
String s = JsonUtils.writeValueAsString(definition);
s = s.replace(",\"samlConfig\":{\"requestSigned\":false,\"wantAssertionSigned\":true}","");
definition = JsonUtils.readValue(s, IdentityZoneConfiguration.class);
assertTrue(definition.getSamlConfig().isRequestSigned());
assertTrue(definition.getSamlConfig().isWantAssertionSigned());
definition.getSamlConfig().setWantAssertionSigned(true);
definition.getSamlConfig().setRequestSigned(true);
s = JsonUtils.writeValueAsString(definition);
definition = JsonUtils.readValue(s, IdentityZoneConfiguration.class);
assertTrue(definition.getSamlConfig().isRequestSigned());
assertTrue(definition.getSamlConfig().isWantAssertionSigned());
definition.getSamlConfig().setWantAssertionSigned(false);
definition.getSamlConfig().setRequestSigned(false);
s = JsonUtils.writeValueAsString(definition);
definition = JsonUtils.readValue(s, IdentityZoneConfiguration.class);
assertFalse(definition.getSamlConfig().isRequestSigned());
assertFalse(definition.getSamlConfig().isWantAssertionSigned());
}
@Test
public void testDeserialize_With_SamlConfig() {
String s = JsonUtils.writeValueAsString(definition);
s = s.replace("\"wantAssertionSigned\":true","\"wantAssertionSigned\":false");
definition = JsonUtils.readValue(s, IdentityZoneConfiguration.class);
assertTrue(definition.getSamlConfig().isRequestSigned());
assertFalse(definition.getSamlConfig().isWantAssertionSigned());
}
@Test
public void testDefaultCorsConfiguration() {
assertEquals(Arrays.asList(new String[] {ACCEPT, AUTHORIZATION, CONTENT_TYPE}), definition.getCorsPolicy().getDefaultConfiguration().getAllowedHeaders());
assertEquals(Arrays.asList(GET.toString()), definition.getCorsPolicy().getDefaultConfiguration().getAllowedMethods());
assertEquals(Arrays.asList(".*"), definition.getCorsPolicy().getDefaultConfiguration().getAllowedUris());
assertEquals(Collections.EMPTY_LIST, definition.getCorsPolicy().getDefaultConfiguration().getAllowedUriPatterns());
assertEquals(Arrays.asList(".*"), definition.getCorsPolicy().getDefaultConfiguration().getAllowedOrigins());
assertEquals(Collections.EMPTY_LIST, definition.getCorsPolicy().getDefaultConfiguration().getAllowedOriginPatterns());
assertEquals(1728000, definition.getCorsPolicy().getDefaultConfiguration().getMaxAge());
}
@Test
public void testDeserialize_DefaultCorsConfiguration() {
String s = JsonUtils.writeValueAsString(definition);
s = s.replace("\"allowedHeaders\":"+String.format("[\"%s\",\"%s\",\"%s\"]", ACCEPT, AUTHORIZATION, CONTENT_TYPE), "\"allowedHeaders\":[\"" + ACCEPT +"\"]" );
s = s.replace("\"allowedMethods\":"+String.format("[\"%s\"]", GET.toString()), "\"allowedMethods\":" +String.format("[\"%s\",\"%s\"]",GET.toString(), POST.toString()));
s = s.replace("\"allowedOrigins\":[\".*\"]", "\"allowedOrigins\":[\"^localhost$\",\"^.*\\\\.localhost$\"]" );
s = s.replace("\"allowedUris\":[\".*\"]", "\"allowedUris\":[\"^/uaa/userinfo$\",\"^/uaa/logout\\\\.do$\"]");
definition = JsonUtils.readValue(s, IdentityZoneConfiguration.class);
assertEquals(Arrays.asList(new String[] {ACCEPT}), definition.getCorsPolicy().getDefaultConfiguration().getAllowedHeaders());
assertEquals(Arrays.asList(new String[] {GET.toString(), POST.toString()}), definition.getCorsPolicy().getDefaultConfiguration().getAllowedMethods());
assertEquals(Arrays.asList(new String[] {"^/uaa/userinfo$", "^/uaa/logout\\.do$"}), definition.getCorsPolicy().getDefaultConfiguration().getAllowedUris());
assertEquals(Collections.EMPTY_LIST, definition.getCorsPolicy().getDefaultConfiguration().getAllowedUriPatterns());
assertEquals(Arrays.asList(new String[] {"^localhost$", "^.*\\.localhost$"}), definition.getCorsPolicy().getDefaultConfiguration().getAllowedOrigins());
assertEquals(Collections.EMPTY_LIST, definition.getCorsPolicy().getDefaultConfiguration().getAllowedOriginPatterns());
assertEquals(1728000, definition.getCorsPolicy().getDefaultConfiguration().getMaxAge());
}
}