testresttemplate - srujanabala/springboot-couchbase GitHub Wiki
POST: HttpEntity entity = new HttpEntity(new Student("101", "rja", 5);
package com.example.rest;
import static org.junit.Assert.assertEquals;
import java.util.ArrayList; import java.util.List;
import org.json.JSONException; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.web.server.LocalServerPort; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.SpringRunner;
import com.example.CouchBaseApplication; import com.example.model.Student; import com.example.repository.UserRepository;
@RunWith(SpringRunner.class)) @SpringBootTest(classes = CouchBaseApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ViewControllerTest {
@LocalServerPort
private int port;
@Autowired
private UserRepository userRepository;
@Autowired
private ViewController viewController;
private TestRestTemplate testRestTemplate = new TestRestTemplate();
List<Student> students = new ArrayList<>();
HttpHeaders headers = new HttpHeaders();
HttpEntity<String> entity = new HttpEntity<String>(null, headers);
@Before
public void setup() {
Student student = new Student("101", "Sapthika", 2);
students.add(student);
Student student2 = new Student("101", "Sapthika", 2);
students.add(student2);
}
private String createURLWithPort(String uri) {
return "http://localhost:" + port + uri;
}
@Test
public void testAddNew() throws JSONException {
ResponseEntity<Iterable<Student>> response = testRestTemplate.exchange(
createURLWithPort("/get/{name}"),
HttpMethod.GET, entity, new ParameterizedTypeReference<Iterable<Student>>(){},"John");
System.out.println(response.getBody());
assertEquals(HttpStatus.OK, response.getStatusCode());
List<Student> studentList = new ArrayList<>();
response.getBody().forEach(studentList::add);
assertEquals(5,studentList.size());
}
}
26th::
Test case: @Test public void testPutMethod() { HttpEntity entity = new HttpEntity(new Student("15", "John", 99),headers); ResponseEntity response = testRestTemplate.exchange( createURLWithPort("/students"), HttpMethod.PUT, entity, Student.class); System.out.println(response.getBody()); assertEquals(HttpStatus.ACCEPTED, response.getStatusCode()); }
Controller put method changes : Note : This put method will update ID and AGE. @PutMapping(value ="/students", consumes=MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Student> updateStudent(@RequestBody Student student) {
System.out.println(student.getName());
if(userRepo.findByName(student.getName()).isEmpty()) {
return new ResponseEntity<>(student, HttpStatus.NOT_FOUND);
}else {
userRepo.save(student);
return new ResponseEntity<>(student, HttpStatus.ACCEPTED);
}
}