|
|
@ -1,5 +1,5 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright 2002-2010 the original author or authors. |
|
|
|
* Copyright 2002-2012 the original author or authors. |
|
|
|
* |
|
|
|
* |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
|
* you may not use this file except in compliance with the License. |
|
|
@ -16,38 +16,110 @@ |
|
|
|
|
|
|
|
|
|
|
|
package org.springframework.http; |
|
|
|
package org.springframework.http; |
|
|
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.*; |
|
|
|
import java.util.LinkedHashMap; |
|
|
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.Test; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import static org.junit.Assert.*; |
|
|
|
|
|
|
|
|
|
|
|
/** @author Arjen Poutsma */ |
|
|
|
/** @author Arjen Poutsma */ |
|
|
|
public class HttpStatusTests { |
|
|
|
public class HttpStatusTests { |
|
|
|
|
|
|
|
|
|
|
|
private int[] registryValues = |
|
|
|
private Map<Integer, String> statusCodes = new LinkedHashMap<Integer, String>(); |
|
|
|
new int[]{100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 304, 305, |
|
|
|
|
|
|
|
307, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 422, |
|
|
|
@Before |
|
|
|
423, 424, 426, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510,}; |
|
|
|
public void createStatusCodes() { |
|
|
|
|
|
|
|
statusCodes.put(100, "CONTINUE"); |
|
|
|
private String[] registryDescriptions = |
|
|
|
statusCodes.put(101, "SWITCHING_PROTOCOLS"); |
|
|
|
new String[]{"CONTINUE", "SWITCHING_PROTOCOLS", "PROCESSING", "OK", "CREATED", "ACCEPTED", |
|
|
|
statusCodes.put(102, "PROCESSING"); |
|
|
|
"NON_AUTHORITATIVE_INFORMATION", "NO_CONTENT", "RESET_CONTENT", "PARTIAL_CONTENT", "MULTI_STATUS", |
|
|
|
statusCodes.put(103, "CHECKPOINT"); |
|
|
|
"ALREADY_REPORTED", "IM_USED", "MULTIPLE_CHOICES", "MOVED_PERMANENTLY", "FOUND", "SEE_OTHER", |
|
|
|
|
|
|
|
"NOT_MODIFIED", "USE_PROXY", "TEMPORARY_REDIRECT", "BAD_REQUEST", "UNAUTHORIZED", |
|
|
|
statusCodes.put(200, "OK"); |
|
|
|
"PAYMENT_REQUIRED", "FORBIDDEN", "NOT_FOUND", "METHOD_NOT_ALLOWED", "NOT_ACCEPTABLE", |
|
|
|
statusCodes.put(201, "CREATED"); |
|
|
|
"PROXY_AUTHENTICATION_REQUIRED", "REQUEST_TIMEOUT", "CONFLICT", "GONE", "LENGTH_REQUIRED", |
|
|
|
statusCodes.put(202, "ACCEPTED"); |
|
|
|
"PRECONDITION_FAILED", "REQUEST_ENTITY_TOO_LARGE", "REQUEST_URI_TOO_LONG", "UNSUPPORTED_MEDIA_TYPE", |
|
|
|
statusCodes.put(203, "NON_AUTHORITATIVE_INFORMATION"); |
|
|
|
"REQUESTED_RANGE_NOT_SATISFIABLE", "EXPECTATION_FAILED", "UNPROCESSABLE_ENTITY", "LOCKED", |
|
|
|
statusCodes.put(204, "NO_CONTENT"); |
|
|
|
"FAILED_DEPENDENCY", "UPGRADE_REQUIRED", "INTERNAL_SERVER_ERROR", "NOT_IMPLEMENTED", "BAD_GATEWAY", |
|
|
|
statusCodes.put(205, "RESET_CONTENT"); |
|
|
|
"SERVICE_UNAVAILABLE", "GATEWAY_TIMEOUT", "HTTP_VERSION_NOT_SUPPORTED", "VARIANT_ALSO_NEGOTIATES", |
|
|
|
statusCodes.put(206, "PARTIAL_CONTENT"); |
|
|
|
"INSUFFICIENT_STORAGE", "LOOP_DETECTED", "NOT_EXTENDED",}; |
|
|
|
statusCodes.put(207, "MULTI_STATUS"); |
|
|
|
|
|
|
|
statusCodes.put(208, "ALREADY_REPORTED"); |
|
|
|
|
|
|
|
statusCodes.put(226, "IM_USED"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statusCodes.put(300, "MULTIPLE_CHOICES"); |
|
|
|
|
|
|
|
statusCodes.put(301, "MOVED_PERMANENTLY"); |
|
|
|
|
|
|
|
statusCodes.put(302, "FOUND"); |
|
|
|
|
|
|
|
statusCodes.put(303, "SEE_OTHER"); |
|
|
|
|
|
|
|
statusCodes.put(304, "NOT_MODIFIED"); |
|
|
|
|
|
|
|
statusCodes.put(305, "USE_PROXY"); |
|
|
|
|
|
|
|
statusCodes.put(307, "TEMPORARY_REDIRECT"); |
|
|
|
|
|
|
|
statusCodes.put(308, "RESUME_INCOMPLETE"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statusCodes.put(400, "BAD_REQUEST"); |
|
|
|
|
|
|
|
statusCodes.put(401, "UNAUTHORIZED"); |
|
|
|
|
|
|
|
statusCodes.put(402, "PAYMENT_REQUIRED"); |
|
|
|
|
|
|
|
statusCodes.put(403, "FORBIDDEN"); |
|
|
|
|
|
|
|
statusCodes.put(404, "NOT_FOUND"); |
|
|
|
|
|
|
|
statusCodes.put(405, "METHOD_NOT_ALLOWED"); |
|
|
|
|
|
|
|
statusCodes.put(406, "NOT_ACCEPTABLE"); |
|
|
|
|
|
|
|
statusCodes.put(407, "PROXY_AUTHENTICATION_REQUIRED"); |
|
|
|
|
|
|
|
statusCodes.put(408, "REQUEST_TIMEOUT"); |
|
|
|
|
|
|
|
statusCodes.put(409, "CONFLICT"); |
|
|
|
|
|
|
|
statusCodes.put(410, "GONE"); |
|
|
|
|
|
|
|
statusCodes.put(411, "LENGTH_REQUIRED"); |
|
|
|
|
|
|
|
statusCodes.put(412, "PRECONDITION_FAILED"); |
|
|
|
|
|
|
|
statusCodes.put(413, "REQUEST_ENTITY_TOO_LARGE"); |
|
|
|
|
|
|
|
statusCodes.put(414, "REQUEST_URI_TOO_LONG"); |
|
|
|
|
|
|
|
statusCodes.put(415, "UNSUPPORTED_MEDIA_TYPE"); |
|
|
|
|
|
|
|
statusCodes.put(416, "REQUESTED_RANGE_NOT_SATISFIABLE"); |
|
|
|
|
|
|
|
statusCodes.put(417, "EXPECTATION_FAILED"); |
|
|
|
|
|
|
|
statusCodes.put(418, "I_AM_A_TEAPOT"); |
|
|
|
|
|
|
|
statusCodes.put(419, "INSUFFICIENT_SPACE_ON_RESOURCE"); |
|
|
|
|
|
|
|
statusCodes.put(420, "METHOD_FAILURE"); |
|
|
|
|
|
|
|
statusCodes.put(421, "DESTINATION_LOCKED"); |
|
|
|
|
|
|
|
statusCodes.put(422, "UNPROCESSABLE_ENTITY"); |
|
|
|
|
|
|
|
statusCodes.put(423, "LOCKED"); |
|
|
|
|
|
|
|
statusCodes.put(424, "FAILED_DEPENDENCY"); |
|
|
|
|
|
|
|
statusCodes.put(426, "UPGRADE_REQUIRED"); |
|
|
|
|
|
|
|
statusCodes.put(428, "PRECONDITION_REQUIRED"); |
|
|
|
|
|
|
|
statusCodes.put(429, "TOO_MANY_REQUESTS"); |
|
|
|
|
|
|
|
statusCodes.put(431, "REQUEST_HEADER_FIELDS_TOO_LARGE"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statusCodes.put(500, "INTERNAL_SERVER_ERROR"); |
|
|
|
|
|
|
|
statusCodes.put(501, "NOT_IMPLEMENTED"); |
|
|
|
|
|
|
|
statusCodes.put(502, "BAD_GATEWAY"); |
|
|
|
|
|
|
|
statusCodes.put(503, "SERVICE_UNAVAILABLE"); |
|
|
|
|
|
|
|
statusCodes.put(504, "GATEWAY_TIMEOUT"); |
|
|
|
|
|
|
|
statusCodes.put(505, "HTTP_VERSION_NOT_SUPPORTED"); |
|
|
|
|
|
|
|
statusCodes.put(506, "VARIANT_ALSO_NEGOTIATES"); |
|
|
|
|
|
|
|
statusCodes.put(507, "INSUFFICIENT_STORAGE"); |
|
|
|
|
|
|
|
statusCodes.put(508, "LOOP_DETECTED"); |
|
|
|
|
|
|
|
statusCodes.put(509, "BANDWIDTH_LIMIT_EXCEEDED"); |
|
|
|
|
|
|
|
statusCodes.put(510, "NOT_EXTENDED"); |
|
|
|
|
|
|
|
statusCodes.put(511, "NETWORK_AUTHENTICATION_REQUIRED"); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void registryValues() { |
|
|
|
public void fromMapToEnum() { |
|
|
|
for (int i = 0; i < registryValues.length; i++) { |
|
|
|
for (Map.Entry<Integer, String> entry : statusCodes.entrySet()) { |
|
|
|
HttpStatus status = HttpStatus.valueOf(registryValues[i]); |
|
|
|
int value = entry.getKey(); |
|
|
|
assertEquals("Invalid value", registryValues[i], status.value()); |
|
|
|
HttpStatus status = HttpStatus.valueOf(value); |
|
|
|
assertEquals("Invalid descripion", registryDescriptions[i], status.name()); |
|
|
|
assertEquals("Invalid value", value, status.value()); |
|
|
|
|
|
|
|
assertEquals("Invalid name for [" + value + "]", entry.getValue(), status.name()); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
|
|
|
|
public void fromEnumToMap() { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (HttpStatus status : HttpStatus.values()) { |
|
|
|
|
|
|
|
int value = status.value(); |
|
|
|
|
|
|
|
if (value == 302) { |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
assertTrue("Map has no value for [" + value + "]", statusCodes.containsKey(value)); |
|
|
|
|
|
|
|
assertEquals("Invalid name for [" + value + "]", statusCodes.get(value), status.name()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|