Polish test class

This commit is contained in:
Rossen Stoyanchev 2016-02-19 11:28:57 -05:00
parent 700ab2fc98
commit 26575148a5
1 changed files with 38 additions and 52 deletions

View File

@ -18,9 +18,12 @@ package org.springframework.web.servlet.mvc.condition;
import java.util.Collections;
import javax.servlet.http.HttpServletRequest;
import org.junit.Test;
import org.springframework.mock.web.test.MockHttpServletRequest;
import org.springframework.web.bind.annotation.RequestMethod;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@ -28,6 +31,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
import static org.springframework.web.bind.annotation.RequestMethod.HEAD;
import static org.springframework.web.bind.annotation.RequestMethod.OPTIONS;
import static org.springframework.web.bind.annotation.RequestMethod.POST;
/**
@ -37,67 +41,36 @@ import static org.springframework.web.bind.annotation.RequestMethod.POST;
public class RequestMethodsRequestConditionTests {
@Test
public void methodMatch() {
RequestCondition condition = new RequestMethodsRequestCondition(GET);
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo");
assertNotNull(condition.getMatchingCondition(request));
public void getMatchingCondition() {
testMatch(new RequestMethodsRequestCondition(GET), GET);
testMatch(new RequestMethodsRequestCondition(GET, POST), GET);
testNoMatch(new RequestMethodsRequestCondition(GET), POST);
}
@Test
public void methodNoMatch() {
RequestCondition condition = new RequestMethodsRequestCondition(GET);
MockHttpServletRequest request = new MockHttpServletRequest("POST", "/foo");
assertNull(condition.getMatchingCondition(request));
public void getMatchingConditionWithHttpHead() {
testMatch(new RequestMethodsRequestCondition(HEAD), HEAD);
testMatch(new RequestMethodsRequestCondition(GET), HEAD);
testNoMatch(new RequestMethodsRequestCondition(POST), HEAD);
}
@Test
public void multipleMethodsMatch() {
RequestMethodsRequestCondition condition = new RequestMethodsRequestCondition(GET, POST);
MockHttpServletRequest request = new MockHttpServletRequest("GET", "/foo");
RequestMethodsRequestCondition actual = condition.getMatchingCondition(request);
assertNotNull(actual);
assertEquals(Collections.singleton(GET), actual.getContent());
public void getMatchingConditionWithEmptyConditions() {
RequestMethodsRequestCondition condition = new RequestMethodsRequestCondition();
for (RequestMethod method : RequestMethod.values()) {
if (!OPTIONS.equals(method)) {
HttpServletRequest request = new MockHttpServletRequest(method.name(), "");
assertNotNull(condition.getMatchingCondition(request));
}
}
testNoMatch(condition, OPTIONS);
}
@Test
public void methodHeadMatch() throws Exception {
RequestMethodsRequestCondition condition = new RequestMethodsRequestCondition(GET, POST);
MockHttpServletRequest request = new MockHttpServletRequest("HEAD", "/foo");
RequestMethodsRequestCondition actual = condition.getMatchingCondition(request);
assertNotNull(actual);
assertEquals("GET should also match HEAD", Collections.singleton(HEAD), actual.getContent());
}
@Test
public void methodHeadNoMatch() throws Exception {
RequestMethodsRequestCondition condition = new RequestMethodsRequestCondition(POST);
MockHttpServletRequest request = new MockHttpServletRequest("HEAD", "/foo");
RequestMethodsRequestCondition actual = condition.getMatchingCondition(request);
assertNull("HEAD should match only if GET is declared", actual);
}
@Test
public void emptyMatchesAnythingExceptHttpOptions() {
RequestCondition condition = new RequestMethodsRequestCondition();
assertNotNull(condition.getMatchingCondition(new MockHttpServletRequest("GET", "")));
assertNotNull(condition.getMatchingCondition(new MockHttpServletRequest("POST", "")));
assertNotNull(condition.getMatchingCondition(new MockHttpServletRequest("HEAD", "")));
assertNotNull(condition.getMatchingCondition(new MockHttpServletRequest("CUSTOM", "")));
assertNull(condition.getMatchingCondition(new MockHttpServletRequest("OPTIONS", "")));
}
@Test
public void unknownMethodType() throws Exception {
RequestCondition condition = new RequestMethodsRequestCondition(GET, POST);
MockHttpServletRequest request = new MockHttpServletRequest("PROPFIND", "/foo");
assertNull(condition.getMatchingCondition(request));
public void getMatchingConditionWithCustomMethod() {
HttpServletRequest request = new MockHttpServletRequest("PROPFIND", "");
assertNotNull(new RequestMethodsRequestCondition().getMatchingCondition(request));
assertNull(new RequestMethodsRequestCondition(GET, POST).getMatchingCondition(request));
}
@Test
@ -130,4 +103,17 @@ public class RequestMethodsRequestConditionTests {
assertEquals(2, result.getContent().size());
}
private void testMatch(RequestMethodsRequestCondition condition, RequestMethod method) {
MockHttpServletRequest request = new MockHttpServletRequest(method.name(), "");
RequestMethodsRequestCondition actual = condition.getMatchingCondition(request);
assertNotNull(actual);
assertEquals(Collections.singleton(method), actual.getContent());
}
private void testNoMatch(RequestMethodsRequestCondition condition, RequestMethod method) {
MockHttpServletRequest request = new MockHttpServletRequest(method.name(), "");
assertNull(condition.getMatchingCondition(request));
}
}