package org.rapidoid.http;
/*
* #%L
* rapidoid-web
* %%
* Copyright (C) 2014 - 2017 Nikolche Mihajlovski and contributors
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import org.junit.Test;
import org.rapidoid.annotation.*;
import org.rapidoid.setup.App;
import org.rapidoid.u.U;
import java.util.Date;
@Authors("Nikolche Mihajlovski")
@Since("5.0.12")
public class HttpPojoApiTest extends HttpTestCommons {
@Test
public void test1() {
App.beans(new Object() {
public String test1() {
return "not annotated";
}
});
notFound("/");
notFound("/test1");
}
@Test
public void test2() {
App.beans(new Object() {
@GET
public Object test2() {
return 123.456;
}
});
notFound("/");
onlyGet("/test2");
}
@Test
public void test3() {
App.beans(new Object() {
@POST
public Object test3() {
return "ABC DE";
}
});
notFound("/");
onlyPost("/test3");
}
@Test
public void test4() {
App.beans(new Object() {
@PUT
public int test4() {
return 12345;
}
});
notFound("/");
onlyPut("/test4");
}
@Test
public void test5() {
App.beans(new Object() {
@DELETE
public boolean test5() {
return true;
}
});
notFound("/");
onlyDelete("/test5");
}
@Test
public void test6() {
App.beans(new Object() {
@GET
public Object test6(Req req, Resp resp) {
return U.map("a", 1, "b", 2);
}
});
notFound("/");
onlyGet("/test6");
}
@Test
public void test7() {
App.beans(new Object() {
@POST
public Object test7(Req req, Resp resp) {
return U.list("a", 123, true);
}
});
notFound("/");
onlyPost("/test7");
}
@Test
public void test8() {
App.beans(new Object() {
@PUT
public Object test8(Req req, Resp resp) {
return U.set("b", 0, false);
}
});
notFound("/");
onlyPut("/test8");
}
@Test
public void test9() {
App.beans(new Object() {
@DELETE
public Date test9(Req req, Resp resp) {
return new Date(50505050);
}
});
notFound("/");
onlyDelete("/test9");
}
static class Ctrl1 {
@GET
public Object x(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
Object y(Req req, Resp resp) {
return reqResp(req, resp);
}
@Page(raw = true)
Object p(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
protected Object z(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
private Object w(Req req, Resp resp) {
return reqResp(req, resp);
}
}
@Test
public void test10() {
App.beans(new Ctrl1());
notFound("/");
onlyGet("/x");
onlyPost("/y");
getAndPost("/p");
notFound("/z");
notFound("/w");
}
@Test
public void test11() {
App.beans(Ctrl1.class);
notFound("/");
onlyGet("/x");
onlyPost("/y");
getAndPost("/p");
notFound("/z");
notFound("/w");
}
class Ctrl2 {
@GET
public Object x(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
Object y(Req req, Resp resp) {
return reqResp(req, resp);
}
@Page(raw = true)
Object p(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
protected Object z(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
private Object w(Req req, Resp resp) {
return reqResp(req, resp);
}
}
@Test
public void test12() {
App.beans(new Ctrl2());
notFound("/");
onlyGet("/x");
onlyPost("/y");
getAndPost("/p");
notFound("/z");
notFound("/w");
}
@Test
public void test13() {
class Ctrl3 {
@GET
public Object x(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
Object y(Req req, Resp resp) {
return reqResp(req, resp);
}
@Page(raw = true)
Object p(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
protected Object z(Req req, Resp resp) {
return reqResp(req, resp);
}
@POST
private Object w(Req req, Resp resp) {
return reqResp(req, resp);
}
}
App.beans(new Ctrl3());
notFound("/");
onlyGet("/x");
onlyPost("/y");
getAndPost("/p");
notFound("/z");
notFound("/w");
}
}