Skip to content

Instantly share code, notes, and snippets.

@uttesh
Created September 5, 2012 16:41
Show Gist options
  • Save uttesh/3639614 to your computer and use it in GitHub Desktop.
Save uttesh/3639614 to your computer and use it in GitHub Desktop.
Spring REST web service test
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.client.RestTemplate;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@Test(enabled = false)
public class UserControllerTest {
private static final String REST_SERVICE_URL = "http://localhost:8080/*****/service/users";
@Autowired
private RestTemplate restTemplate;
@BeforeClass
protected void beforeClass() {
restTemplate = new RestTemplate();
}
public void create() {
createAndAssertUser();
}
private User createAndAssertUser() {
User user = new User();
user.setId(10L);
user.setName("utteshkumar");
user.setCompany("$$$$$$$");
user.setEmail("TTTTT@gmail.com");
user.setDesignation("Senior Software Engineer");
return createAndAssertUser(user);
}
private User createAndAssertUser(User user) {
User createdUser = null;
try{
createdUser = restTemplate.postForObject(REST_SERVICE_URL, user, User.class);
}catch (UniquenessViolationException e) {
duplicateRecord(e.getDescription(),user);
}
assertUserNoId(createdUser, user);
return createdUser;
}
@ExceptionHandler
private void duplicateRecord(String msg,User user){
System.out.println("\n user already exist with email : "+user.getEmail());
assertEquals(true,true);
}
private void assertUserNoId(User actual, User expected) {
assertTrue(actual.getId() > 0);
assertEquals(actual.getName(), expected.getName());
}
private void assertUser(User actual, User expected) {
assertTrue(actual.getId() > 0);
assertEquals(actual.getName(), expected.getName());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment