Skip to content

Commit

Permalink
TkMethods now returns 405 on unsupported method #861
Browse files Browse the repository at this point in the history
  • Loading branch information
victornoel committed Dec 1, 2018
1 parent 6146d34 commit e6fc4cf
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
14 changes: 13 additions & 1 deletion src/main/java/org/takes/facets/fork/TkMethods.java
Expand Up @@ -23,9 +23,12 @@
*/
package org.takes.facets.fork;

import java.net.HttpURLConnection;
import java.util.Arrays;
import lombok.ToString;
import org.takes.HttpException;
import org.takes.Take;
import org.takes.tk.TkFailure;
import org.takes.tk.TkWrap;

/**
Expand All @@ -46,7 +49,16 @@ public class TkMethods extends TkWrap {
*/
public TkMethods(final Take take, final String ...methods) {
super(
new TkFork(new FkMethods(Arrays.asList(methods), take))
new TkFork(
new FkMethods(Arrays.asList(methods), take),
new FkFixed(
new TkFailure(
() -> new HttpException(
HttpURLConnection.HTTP_BAD_METHOD
)
)
)
)
);
}
}
20 changes: 20 additions & 0 deletions src/test/java/org/takes/facets/fork/TkMethodsTest.java
Expand Up @@ -23,14 +23,19 @@
*/
package org.takes.facets.fork;

import com.jcabi.http.request.JdkRequest;
import com.jcabi.http.response.RestResponse;
import java.io.IOException;
import java.net.HttpURLConnection;
import org.junit.Test;
import org.mockito.Mockito;
import org.takes.HttpException;
import org.takes.Request;
import org.takes.Take;
import org.takes.http.FtRemote;
import org.takes.rq.RqFake;
import org.takes.rq.RqMethod;
import org.takes.tk.TkEmpty;

/**
* Test case for {@link TkMethods}.
Expand Down Expand Up @@ -62,4 +67,19 @@ public void throwsExceptionOnActinOnUnproperMethod() throws
new RqFake(RqMethod.GET)
);
}

/**
* TkMethods can return 405 status when acting on unknown method.
* @throws IOException If any I/O error occurs
*/
@Test
public void returnsMethodIsNotAllowedForUnsupportedMethods() throws
IOException {
new FtRemote(new TkMethods(new TkEmpty(), RqMethod.PUT)).exec(
url -> new JdkRequest(url)
.method(RqMethod.POST)
.fetch().as(RestResponse.class)
.assertStatus(HttpURLConnection.HTTP_BAD_METHOD)
);
}
}

0 comments on commit e6fc4cf

Please sign in to comment.