Skip to content

Commit

Permalink
Test Refactor (IdentityZoneResolvingMockMvcTest)
Browse files Browse the repository at this point in the history
- Don't use InjectedMockContextTest
- Use Junit5
- Use Parameterized Tests

[#163234874] https://www.pivotaltracker.com/story/show/163234874
  • Loading branch information
joshuatcasey committed Jan 15, 2019
1 parent e4333e0 commit eece6a3
Showing 1 changed file with 56 additions and 34 deletions.
Expand Up @@ -14,11 +14,15 @@


package org.cloudfoundry.identity.uaa.mock.zones; package org.cloudfoundry.identity.uaa.mock.zones;


import org.cloudfoundry.identity.uaa.mock.InjectedMockContextTest;
import org.cloudfoundry.identity.uaa.zone.IdentityZoneResolvingFilter; import org.cloudfoundry.identity.uaa.zone.IdentityZoneResolvingFilter;
import org.junit.After; import org.junit.jupiter.api.AfterEach;
import org.junit.Before; import org.junit.jupiter.api.BeforeEach;
import org.junit.Test; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.web.servlet.MockMvc;


import java.util.Arrays; import java.util.Arrays;
import java.util.HashSet; import java.util.HashSet;
Expand All @@ -27,52 +31,70 @@
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;


public class IdentityZoneResolvingMockMvcTest extends InjectedMockContextTest { @DefaultTestContext
class IdentityZoneResolvingMockMvcTest {


private Set<String> originalHostnames; private Set<String> originalHostnames;


@Before private MockMvc mockMvc;
public void storeSettings() { private IdentityZoneResolvingFilter identityZoneResolvingFilter;
originalHostnames = getWebApplicationContext().getBean(IdentityZoneResolvingFilter.class).getDefaultZoneHostnames();
@BeforeEach
void storeSettings(
@Autowired MockMvc mockMvc,
@Autowired IdentityZoneResolvingFilter identityZoneResolvingFilter
) {
this.mockMvc = mockMvc;
this.identityZoneResolvingFilter = identityZoneResolvingFilter;

originalHostnames = identityZoneResolvingFilter.getDefaultZoneHostnames();
} }


@After @AfterEach
public void restoreSettings() { void restoreSettings() {
getWebApplicationContext().getBean(IdentityZoneResolvingFilter.class).restoreDefaultHostnames(originalHostnames); identityZoneResolvingFilter.restoreDefaultHostnames(originalHostnames);
} }


@Test @Test
public void testSwitchingZones() throws Exception { void testSwitchingZones() throws Exception {
// Authenticate with new Client in new Zone // Authenticate with new Client in new Zone
getMockMvc().perform( mockMvc.perform(
get("/login") get("/login")
.header("Host", "testsomeother.ip.com") .header("Host", "testsomeother.ip.com")
) )
.andExpect(status().isOk()); .andExpect(status().isOk());
} }


@Test @Nested
public void testSwitchingZones_When_HostsConfigured() throws Exception { @DefaultTestContext
Set<String> hosts = new HashSet<>(Arrays.asList("localhost", "testsomeother.ip.com")); class WithCustomInternalHostnames {
getWebApplicationContext().getBean(IdentityZoneResolvingFilter.class).setDefaultInternalHostnames(hosts);
// Authenticate with new Client in new Zone
getMockMvc().perform(
get("/login")
.header("Host", "testsomeother.ip.com")
)
.andExpect(status().isOk());
getMockMvc().perform(
get("/login")
.header("Host", "localhost")
)
.andExpect(status().isOk());


getMockMvc().perform( @BeforeEach
get("/login") void setUp() {
.header("Host", "testsomeother2.ip.com") Set<String> hosts = new HashSet<>(Arrays.asList("localhost", "testsomeother.ip.com"));
) identityZoneResolvingFilter.setDefaultInternalHostnames(hosts);
.andExpect(status().isNotFound()); }
}


@ParameterizedTest
@ValueSource(strings = {"localhost", "testsomeother.ip.com"})
void isFound(String hostname) throws Exception {
// Authenticate with new Client in new Zone
mockMvc.perform(
get("/login")
.header("Host", hostname)
)
.andExpect(status().isOk());


}

@ParameterizedTest
@ValueSource(strings = {"notlocalhost", "testsomeother2.ip.com"})
void isNotFound(String hostname) throws Exception {
mockMvc.perform(
get("/login")
.header("Host", hostname)
)
.andExpect(status().isNotFound());
}
}
} }

0 comments on commit eece6a3

Please sign in to comment.