mirror of
https://github.com/etesync/android
synced 2025-07-03 21:32:36 +00:00

* use ical4j/2.0.x instead of 1.0.x (thanks @benfortuna) * use Apache Commons 3.x instead of 2.x * code optimizations
84 lines
2.9 KiB
Java
84 lines
2.9 KiB
Java
/*
|
||
* Copyright © 2013 – 2015 Ricki Hirner (bitfire web engineering).
|
||
* All rights reserved. This program and the accompanying materials
|
||
* are made available under the terms of the GNU Public License v3.0
|
||
* which accompanies this distribution, and is available at
|
||
* http://www.gnu.org/licenses/gpl.html
|
||
*/
|
||
|
||
package at.bitfire.davdroid.webdav;
|
||
|
||
import junit.framework.TestCase;
|
||
|
||
import org.apache.http.HttpResponse;
|
||
import org.apache.http.client.methods.HttpOptions;
|
||
import org.apache.http.client.methods.HttpUriRequest;
|
||
import org.apache.http.client.protocol.HttpClientContext;
|
||
import org.apache.http.impl.client.CloseableHttpClient;
|
||
import org.apache.http.impl.client.HttpClientBuilder;
|
||
import org.apache.http.protocol.HttpContext;
|
||
|
||
import java.io.IOException;
|
||
|
||
import at.bitfire.davdroid.TestConstants;
|
||
|
||
public class DavRedirectStrategyTest extends TestCase {
|
||
|
||
CloseableHttpClient httpClient;
|
||
final DavRedirectStrategy strategy = DavRedirectStrategy.INSTANCE;
|
||
|
||
@Override
|
||
protected void setUp() {
|
||
httpClient = HttpClientBuilder.create()
|
||
.useSystemProperties()
|
||
.disableRedirectHandling()
|
||
.build();
|
||
}
|
||
|
||
@Override
|
||
protected void tearDown() throws IOException {
|
||
httpClient.close();
|
||
}
|
||
|
||
|
||
// happy cases
|
||
|
||
public void testNonRedirection() throws Exception {
|
||
HttpUriRequest request = new HttpOptions(TestConstants.roboHydra);
|
||
HttpResponse response = httpClient.execute(request);
|
||
assertFalse(strategy.isRedirected(request, response, null));
|
||
}
|
||
|
||
public void testDefaultRedirection() throws Exception {
|
||
final String newLocation = "/new-location";
|
||
|
||
HttpContext context = HttpClientContext.create();
|
||
HttpUriRequest request = new HttpOptions(TestConstants.roboHydra.resolve("redirect/301?to=" + newLocation));
|
||
HttpResponse response = httpClient.execute(request, context);
|
||
assertTrue(strategy.isRedirected(request, response, context));
|
||
|
||
HttpUriRequest redirected = strategy.getRedirect(request, response, context);
|
||
assertEquals(TestConstants.roboHydra.resolve(newLocation), redirected.getURI());
|
||
}
|
||
|
||
|
||
// error cases
|
||
|
||
public void testMissingLocation() throws Exception {
|
||
HttpContext context = HttpClientContext.create();
|
||
HttpUriRequest request = new HttpOptions(TestConstants.roboHydra.resolve("redirect/without-location"));
|
||
HttpResponse response = httpClient.execute(request, context);
|
||
assertFalse(strategy.isRedirected(request, response, context));
|
||
}
|
||
|
||
public void testRelativeLocation() throws Exception {
|
||
HttpContext context = HttpClientContext.create();
|
||
HttpUriRequest request = new HttpOptions(TestConstants.roboHydra.resolve("redirect/relative"));
|
||
HttpResponse response = httpClient.execute(request, context);
|
||
assertTrue(strategy.isRedirected(request, response, context));
|
||
|
||
HttpUriRequest redirected = strategy.getRedirect(request, response, context);
|
||
assertEquals(TestConstants.roboHydra.resolve("/new/location"), redirected.getURI());
|
||
}
|
||
}
|