/ws
". That is, we must handle the following set of addresses: /ws/index
, /ws/add
, /ws/delete
. Access to the root " /ws
" we voluntarily decide to ban, because there is no need. <http realm="Contact Manager REST-service" pattern="/ws/**" use-expressions="true"> <intercept-url pattern="/ws/index*" access="hasAnyRole('ROLE_USER','ROLE_ANONYMOUS')" /> <intercept-url pattern="/ws/add*" access="hasRole('ROLE_USER')" /> <intercept-url pattern="/ws/delete/*" access="hasRole('ROLE_ADMIN')" /> <intercept-url pattern="/ws/**" access="denyAll" /> <http-basic/> </http>
/ws
prefix in a timely manner.use-expressions="true"
(but this is not important, just as an illustration). Perlfix /ws
added to all existing urls, access to the /ws
root is denied for all ( denyAll
). Examples of the use of other SPEL expressions can be found here . I repeat - the order of specifying masks is important, the most common /ws/**
the last. The realm
attribute is added again for beauty, it will be displayed in the authorization window, if someone decides to admire the JSON contact list through the browser.<http-basic/>
already sheltered. Behind this short construction, Spring (in its usual style) hides from the developer the complexity of the mechanism of this Basic Authentication itself. And we have no reason not to trust him in this. One down, two to go. Let's do the controller.NB We must not forget that we have 2 security.xml files, the main one for tests. Changes need to be made in both.
/ws/add
will accept the data of the new contact in the form of a JSON string directly in the request body. It's time to work.ContactWsController.java
file in the same package as the old controller. And immediately at the class level, we denote our claims that this is a web service. @Controller @RequestMapping(value = "/ws", produces = MediaType.APPLICATION_JSON_VALUE) public class ContactWsController { @Autowired private ContactService contactService; }
@RequestMapping(value="/ws")
at the class level sets a common prefix that will be automatically added to all URLs of individual methods. produces = MediaType.APPLICATION_JSON_VALUE
says that by default all methods of this controller will render JSON. If necessary, in a specific method, this value can be redefined. @RequestMapping("/index") public String listContacts(Map<String, Object> map) { map.put("contact", new Contact()); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return "contact"; }
@ResponseBody
annotation to the return value. It tells Spring that we want this value to be serialized in JSON and written to the response body. The new method looks like this: @RequestMapping(value = "/index") @ResponseBody public Map<String, Object> listContacts() { Map<String, Object> map = new HashMap<String, Object>(); map.put("contact", new Contact()); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; }
MockMvcWsTest.groovy
, copy into it all the main stuffing related to setting up MockMvc. And copy the old test: @Test public void index_user1() { mockMvc.perform(MockMvcRequestBuilders.get("/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andExpect(MockMvcResultMatchers.view().name("contact")) .andExpect(MockMvcResultMatchers.model().attributeExists("contact")) .andExpect(MockMvcResultMatchers.model().attributeExists("contactList")) .andExpect(MockMvcResultMatchers.model().attributeExists("contactTypeList")) }
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andReturn() // - JSON println result.response.contentAsString }
resolvedException
stands HttpMediaTypeNotAcceptableException
, and mockResponse.status
= 406. The diagnosis is still disappointing “Could not find acceptable representation”.pom.xml
you need to add dependencies to the JSON library. <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.1.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.1.3</version> </dependency>
annotation-driven
to <mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" /> <bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean"> <property name="favorPathExtension" value="false" /> <property name="favorParameter" value="true" /> <property name="mediaTypes"> <value> json=application/json </value> </property> </bean>
servlet-context.xml
). It is important to change the XSD scheme to version 3.2 (eg spring-mvc-3.2.xsd
)@EnableWebMvc
//... @ImportResource('classpath:security.xml') @EnableWebMvc class TestConfig { /*...*/ }
{"contactTypeList":[{"id":1,"code":"family","name":"Ð¡ÐµÐ¼ÑŒÑ ","defaulttype":false,"contacts":null},{"id":2,"code":"job","name":"Работа","defaulttype":false,"contacts":null},{"id":3,"code":"stuff","name":"Знакомые","defaulttype":true,"contacts":null}],"contactList":[],"contact":{"id":null,"firstname":null,"lastname":null,"email":null,"telephone":null,"contacttype":null}}
@RequestMapping(value = "/ws", produces = MediaType.APPLICATION_JSON_VALUE+";charset=UTF-8" )
.andDo(MockMvcResultHandlers.print())
It displays detailed information in the log. For example, for our request the log will look like this. MockHttpServletRequest: HTTP Method = GET Request URI = /ws/index Parameters = {} Headers = {} Handler: Type = net.schastny.contactmanager.web.ContactWsController Method = public java.util.Map<java.lang.String, java.lang.Object> net.schastny.contactmanager.web.ContactWsController.listContacts() Async: Was async started = false Async result = null Resolved Exception: Type = null ModelAndView: View name = null View = null Model = null FlashMap: MockHttpServletResponse: Status = 200 Error message = null Headers = {Content-Type=[application/json;charset=UTF-8]} Content type = application/json;charset=UTF-8 Body = {"contactTypeList":[{"id":1,"code":"family","name":"","defaulttype":false,"contacts":null},{"id":2,"code":"job","name":"","defaulttype":false,"contacts":null},{"id":3,"code":"stuff","name":"","defaulttype":true,"contacts":null}],"contactList":[],"contact":{"id":null,"firstname":null,"lastname":null,"email":null,"telephone":null,"contacttype":null}} Forwarded URL = null Redirected URL = null Cookies = []
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
attribute is List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
List contacts = null , - No Session, . - " " @JsonIgnore
@JsonIgnore @OneToMany(fetch = FetchType.LAZY, cascade = [CascadeType.REFRESH, CascadeType.MERGE], mappedBy = "contacttype") List<Contact> contacts = null
, . .
@Test public void index_user1() { def result = mockMvc.perform(MockMvcRequestBuilders.get("/ws/index") .with(SecurityRequestPostProcessors.userDetailsService(USER1))) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(result.response.contentAsString, Map.class); assert !map.contactList assert map.contactTypeList.size() == 3 }
index_admin()
index_na()
.
2.2
.
@RequestMapping(value = "/add", method = RequestMethod.POST) public String addContact(@ModelAttribute("contact") Contact contact, BindingResult result) { contactService.addContact(contact); return "redirect:/index"; }
- :
Map @ResponseBody
, JSON- ( @RequestBody String json
) JSON , , Map, , index
:
@RequestMapping(value = "/add", method = RequestMethod.POST, consumes = MediaType.TEXT_PLAIN_VALUE) @ResponseBody public Map<String, Object> addContactWs(@RequestBody String json) { Contact contact = null; try { contact = new ObjectMapper().readValue(json, Contact.class); contactService.addContact(contact); Map<String, Object> map = new HashMap<String, Object>(); map.put("status", " "); // - - map.put("contact", contact); map.put("contactList", contactService.listContact()); map.put("contactTypeList", contactService.listContactType()); return map; } catch (IOException e) { Map<String, Object> map = new HashMap<String, Object>(); map.put("status", ""); map.put("message", e.getMessage()); return map; } }
@RequestMapping
consumes = MediaType.TEXT_PLAIN_VALUE
, "". - status, . . JSON. Jackson ObjectMapper(), Groovy JSON-builder, Groovy 1.8. JSON , contentType . :
@Test public void add_user1() { def contacts = contactService.listContact() assert !contacts def contactTypes = contactService.listContactType() assert contactTypes // Groovy JSON-builder def jsonBuilder = new JsonBuilder() jsonBuilder { firstname '' lastname '' email 'ivan.ivanov@gmail.com' telephone '555-1234' contacttype ( id : contactTypes[0].id ) } String json = jsonBuilder.toString() MockHttpServletRequestBuilder requestBuilder = MockMvcRequestBuilders.post("/ws/add") .contentType(MediaType.TEXT_PLAIN) .content(json) .with(SecurityRequestPostProcessors.userDetailsService(user)) MvcResult ret = mockMvc.perform(requestBuilder) .andExpect(MockMvcResultMatchers.content().contentType("${MediaType.APPLICATION_JSON_VALUE};charset=UTF-8")) .andDo(MockMvcResultHandlers.print()) .andReturn() def map = new ObjectMapper().readValue(ret.response.contentAsString, Map.class); assert map.status == ' ' assert map.contactList assert map.contactTypeList contacts = contactService.listContact() assert contacts assert contacts[0].id // Contact contact = new Contact(map.contact) assert contact.class == Contact.class assert contact.id == contacts[0].id assert contact.firstname == '' assert contact.lastname== '' assert contact.email == 'ivan.ivanov@gmail.com' assert contact.telephone == '555-1234' assert contact.contacttype.id == contactTypes[0].id contactService.removeContact(contacts[0].id) }
user1, . JSON, 401 .
@Test public void add_na() { ResultActions result = mockMvc.perform(MockMvcRequestBuilders.post("/ws/add") .accept(MediaType.APPLICATION_JSON) .contentType(MediaType.TEXT_PLAIN) .characterEncoding("UTF-8") .content('{"J":5,"0":"N"}') //.with(SecurityRequestPostProcessors.userDetailsService(ADMIN)) ) result.andExpect(MockMvcResultMatchers.status().isUnauthorized()) }
, REST- . - . Basic Authentication , . HTTPS - .
.
GitHub
Source: https://habr.com/ru/post/173593/
All Articles