blob: d8376e5e1627d34b2cbaeadd7029f43fe710d93b [file] [log] [blame]
package org.apache.juneau.petstore;
import static org.apache.juneau.http.HttpMethodName.DELETE;
import static org.apache.juneau.http.HttpMethodName.GET;
import static org.apache.juneau.http.HttpMethodName.POST;
import static org.apache.juneau.http.HttpMethodName.PUT;
import static org.apache.juneau.http.response.Ok.OK;
import org.apache.juneau.http.annotation.Body;
import org.apache.juneau.http.exception.NotAcceptable;
import org.apache.juneau.http.exception.UnsupportedMediaType;
import org.apache.juneau.http.response.Ok;
import org.apache.juneau.json.JsonParser;
import org.apache.juneau.json.JsonSerializer;
import org.apache.juneau.petstore.dto.CreateOrder;
import org.apache.juneau.petstore.dto.CreatePet;
import org.apache.juneau.petstore.dto.IdConflict;
import org.apache.juneau.petstore.dto.IdNotFound;
import org.apache.juneau.petstore.dto.InvalidId;
import org.apache.juneau.petstore.dto.InvalidTag;
import org.apache.juneau.petstore.dto.InvalidUsername;
import org.apache.juneau.petstore.dto.PetStatus;
import org.apache.juneau.petstore.dto.Species;
import org.apache.juneau.petstore.dto.UpdatePet;
import org.apache.juneau.petstore.dto.User;
import org.apache.juneau.petstore.dto.UserStatus;
import org.apache.juneau.rest.annotation.Rest;
import org.apache.juneau.rest.annotation.RestMethod;
import org.apache.juneau.rest.mock2.MockRest;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { App.class })
@SpringBootTest
public class MockTest {
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Pets
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Getting all pets
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class GetPetsMockRest {
@RestMethod(name = GET, path = "/pet", summary = "All pets in the store")
public Ok getPets() throws NotAcceptable {
return OK;
}
}
@Test
public void testGettingPets() throws Exception {
MockRest
.build(GetPetsMockRest.class)
.get("/pet")
.execute()
.assertStatus(200);
}
// Updating pet
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class UpdatePetMockRest {
@RestMethod(name = PUT, path = "/pet/{petId}", summary = "Update an existing pet")
public UpdatePet echo(@Body UpdatePet pet) throws IdNotFound, NotAcceptable, UnsupportedMediaType {
return pet;
}
}
@Test
public void testUpdatePet() throws Exception {
UpdatePet pet = new UpdatePet(1, "Rocky", 100, Species.DOG, null, null);
MockRest
.build(UpdatePetMockRest.class)
.put("/pet/1", pet)
.execute()
.assertStatus(200)
.assertBody(pet.toString());
}
// Posting pet (doesn`t work)
/*
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class PostPetMockRest {
@RestMethod(name = POST, path = "/pet", summary = "Add a new pet to the store")
public Ok echo(@Body CreatePet pet) throws IdConflict, NotAcceptable, UnsupportedMediaType {
return OK;
}
@Test
public void testPostPet() throws Exception {
CreatePet pet = new CreatePet("Sunshine", 100, Species.BIRD, null);
MockRest
.build(PostPetMockRest.class)
.post("/pet", pet)
.execute()
.assertStatus(200)
.assertBody(pet.toString());
}
*/
// Delete pet by Id
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class DeletePetMockRest {
@RestMethod(name = DELETE, path = "/pet/{petId}", summary = "Deletes a pet"
)
public Ok deletePet(@Body long petId) throws IdNotFound, NotAcceptable {
return OK;
}
}
@Test
public void testDeletePet() throws Exception {
MockRest
.build(DeletePetMockRest.class)
.delete("/pet/1")
.execute()
.assertStatus(200)
.assertBody("1");
}
// Find pet by Id
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class FindPetByIdMockRest {
@RestMethod(name = GET, path = "/pet/{petId}", summary = "Find pet by ID", description = "Returns a single pet"
)
public Ok getPet(@Body long petId) throws IdNotFound, NotAcceptable {
return OK;
}
}
@Test
public void testfindPet() throws Exception {
MockRest
.build(FindPetByIdMockRest.class)
.get("/pet/1")
.execute()
.assertStatus(200)
.assertBody("1");
}
// Find pet by status
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class FindPetByStatusMockRest {
@RestMethod(name = GET, path = "/pet/findByStatus", summary = "Finds Pets by status"
)
public Ok findPetsByStatus(@Body PetStatus[] status) throws NotAcceptable {
return OK;
}
}
@Test
public void testfindPetByStatus() throws Exception {
PetStatus[] status = { PetStatus.AVAILABLE };
MockRest
.build(FindPetByStatusMockRest.class)
.request("GET", "/pet/findByStatus", status)
.execute()
.assertStatus(200)
.assertBodyContains(status.toString());
}
// Find pet by tags
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class FindPetByTagsMockRest {
@RestMethod(name = GET, path = "/pet/findByTags", summary = "Finds Pets by tags"
)
public Ok findPetsByTags(@Body PetStatus[] tags) throws InvalidTag, NotAcceptable {
return OK;
}
}
@Test
public void testFindPetByTags() throws Exception {
String[] tags = { "nice", "friendly" };
MockRest
.build(FindPetByTagsMockRest.class)
.request("GET", "/pet/findByTags", tags)
.execute()
.assertStatus(200)
.assertBodyContains(tags);
}
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Orders
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Getting all orders
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class GetOrdersMockRest {
@RestMethod(name = GET, path = "/store/order", summary = "Petstore orders"
)
public Ok getOrders() throws NotAcceptable {
return OK;
}
}
@Test
public void testGettingOrders() throws Exception {
MockRest
.build(GetOrdersMockRest.class)
.get("/store/order")
.execute()
.assertStatus(200);
}
// Find order by Id
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class FindOrderByIdMockRest {
@RestMethod(name = GET, path = "/store/order/{orderId}", summary = "Find purchase order by ID"
)
public Ok getOrder(@Body long orderId) throws InvalidId, IdNotFound, NotAcceptable {
if (orderId < 1 || orderId > 1000)
throw new InvalidId();
return OK;
}
}
@Test
public void testfindOrder() throws Exception {
MockRest
.build(FindOrderByIdMockRest.class)
.get("/store/order/1")
.execute()
.assertStatus(200)
.assertBody("1");
}
// Posting order
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class PostOrderMockRest {
@RestMethod(name = POST, path = "/store/order", summary = "Place an order for a pet"
)
public Ok placeOrder(@Body long petId, @Body String username)
throws IdConflict, NotAcceptable, UnsupportedMediaType {
return OK;
}
}
@Test
public void testPostOrder() throws Exception {
CreateOrder co = new CreateOrder(123, "MyOrder");
MockRest
.build(PostOrderMockRest.class)
.post("/store/order", co)
.execute()
.assertStatus(200)
.assertBody(co.toString());
}
// Delete order by Id
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class DeleteOrderMockRest {
@RestMethod(name = DELETE, path = "/store/order/{orderId}", summary = "Delete purchase order by ID"
)
public Ok deleteOrder(@Body long orderId) throws InvalidId, IdNotFound, NotAcceptable {
if (orderId < 0)
throw new InvalidId();
return OK;
}
}
@Test
public void testDeleteOrder() throws Exception {
MockRest
.build(DeleteOrderMockRest.class)
.delete("/store/order/1")
.execute()
.assertStatus(200)
.assertBody("1");
}
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Users
// -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Getting all users
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class GetUsersMockRest {
@RestMethod(name = GET, path = "/user", summary = "Petstore users"
)
public Ok getUsers() throws NotAcceptable {
return OK;
}
}
@Test
public void testGettingUsers() throws Exception {
MockRest
.build(GetUsersMockRest.class)
.get("/user")
.execute()
.assertStatus(200);
}
// Get user by user name
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class FindUserByUserNameMockRest {
@RestMethod(name = GET, path = "/user/{username}", summary = "Get user by user name"
)
public Ok getUser(@Body String username) throws InvalidUsername, IdNotFound, NotAcceptable {
return OK;
}
}
@Test
public void testFindUserByName() throws Exception {
MockRest
.build(FindPetByTagsMockRest.class)
.get("/user/Mister")
.execute()
.assertStatus(200)
.assertBody("Mister");
}
// Create user
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class CreateUserMockRest {
@RestMethod(name = POST, path = "/user", summary = "Create user"
)
public Ok createUser(User user) throws InvalidUsername, IdConflict, NotAcceptable, UnsupportedMediaType {
return OK;
}
}
@Test
public void testCreateUser() throws Exception {
User user = new User()
.username("billy")
.firstName("Billy")
.lastName("Bob")
.email("billy@apache.org")
.userStatus(UserStatus.ACTIVE)
.phone("111-222-3333");
MockRest
.build(CreateUserMockRest.class)
.post("/user", user)
.execute()
.assertStatus(200)
.assertBody(user.toString());
}
// Create list of users
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class CreateListOfUsersMockRest {
@RestMethod(name = POST, path = "/user/createWithArray", summary = "Creates list of users with given input array"
)
public Ok createUsers(@Body User[] users)
throws InvalidUsername, IdConflict, NotAcceptable, UnsupportedMediaType {
return OK;
}
}
@Test
public void testCreateUsers() throws Exception {
User user1 = new User()
.username("billy")
.firstName("Billy")
.lastName("Bob")
.email("billy@apache.org")
.userStatus(UserStatus.ACTIVE)
.phone("111-222-3333");
User user2 = new User()
.username("peter")
.firstName("Peter")
.lastName("Adams")
.email("peter@apache.org")
.userStatus(UserStatus.ACTIVE)
.phone("154-222-3333");
User[] users = { user1, user2 };
MockRest
.build(CreateUserMockRest.class)
.post("/user/createWithArray", users)
.execute()
.assertStatus(200)
.assertBody(users.toString());
}
// Updating user
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class UpdateUserMockRest {
@RestMethod(name = PUT, path = "/user/{username}", summary = "Update user")
public Ok updateUser(@Body String username, @Body User user)
throws InvalidUsername, IdNotFound, NotAcceptable, UnsupportedMediaType {
return OK;
}
}
@Test
public void testUpdateUser() throws Exception {
User user = new User().username("Mister").phone("544-226-343");
MockRest
.build(UpdateUserMockRest.class)
.put("/user/Mister", user)
.execute()
.assertStatus(200)
.assertBody(user.toString());
}
// Delete user
@Rest(serializers = JsonSerializer.class, parsers = JsonParser.class)
public static class DeleteUserMockRest {
@RestMethod(name = DELETE, path = "/user/{username}", summary = "Delete user")
public Ok deleteUser(@Body String username) throws InvalidUsername, IdNotFound, NotAcceptable {
return OK;
}
}
@Test
public void testDeleteUser() throws Exception {
MockRest
.build(DeleteUserMockRest.class)
.delete("/user/John")
.execute()
.assertStatus(200)
.assertBody("John");
}
}