mirror of
https://github.com/spring-projects/spring-petclinic.git
synced 2025-07-23 07:45:49 +00:00
implement RoleServiceTest
This commit is contained in:
parent
5694967a71
commit
bc486de542
38 changed files with 625 additions and 243 deletions
|
@ -9,13 +9,8 @@ public class SocketSecurityConfig extends AbstractSecurityWebSocketMessageBroker
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void configureInbound(MessageSecurityMetadataSourceRegistry message) {
|
protected void configureInbound(MessageSecurityMetadataSourceRegistry message) {
|
||||||
// @formatter:off
|
message.simpDestMatchers("/app/**").permitAll().simpSubscribeDestMatchers("/topic/**").permitAll().anyMessage()
|
||||||
|
.permitAll();
|
||||||
// message types other than MESSAGE and SUBSCRIBE
|
|
||||||
message.simpDestMatchers("/app/**").permitAll()
|
|
||||||
.simpSubscribeDestMatchers("/topic/**").permitAll()
|
|
||||||
// catch all
|
|
||||||
.anyMessage().denyAll();
|
|
||||||
|
|
||||||
// @formatter:on
|
// @formatter:on
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,8 +20,6 @@ import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService;
|
||||||
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
import org.springframework.security.oauth2.client.registration.ClientRegistration;
|
||||||
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
|
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
|
||||||
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
|
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
|
||||||
import org.springframework.web.cors.CorsConfiguration;
|
|
||||||
import org.springframework.web.cors.CorsConfigurationSource;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
@ -29,7 +27,7 @@ import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@Configuration
|
@Configuration
|
||||||
@EnableWebSecurity(debug = true)
|
@EnableWebSecurity
|
||||||
@PropertySource("classpath:oauth2.properties")
|
@PropertySource("classpath:oauth2.properties")
|
||||||
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||||
|
|
||||||
|
@ -64,7 +62,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||||
http.authorizeRequests()
|
http.authorizeRequests()
|
||||||
.antMatchers("/").permitAll()
|
.antMatchers("/").permitAll()
|
||||||
.antMatchers("/login", "/logout", "/register","/confirm-account").permitAll()
|
.antMatchers("/login", "/logout", "/register","/confirm-account").permitAll()
|
||||||
.antMatchers("/websocket/**", "/topic/**", "/app/**").permitAll()
|
.antMatchers("/webjars/**","/websocket/**", "/topic/**", "/app/**").permitAll()
|
||||||
.antMatchers("/resources/**").permitAll()
|
.antMatchers("/resources/**").permitAll()
|
||||||
.antMatchers("/h2-console/**").permitAll()
|
.antMatchers("/h2-console/**").permitAll()
|
||||||
.antMatchers("/edit/**").authenticated()
|
.antMatchers("/edit/**").authenticated()
|
||||||
|
|
|
@ -3,7 +3,6 @@ package org.springframework.samples.petclinic.configuration;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
|
||||||
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
|
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
|
||||||
import org.springframework.security.config.annotation.web.messaging.MessageSecurityMetadataSourceRegistry;
|
|
||||||
import org.springframework.security.config.annotation.web.socket.AbstractSecurityWebSocketMessageBrokerConfigurer;
|
import org.springframework.security.config.annotation.web.socket.AbstractSecurityWebSocketMessageBrokerConfigurer;
|
||||||
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
|
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
|
||||||
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
|
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
|
||||||
|
@ -17,17 +16,6 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
|
||||||
@EnableWebSocketMessageBroker
|
@EnableWebSocketMessageBroker
|
||||||
public class WebSocketConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
|
public class WebSocketConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
|
||||||
|
|
||||||
/*
|
|
||||||
* @Override public void registerStompEndpoints(StompEndpointRegistry
|
|
||||||
* stompEndpointRegistry) {
|
|
||||||
* stompEndpointRegistry.addEndpoint("/websocket").withSockJS(); }
|
|
||||||
*
|
|
||||||
* @Override public void configureMessageBroker(MessageBrokerRegistry registry) {
|
|
||||||
* registry.enableSimpleBroker("/topic");
|
|
||||||
* registry.setApplicationDestinationPrefixes("/app"); }
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void configureMessageBroker(MessageBrokerRegistry config) {
|
public void configureMessageBroker(MessageBrokerRegistry config) {
|
||||||
config.enableSimpleBroker("/topic");
|
config.enableSimpleBroker("/topic");
|
||||||
|
|
|
@ -80,7 +80,7 @@ class OwnerController extends WebSocketSender {
|
||||||
@GetMapping(CommonEndPoint.OWNERS_FIND)
|
@GetMapping(CommonEndPoint.OWNERS_FIND)
|
||||||
public String initFindForm(Map<String, Object> model) {
|
public String initFindForm(Map<String, Object> model) {
|
||||||
model.put(CommonAttribute.OWNER, new OwnerDTO());
|
model.put(CommonAttribute.OWNER, new OwnerDTO());
|
||||||
sendSuccessMessage("TEST WEBSOCKET");
|
|
||||||
return CommonView.OWNER_FIND_OWNERS;
|
return CommonView.OWNER_FIND_OWNERS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -105,13 +105,13 @@ class OwnerController extends WebSocketSender {
|
||||||
else if (results.size() == 1) {
|
else if (results.size() == 1) {
|
||||||
// 1 owner found
|
// 1 owner found
|
||||||
owner = results.iterator().next();
|
owner = results.iterator().next();
|
||||||
sendSuccessMessage("TEST WEBSOCKET");
|
|
||||||
return CommonView.OWNER_OWNERS_R + owner.getId();
|
return CommonView.OWNER_OWNERS_R + owner.getId();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// multiple owners found
|
// multiple owners found
|
||||||
model.put(CommonAttribute.SELECTIONS, results);
|
model.put(CommonAttribute.SELECTIONS, results);
|
||||||
sendSuccessMessage("TEST WEBSOCKET");
|
|
||||||
return CommonView.OWNER_OWNERS_LIST;
|
return CommonView.OWNER_OWNERS_LIST;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ class OwnerController extends WebSocketSender {
|
||||||
public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) {
|
public String initUpdateOwnerForm(@PathVariable("ownerId") int ownerId, Model model) {
|
||||||
OwnerDTO ownerDTO = this.ownerService.findById(ownerId);
|
OwnerDTO ownerDTO = this.ownerService.findById(ownerId);
|
||||||
model.addAttribute(CommonAttribute.OWNER, ownerDTO);
|
model.addAttribute(CommonAttribute.OWNER, ownerDTO);
|
||||||
sendSuccessMessage("TEST WEBSOCKET");
|
|
||||||
return CommonView.OWNER_CREATE_OR_UPDATE;
|
return CommonView.OWNER_CREATE_OR_UPDATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ class OwnerController extends WebSocketSender {
|
||||||
}
|
}
|
||||||
|
|
||||||
modelAndView.addObject(CommonAttribute.OWNER, owner);
|
modelAndView.addObject(CommonAttribute.OWNER, owner);
|
||||||
sendSuccessMessage("TEST WEBSOCKET");
|
|
||||||
return modelAndView;
|
return modelAndView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,7 @@ import java.util.Collection;
|
||||||
* @author Paul-Emmanuel DOS SANTOS FACAO
|
* @author Paul-Emmanuel DOS SANTOS FACAO
|
||||||
*/
|
*/
|
||||||
@Controller
|
@Controller
|
||||||
@RequestMapping("/owners/{ownerId}")
|
@RequestMapping(CommonEndPoint.OWNERS_ID) // "/owners/{ownerId}")
|
||||||
class PetController extends WebSocketSender {
|
class PetController extends WebSocketSender {
|
||||||
|
|
||||||
private final OwnerService ownerService;
|
private final OwnerService ownerService;
|
||||||
|
@ -62,7 +62,7 @@ class PetController extends WebSocketSender {
|
||||||
|
|
||||||
@ModelAttribute("owner")
|
@ModelAttribute("owner")
|
||||||
public OwnerDTO findOwner(@PathVariable("ownerId") int ownerId) {
|
public OwnerDTO findOwner(@PathVariable("ownerId") int ownerId) {
|
||||||
return ownerService.findById(ownerId);
|
return this.ownerService.findById(ownerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@InitBinder("owner")
|
@InitBinder("owner")
|
||||||
|
@ -110,14 +110,16 @@ class PetController extends WebSocketSender {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/pets/{petId}/edit")
|
// @GetMapping("/pets/{petId}/edit")
|
||||||
|
@GetMapping(CommonEndPoint.PETS_ID_EDIT)
|
||||||
public String initUpdateForm(@PathVariable("petId") int petId, ModelMap model) {
|
public String initUpdateForm(@PathVariable("petId") int petId, ModelMap model) {
|
||||||
PetDTO pet = this.petService.findById(petId);
|
PetDTO pet = this.petService.findById(petId);
|
||||||
model.put(CommonAttribute.PET, pet);
|
model.put(CommonAttribute.PET, pet);
|
||||||
return CommonView.PET_CREATE_OR_UPDATE;
|
return CommonView.PET_CREATE_OR_UPDATE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/pets/{petId}/edit")
|
// @PostMapping("/pets/{petId}/edit")
|
||||||
|
@PostMapping(CommonEndPoint.PETS_ID_EDIT)
|
||||||
public String processUpdateForm(@ModelAttribute("pet") @Valid PetDTO pet, BindingResult result,
|
public String processUpdateForm(@ModelAttribute("pet") @Valid PetDTO pet, BindingResult result,
|
||||||
@ModelAttribute("owner") OwnerDTO owner, ModelMap model) {
|
@ModelAttribute("owner") OwnerDTO owner, ModelMap model) {
|
||||||
if (result.hasErrors()) {
|
if (result.hasErrors()) {
|
||||||
|
|
|
@ -130,22 +130,4 @@ public class OwnerDTO extends PersonDTO {
|
||||||
.append(CommonAttribute.OWNER_PHONE, this.telephone).toString();
|
.append(CommonAttribute.OWNER_PHONE, this.telephone).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o)
|
|
||||||
return true;
|
|
||||||
if (!(o instanceof OwnerDTO))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
OwnerDTO ownerDTO = (OwnerDTO) o;
|
|
||||||
|
|
||||||
if (!getAddress().equals(ownerDTO.getAddress()))
|
|
||||||
return false;
|
|
||||||
if (!getCity().equals(ownerDTO.getCity()))
|
|
||||||
return false;
|
|
||||||
if (!getTelephone().equals(ownerDTO.getTelephone()))
|
|
||||||
return false;
|
|
||||||
return getPets() != null ? getPets().equals(ownerDTO.getPets()) : ownerDTO.getPets() == null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,12 +85,6 @@ public class PetDTO extends NamedDTO {
|
||||||
visit.setPetId(this.getId());
|
visit.setPetId(this.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "PetDTO{" + "birthDate=" + birthDate + ", type=" + type + ", owner=" + owner + ", visits=" + visits
|
|
||||||
+ '}';
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o)
|
if (this == o)
|
||||||
|
@ -100,15 +94,15 @@ public class PetDTO extends NamedDTO {
|
||||||
if (!super.equals(o))
|
if (!super.equals(o))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
PetDTO petDTO = (PetDTO) o;
|
PetDTO pet = (PetDTO) o;
|
||||||
|
|
||||||
if (!getBirthDate().equals(petDTO.getBirthDate()))
|
if (!getBirthDate().equals(pet.getBirthDate()))
|
||||||
return false;
|
return false;
|
||||||
if (!getType().equals(petDTO.getType()))
|
if (!getType().equals(pet.getType()))
|
||||||
return false;
|
return false;
|
||||||
if (getOwner() != null ? !getOwner().getId().equals(petDTO.getOwner().getId()) : petDTO.getOwner() != null)
|
if (getOwner() != null ? !getOwner().equals(pet.getOwner()) : pet.getOwner() != null)
|
||||||
return false;
|
return false;
|
||||||
return getVisits() != null ? getVisits().equals(petDTO.getVisits()) : petDTO.getVisits() == null;
|
return getVisits() != null ? getVisits().equals(pet.getVisits()) : pet.getVisits() == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ package org.springframework.samples.petclinic.dto.business;
|
||||||
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
import org.springframework.samples.petclinic.dto.common.BaseDTO;
|
import org.springframework.samples.petclinic.dto.common.BaseDTO;
|
||||||
|
import org.springframework.samples.petclinic.model.business.Visit;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
@ -74,14 +75,13 @@ public class VisitDTO extends BaseDTO {
|
||||||
if (!(o instanceof VisitDTO))
|
if (!(o instanceof VisitDTO))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
VisitDTO visitDTO = (VisitDTO) o;
|
VisitDTO visit = (VisitDTO) o;
|
||||||
|
|
||||||
if (!getDate().equals(visitDTO.getDate()))
|
if (!getDate().equals(visit.getDate()))
|
||||||
return false;
|
return false;
|
||||||
if (getDescription() != null ? !getDescription().equals(visitDTO.getDescription())
|
if (!getDescription().equals(visit.getDescription()))
|
||||||
: visitDTO.getDescription() != null)
|
|
||||||
return false;
|
return false;
|
||||||
return getPetId().equals(visitDTO.getPetId());
|
return getPetId().equals(visit.getPetId());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,9 +39,14 @@ public class BaseDTO implements Serializable {
|
||||||
return this.id == null;
|
return this.id == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/*
|
||||||
public String toString() {
|
* @Override public boolean equals(Object o) { if (this == o) return true;
|
||||||
return "BaseDTO{" + "id=" + id + '}';
|
*
|
||||||
}
|
* if (!(o instanceof BaseDTO)) return false;
|
||||||
|
*
|
||||||
|
* BaseDTO baseDTO = (BaseDTO) o;
|
||||||
|
*
|
||||||
|
* return new EqualsBuilder().append(getId(), baseDTO.getId()).isEquals(); }
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,9 @@
|
||||||
package org.springframework.samples.petclinic.dto.common;
|
package org.springframework.samples.petclinic.dto.common;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
import org.springframework.samples.petclinic.common.CommonError;
|
import org.springframework.samples.petclinic.common.CommonError;
|
||||||
import org.springframework.samples.petclinic.common.CommonParameter;
|
import org.springframework.samples.petclinic.common.CommonParameter;
|
||||||
|
|
||||||
|
@ -17,6 +21,10 @@ import java.util.UUID;
|
||||||
*
|
*
|
||||||
* @author Paul-Emmanuel DOS SANTOS FACAO
|
* @author Paul-Emmanuel DOS SANTOS FACAO
|
||||||
*/
|
*/
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class CredentialDTO extends BaseDTO {
|
public class CredentialDTO extends BaseDTO {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
@ -40,9 +48,6 @@ public class CredentialDTO extends BaseDTO {
|
||||||
+ CommonParameter.PASSWORD_MIN + " AND " + CommonParameter.PASSWORD_MAX + " !")
|
+ CommonParameter.PASSWORD_MIN + " AND " + CommonParameter.PASSWORD_MAX + " !")
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
public CredentialDTO() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public CredentialDTO(UserDTO user) {
|
public CredentialDTO(UserDTO user) {
|
||||||
this.verified = false;
|
this.verified = false;
|
||||||
this.setToken();
|
this.setToken();
|
||||||
|
@ -52,58 +57,14 @@ public class CredentialDTO extends BaseDTO {
|
||||||
this.password = user.getId().toString();
|
this.password = user.getId().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getProvider() {
|
|
||||||
return provider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProvider(String provider) {
|
|
||||||
this.provider = provider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setDefaultProvider() {
|
public void setDefaultProvider() {
|
||||||
this.provider = CommonParameter.DEFAULT_PROVIDER;
|
this.provider = CommonParameter.DEFAULT_PROVIDER;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getEmail() {
|
|
||||||
return email;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEmail(String email) {
|
|
||||||
this.email = email;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean isVerified() {
|
public Boolean isVerified() {
|
||||||
return verified;
|
return verified;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVerified(Boolean verified) {
|
|
||||||
this.verified = verified;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getToken() {
|
|
||||||
return token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setToken(String token) {
|
|
||||||
this.token = token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getExpiration() {
|
|
||||||
return expiration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setExpiration(Date expiration) {
|
|
||||||
this.expiration = expiration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPassword() {
|
|
||||||
return password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPassword(String password) {
|
|
||||||
this.password = password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setExpiration() {
|
public void setExpiration() {
|
||||||
Calendar cal = Calendar.getInstance();
|
Calendar cal = Calendar.getInstance();
|
||||||
cal.setTime(new Timestamp(cal.getTime().getTime()));
|
cal.setTime(new Timestamp(cal.getTime().getTime()));
|
||||||
|
|
|
@ -33,11 +33,6 @@ public class NamedDTO extends BaseDTO {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return this.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (this == o)
|
if (this == o)
|
||||||
|
@ -45,9 +40,14 @@ public class NamedDTO extends BaseDTO {
|
||||||
if (!(o instanceof NamedDTO))
|
if (!(o instanceof NamedDTO))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
NamedDTO namedDTO = (NamedDTO) o;
|
NamedDTO that = (NamedDTO) o;
|
||||||
|
|
||||||
return getName().equals(namedDTO.getName());
|
return getName().equals(that.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return this.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,9 @@
|
||||||
*/
|
*/
|
||||||
package org.springframework.samples.petclinic.dto.common;
|
package org.springframework.samples.petclinic.dto.common;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,11 +56,11 @@ public class PersonDTO extends BaseDTO {
|
||||||
if (!(o instanceof PersonDTO))
|
if (!(o instanceof PersonDTO))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
PersonDTO personDTO = (PersonDTO) o;
|
PersonDTO person = (PersonDTO) o;
|
||||||
|
|
||||||
if (!getFirstName().equals(personDTO.getFirstName()))
|
if (!getFirstName().equals(person.getFirstName()))
|
||||||
return false;
|
return false;
|
||||||
return getLastName().equals(personDTO.getLastName());
|
return getLastName().equals(person.getLastName());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package org.springframework.samples.petclinic.dto.common;
|
package org.springframework.samples.petclinic.dto.common;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
@ -15,6 +18,7 @@ import java.util.Collection;
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class PrivilegeDTO implements Serializable {
|
public class PrivilegeDTO implements Serializable {
|
||||||
|
|
||||||
private Integer id;
|
private Integer id;
|
||||||
|
@ -23,4 +27,15 @@ public class PrivilegeDTO implements Serializable {
|
||||||
|
|
||||||
private Collection<RoleDTO> roles;
|
private Collection<RoleDTO> roles;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Override public boolean equals(Object o) { if (this == o) return true;
|
||||||
|
*
|
||||||
|
* if (!(o instanceof PrivilegeDTO)) return false;
|
||||||
|
*
|
||||||
|
* PrivilegeDTO that = (PrivilegeDTO) o;
|
||||||
|
*
|
||||||
|
* return new EqualsBuilder().append(getId(), that.getId()).append(getName(),
|
||||||
|
* that.getName()) .append(getRoles(), that.getRoles()).isEquals(); }
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
package org.springframework.samples.petclinic.dto.common;
|
package org.springframework.samples.petclinic.dto.common;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
import org.springframework.samples.petclinic.common.CommonParameter;
|
import org.springframework.samples.petclinic.common.CommonParameter;
|
||||||
|
|
||||||
import javax.validation.constraints.NotEmpty;
|
import javax.validation.constraints.NotEmpty;
|
||||||
|
@ -19,6 +22,7 @@ import java.util.Collection;
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class RoleDTO implements Serializable {
|
public class RoleDTO implements Serializable {
|
||||||
|
|
||||||
private Integer id;
|
private Integer id;
|
||||||
|
@ -32,4 +36,16 @@ public class RoleDTO implements Serializable {
|
||||||
|
|
||||||
private Collection<PrivilegeDTO> privileges;
|
private Collection<PrivilegeDTO> privileges;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Override public boolean equals(Object o) { if (this == o) return true;
|
||||||
|
*
|
||||||
|
* if (!(o instanceof RoleDTO)) return false;
|
||||||
|
*
|
||||||
|
* RoleDTO roleDTO = (RoleDTO) o;
|
||||||
|
*
|
||||||
|
* return new EqualsBuilder().append(getId(), roleDTO.getId()).append(getName(),
|
||||||
|
* roleDTO.getName()) .append(getUsers(), roleDTO.getUsers()).append(getPrivileges(),
|
||||||
|
* roleDTO.getPrivileges()).isEquals(); }
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package org.springframework.samples.petclinic.dto.common;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
import org.springframework.samples.petclinic.common.CommonError;
|
import org.springframework.samples.petclinic.common.CommonError;
|
||||||
import org.springframework.samples.petclinic.common.CommonParameter;
|
import org.springframework.samples.petclinic.common.CommonParameter;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
|
@ -154,11 +156,33 @@ public class UserDTO extends PersonDTO implements Serializable, UserDetails {
|
||||||
return getGrantedAuthorities(getPrivileges(this.roles));
|
return getGrantedAuthorities(getPrivileges(this.roles));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (!(o instanceof UserDTO))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
UserDTO userDTO = (UserDTO) o;
|
||||||
|
|
||||||
|
return new EqualsBuilder().appendSuper(super.equals(o)).append(isEnabled(), userDTO.isEnabled())
|
||||||
|
.append(isAccountNonExpired(), userDTO.isAccountNonExpired())
|
||||||
|
.append(isAccountNonLocked(), userDTO.isAccountNonLocked())
|
||||||
|
.append(isCredentialsNonExpired(), userDTO.isCredentialsNonExpired())
|
||||||
|
.append(getEmail(), userDTO.getEmail()).append(getPassword(), userDTO.getPassword())
|
||||||
|
.append(getMatchingPassword(), userDTO.getMatchingPassword()).append(getRoles(), userDTO.getRoles())
|
||||||
|
.append(getTelephone(), userDTO.getTelephone()).append(getStreet1(), userDTO.getStreet1())
|
||||||
|
.append(getStreet2(), userDTO.getStreet2()).append(getStreet3(), userDTO.getStreet3())
|
||||||
|
.append(getZipCode(), userDTO.getZipCode()).append(getCity(), userDTO.getCity())
|
||||||
|
.append(getCountry(), userDTO.getCountry()).isEquals();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "UserDTO{" + "email='" + email + '\'' + ", password='" + password + '\'' + ", matchingPassword='"
|
return "UserDTO{" + "email='" + email + '\'' + ", password='" + password + '\'' + ", matchingPassword='"
|
||||||
+ matchingPassword + '\'' + ", user enabled=" + enabled + ", account not expired=" + accountNonExpired
|
+ matchingPassword + '\'' + ", enabled=" + enabled + ", accountNonExpired=" + accountNonExpired
|
||||||
+ ", account not locked=" + accountNonLocked + ", credentials not xxpired=" + credentialsNonExpired
|
+ ", accountNonLocked=" + accountNonLocked + ", credentialsNonExpired=" + credentialsNonExpired
|
||||||
+ ", roles=" + roles + ", telephone='" + telephone + '\'' + ", street1='" + street1 + '\''
|
+ ", roles=" + roles + ", telephone='" + telephone + '\'' + ", street1='" + street1 + '\''
|
||||||
+ ", street2='" + street2 + '\'' + ", street3='" + street3 + '\'' + ", zipCode='" + zipCode + '\''
|
+ ", street2='" + street2 + '\'' + ", street3='" + street3 + '\'' + ", zipCode='" + zipCode + '\''
|
||||||
+ ", city='" + city + '\'' + ", country='" + country + '\'' + '}';
|
+ ", city='" + city + '\'' + ", country='" + country + '\'' + '}';
|
||||||
|
|
|
@ -141,7 +141,7 @@ public class Owner extends Person {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return new ToStringCreator(this).append(CommonAttribute.ID, this.getId())
|
return new ToStringCreator(this).append(CommonAttribute.OWNER_ID, this.getId())
|
||||||
.append(CommonAttribute.NEW, this.isNew()).append(CommonAttribute.OWNER_LAST_NAME, this.getLastName())
|
.append(CommonAttribute.NEW, this.isNew()).append(CommonAttribute.OWNER_LAST_NAME, this.getLastName())
|
||||||
.append(CommonAttribute.OWNER_FIRST_NAME, this.getFirstName())
|
.append(CommonAttribute.OWNER_FIRST_NAME, this.getFirstName())
|
||||||
.append(CommonAttribute.OWNER_ADDRESS, this.address).append(CommonAttribute.OWNER_CITY, this.city)
|
.append(CommonAttribute.OWNER_ADDRESS, this.address).append(CommonAttribute.OWNER_CITY, this.city)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package org.springframework.samples.petclinic.model.common;
|
package org.springframework.samples.petclinic.model.common;
|
||||||
|
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.Setter;
|
||||||
import org.springframework.samples.petclinic.common.CommonError;
|
import org.springframework.samples.petclinic.common.CommonError;
|
||||||
import org.springframework.samples.petclinic.common.CommonParameter;
|
import org.springframework.samples.petclinic.common.CommonParameter;
|
||||||
|
|
||||||
|
@ -19,6 +21,8 @@ import java.util.UUID;
|
||||||
*/
|
*/
|
||||||
@Entity(name = "Credential")
|
@Entity(name = "Credential")
|
||||||
@Table(name = "credentials")
|
@Table(name = "credentials")
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
public class Credential extends BaseEntity {
|
public class Credential extends BaseEntity {
|
||||||
|
|
||||||
private static final int TOKEN_EXPIRATION = 60 * 24;
|
private static final int TOKEN_EXPIRATION = 60 * 24;
|
||||||
|
@ -50,54 +54,10 @@ public class Credential extends BaseEntity {
|
||||||
@Column(name = "expiration")
|
@Column(name = "expiration")
|
||||||
private Date expiration;
|
private Date expiration;
|
||||||
|
|
||||||
public Integer getProviderId() {
|
|
||||||
return providerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setProviderId(Integer providerId) {
|
|
||||||
this.providerId = providerId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getEmail() {
|
|
||||||
return email;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setEmail(String email) {
|
|
||||||
this.email = email;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Boolean isVerified() {
|
public Boolean isVerified() {
|
||||||
return verified;
|
return verified;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVerified(Boolean verified) {
|
|
||||||
this.verified = verified;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getToken() {
|
|
||||||
return token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setToken(String token) {
|
|
||||||
this.token = token;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Date getExpiration() {
|
|
||||||
return expiration;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setExpiration(Date expirationDate) {
|
|
||||||
this.expiration = expirationDate;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPassword() {
|
|
||||||
return password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPassword(String password) {
|
|
||||||
this.password = password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setExpiration() {
|
public void setExpiration() {
|
||||||
Calendar cal = Calendar.getInstance();
|
Calendar cal = Calendar.getInstance();
|
||||||
cal.setTime(new Timestamp(cal.getTime().getTime()));
|
cal.setTime(new Timestamp(cal.getTime().getTime()));
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package org.springframework.samples.petclinic.model.common;
|
package org.springframework.samples.petclinic.model.common;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.*;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.springframework.samples.petclinic.common.CommonParameter;
|
import org.springframework.samples.petclinic.common.CommonParameter;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
@ -17,6 +15,7 @@ import java.util.Collection;
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class Privilege implements Serializable {
|
public class Privilege implements Serializable {
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
|
@ -32,4 +31,20 @@ public class Privilege implements Serializable {
|
||||||
@ManyToMany(mappedBy = "privileges", fetch = FetchType.EAGER)
|
@ManyToMany(mappedBy = "privileges", fetch = FetchType.EAGER)
|
||||||
private Collection<Role> roles;
|
private Collection<Role> roles;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Override public boolean equals(Object o) { if (this == o) return true; if (!(o
|
||||||
|
* instanceof Role)) return false;
|
||||||
|
*
|
||||||
|
* Privilege privilege = (Privilege) o;
|
||||||
|
*
|
||||||
|
* if (!getId().equals(privilege.getId())) return false; if
|
||||||
|
* (!getName().equals(privilege.getName())) return false;
|
||||||
|
*
|
||||||
|
* return getRoles() != null ? getRoles().equals(privilege.getRoles()) :
|
||||||
|
* privilege.getRoles() == null; }
|
||||||
|
*
|
||||||
|
* @Override public String toString() { return "Privilege{" + "id=" + id + ", name='"
|
||||||
|
* + name + '\'' + ", roles=" + roles + '}'; }
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package org.springframework.samples.petclinic.model.common;
|
package org.springframework.samples.petclinic.model.common;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.*;
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
import org.hibernate.annotations.LazyCollection;
|
import org.hibernate.annotations.LazyCollection;
|
||||||
import org.hibernate.annotations.LazyCollectionOption;
|
import org.hibernate.annotations.LazyCollectionOption;
|
||||||
import org.springframework.samples.petclinic.common.CommonParameter;
|
import org.springframework.samples.petclinic.common.CommonParameter;
|
||||||
|
@ -24,6 +22,7 @@ import java.util.Collection;
|
||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
public class Role implements Serializable {
|
public class Role implements Serializable {
|
||||||
|
|
||||||
@Id
|
@Id
|
||||||
|
@ -46,4 +45,17 @@ public class Role implements Serializable {
|
||||||
inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
|
inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
|
||||||
private Collection<Privilege> privileges;
|
private Collection<Privilege> privileges;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @Override public boolean equals(Object o) { if (this == o) return true; if (!(o
|
||||||
|
* instanceof Role)) return false;
|
||||||
|
*
|
||||||
|
* Role role = (Role) o;
|
||||||
|
*
|
||||||
|
* if (!getId().equals(role.getId())) return false; if
|
||||||
|
* (!getName().equals(role.getName())) return false; if (getUsers() == null &&
|
||||||
|
* role.getUsers() != null) return false; if (getUsers() != null && role.getUsers() ==
|
||||||
|
* null) return false; return getPrivileges() != null ?
|
||||||
|
* getPrivileges().equals(role.getPrivileges()) : role.getPrivileges() == null; }
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ package org.springframework.samples.petclinic.model.common;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
import org.apache.commons.lang3.builder.EqualsBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.HashCodeBuilder;
|
||||||
import org.springframework.samples.petclinic.common.CommonError;
|
import org.springframework.samples.petclinic.common.CommonError;
|
||||||
import org.springframework.samples.petclinic.common.CommonParameter;
|
import org.springframework.samples.petclinic.common.CommonParameter;
|
||||||
import org.springframework.security.core.GrantedAuthority;
|
import org.springframework.security.core.GrantedAuthority;
|
||||||
|
@ -154,5 +156,32 @@ public class User extends Person implements Serializable, UserDetails {
|
||||||
|
|
||||||
return getGrantedAuthorities(getPrivileges(this.roles));
|
return getGrantedAuthorities(getPrivileges(this.roles));
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* @Override public boolean equals(Object o) { if (this == o) return true;
|
||||||
|
*
|
||||||
|
* if (!(o instanceof User)) return false;
|
||||||
|
*
|
||||||
|
* User user = (User) o;
|
||||||
|
*
|
||||||
|
* return new EqualsBuilder().appendSuper(super.equals(o)).append(isEnabled(),
|
||||||
|
* user.isEnabled()) .append(isAccountNonExpired(), user.isAccountNonExpired())
|
||||||
|
* .append(isAccountNonLocked(), user.isAccountNonLocked())
|
||||||
|
* .append(isCredentialsNonExpired(),
|
||||||
|
* user.isCredentialsNonExpired()).append(getEmail(), user.getEmail())
|
||||||
|
* .append(getPassword(), user.getPassword()).append(getRoles(), user.getRoles())
|
||||||
|
* .append(getTelephone(), user.getTelephone()).append(getStreet1(),
|
||||||
|
* user.getStreet1()) .append(getStreet2(), user.getStreet2()).append(getStreet3(),
|
||||||
|
* user.getStreet3()) .append(getZipCode(), user.getZipCode()).append(getCity(),
|
||||||
|
* user.getCity()) .append(getCountry(), user.getCountry()).isEquals(); }
|
||||||
|
*
|
||||||
|
* @Override public int hashCode() { return new HashCodeBuilder(17,
|
||||||
|
* 37).append(getEmail()).append(getPassword()).append(isEnabled())
|
||||||
|
* .append(isAccountNonExpired()).append(isAccountNonLocked()).append(
|
||||||
|
* isCredentialsNonExpired())
|
||||||
|
* .append(getRoles()).append(getTelephone()).append(getStreet1()).append(getStreet2()
|
||||||
|
* )
|
||||||
|
* .append(getStreet3()).append(getZipCode()).append(getCity()).append(getCountry()).
|
||||||
|
* toHashCode(); }
|
||||||
|
*/
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,51 @@
|
||||||
|
package org.springframework.samples.petclinic.repository;
|
||||||
|
|
||||||
|
import org.springframework.data.jpa.repository.Query;
|
||||||
|
import org.springframework.data.repository.Repository;
|
||||||
|
import org.springframework.data.repository.query.Param;
|
||||||
|
import org.springframework.samples.petclinic.model.common.Privilege;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Repository class for <code>Privilege</code> domain objects All method names are
|
||||||
|
* compliant with Spring Data naming conventions so this interface can easily be extended
|
||||||
|
* for Spring
|
||||||
|
*
|
||||||
|
* @author Paul-Emmanuel DOS SANTOS FACAO
|
||||||
|
*/
|
||||||
|
public interface PrivilegeRepository extends Repository<Privilege, Integer> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a {@link Privilege} from the data store by id.
|
||||||
|
* @param id the id to search for
|
||||||
|
* @return the {@link Privilege} if found
|
||||||
|
*/
|
||||||
|
@Query("SELECT privilege FROM Privilege privilege join fetch privilege.roles WHERE privilege.id =:id")
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
Privilege findById(@Param("id") Integer id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve a {@link Privilege} from the data store by id.
|
||||||
|
* @param name the name to search for
|
||||||
|
* @return the {@link Privilege} if found
|
||||||
|
*/
|
||||||
|
@Query("SELECT privilege FROM Privilege privilege left join fetch privilege.roles WHERE privilege.name =:name")
|
||||||
|
@Transactional(readOnly = true)
|
||||||
|
Privilege findByName(@Param("name") String name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve all {@link Privilege}s from the data store
|
||||||
|
* @return a Collection of {@link Privilege}s (or an empty Collection if none
|
||||||
|
*/
|
||||||
|
Collection<Privilege> findAll();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save a {@link Privilege} to the data store, either inserting or updating it.
|
||||||
|
* @param privilege the {@link Privilege} to save
|
||||||
|
* @return the {@link Privilege} saved
|
||||||
|
*/
|
||||||
|
Privilege save(Privilege privilege);
|
||||||
|
|
||||||
|
}
|
|
@ -43,7 +43,15 @@ public interface RoleRepository extends Repository<Role, Integer> {
|
||||||
/**
|
/**
|
||||||
* Save a {@link Role} to the data store, either inserting or updating it.
|
* Save a {@link Role} to the data store, either inserting or updating it.
|
||||||
* @param role the {@link Role} to save
|
* @param role the {@link Role} to save
|
||||||
|
* @return the {@link Role} saved
|
||||||
*/
|
*/
|
||||||
Role save(Role role);
|
Role save(Role role);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete a {@link Role} to the data store.
|
||||||
|
* @param role the {@link Role} to delete
|
||||||
|
* @return the {@link Role} deleted
|
||||||
|
*/
|
||||||
|
Role delete(Role role);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,12 +3,10 @@ package org.springframework.samples.petclinic.repository;
|
||||||
import org.springframework.data.jpa.repository.Query;
|
import org.springframework.data.jpa.repository.Query;
|
||||||
import org.springframework.data.repository.Repository;
|
import org.springframework.data.repository.Repository;
|
||||||
import org.springframework.data.repository.query.Param;
|
import org.springframework.data.repository.query.Param;
|
||||||
import org.springframework.samples.petclinic.model.business.Owner;
|
|
||||||
import org.springframework.samples.petclinic.model.common.User;
|
import org.springframework.samples.petclinic.model.common.User;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repository class for <code>User</code> domain objects All method names are compliant
|
* Repository class for <code>User</code> domain objects All method names are compliant
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
package org.springframework.samples.petclinic.service.common;
|
||||||
|
|
||||||
|
import org.modelmapper.ModelMapper;
|
||||||
|
import org.springframework.samples.petclinic.dto.common.PrivilegeDTO;
|
||||||
|
import org.springframework.samples.petclinic.model.common.Privilege;
|
||||||
|
import org.springframework.samples.petclinic.repository.PrivilegeRepository;
|
||||||
|
import org.springframework.samples.petclinic.service.business.BaseService;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple Service between Privilege entity and PrivilegeDTO Data Transfert Object.
|
||||||
|
*
|
||||||
|
* @author Paul-Emmanuel DOS SANTOS FACAO
|
||||||
|
*/
|
||||||
|
@Service("PrivilegeService")
|
||||||
|
public class PrivilegeService implements BaseService<Privilege, PrivilegeDTO> {
|
||||||
|
|
||||||
|
private final PrivilegeRepository privilegeRepository;
|
||||||
|
|
||||||
|
private final ModelMapper modelMapper = new ModelMapper();
|
||||||
|
|
||||||
|
public PrivilegeService(PrivilegeRepository privilegeRepository) {
|
||||||
|
this.privilegeRepository = privilegeRepository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Privilege dtoToEntity(PrivilegeDTO dto) {
|
||||||
|
if (dto != null) {
|
||||||
|
return modelMapper.map(dto, Privilege.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Privilege();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PrivilegeDTO entityToDTO(Privilege entity) {
|
||||||
|
if (entity != null) {
|
||||||
|
return modelMapper.map(entity, PrivilegeDTO.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new PrivilegeDTO();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PrivilegeDTO> entitiesToDTOS(List<Privilege> entities) {
|
||||||
|
List<PrivilegeDTO> dtos = new ArrayList<>();
|
||||||
|
|
||||||
|
entities.forEach(entity -> dtos.add(entityToDTO(entity)));
|
||||||
|
|
||||||
|
return dtos;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Privilege> dtosToEntities(List<PrivilegeDTO> dtos) {
|
||||||
|
List<Privilege> entities = new ArrayList<>();
|
||||||
|
|
||||||
|
dtos.forEach(dto -> entities.add(dtoToEntity(dto)));
|
||||||
|
|
||||||
|
return entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PrivilegeDTO findById(int id) {
|
||||||
|
return entityToDTO(privilegeRepository.findById(id));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PrivilegeDTO> findAll() {
|
||||||
|
Collection<Privilege> privileges = privilegeRepository.findAll();
|
||||||
|
List<PrivilegeDTO> privilegeDTOS = new ArrayList<>();
|
||||||
|
|
||||||
|
privileges.forEach(privilege -> {
|
||||||
|
privilegeDTOS.add(entityToDTO(privilege));
|
||||||
|
});
|
||||||
|
|
||||||
|
return privilegeDTOS;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PrivilegeDTO save(PrivilegeDTO dto) {
|
||||||
|
Privilege privilege = dtoToEntity(dto);
|
||||||
|
privilege = privilegeRepository.save(privilege);
|
||||||
|
|
||||||
|
return entityToDTO(privilege);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PrivilegeDTO findByName(String name) {
|
||||||
|
return entityToDTO(privilegeRepository.findByName(name));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -12,7 +12,7 @@ import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple Service between Specialty entity and SpecialtyDTO Data Transfert Object.
|
* Simple Service between Role entity and RoleDTO Data Transfert Object.
|
||||||
*
|
*
|
||||||
* @author Paul-Emmanuel DOS SANTOS FACAO
|
* @author Paul-Emmanuel DOS SANTOS FACAO
|
||||||
*/
|
*/
|
||||||
|
@ -39,7 +39,9 @@ public class RoleService implements BaseService<Role, RoleDTO> {
|
||||||
@Override
|
@Override
|
||||||
public RoleDTO entityToDTO(Role entity) {
|
public RoleDTO entityToDTO(Role entity) {
|
||||||
if (entity != null) {
|
if (entity != null) {
|
||||||
return modelMapper.map(entity, RoleDTO.class);
|
RoleDTO roleDTO = modelMapper.map(entity, RoleDTO.class);
|
||||||
|
roleDTO.getUsers().forEach(userDTO -> userDTO.setMatchingPassword(userDTO.getPassword()));
|
||||||
|
return roleDTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new RoleDTO();
|
return new RoleDTO();
|
||||||
|
@ -63,11 +65,6 @@ public class RoleService implements BaseService<Role, RoleDTO> {
|
||||||
return entities;
|
return entities;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public RoleDTO findById(int id) {
|
|
||||||
return entityToDTO(roleRepository.findById(id));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RoleDTO> findAll() {
|
public List<RoleDTO> findAll() {
|
||||||
Collection<Role> roles = roleRepository.findAll();
|
Collection<Role> roles = roleRepository.findAll();
|
||||||
|
@ -80,6 +77,11 @@ public class RoleService implements BaseService<Role, RoleDTO> {
|
||||||
return roleDTOS;
|
return roleDTOS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public RoleDTO findById(int id) {
|
||||||
|
return entityToDTO(roleRepository.findById(id));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RoleDTO save(RoleDTO dto) {
|
public RoleDTO save(RoleDTO dto) {
|
||||||
Role role = dtoToEntity(dto);
|
Role role = dtoToEntity(dto);
|
||||||
|
@ -88,6 +90,13 @@ public class RoleService implements BaseService<Role, RoleDTO> {
|
||||||
return entityToDTO(role);
|
return entityToDTO(role);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RoleDTO delete(RoleDTO dto) {
|
||||||
|
Role role = dtoToEntity(dto);
|
||||||
|
role = roleRepository.delete(role);
|
||||||
|
|
||||||
|
return entityToDTO(role);
|
||||||
|
}
|
||||||
|
|
||||||
public RoleDTO findByName(String name) {
|
public RoleDTO findByName(String name) {
|
||||||
return entityToDTO(roleRepository.findByName(name));
|
return entityToDTO(roleRepository.findByName(name));
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,6 @@ public class UserService implements BaseService<User, UserDTO> {
|
||||||
}
|
}
|
||||||
|
|
||||||
User user = modelMapper.map(dto, User.class);
|
User user = modelMapper.map(dto, User.class);
|
||||||
user.setPassword(dto.getPassword());
|
|
||||||
dto.getRoles().forEach(role -> user.addRole(modelMapper.map(role, Role.class)));
|
dto.getRoles().forEach(role -> user.addRole(modelMapper.map(role, Role.class)));
|
||||||
|
|
||||||
return user;
|
return user;
|
||||||
|
@ -51,7 +50,6 @@ public class UserService implements BaseService<User, UserDTO> {
|
||||||
}
|
}
|
||||||
|
|
||||||
UserDTO userDto = modelMapper.map(entity, UserDTO.class);
|
UserDTO userDto = modelMapper.map(entity, UserDTO.class);
|
||||||
userDto.setPassword(entity.getPassword());
|
|
||||||
userDto.setMatchingPassword(entity.getPassword());
|
userDto.setMatchingPassword(entity.getPassword());
|
||||||
|
|
||||||
return userDto;
|
return userDto;
|
||||||
|
|
|
@ -43,23 +43,9 @@ input:hover,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add appropriate colors to fb, twitter and google buttons */
|
/* add appropriate colors to fb, twitter and google buttons */
|
||||||
.fb {
|
.btn-social {
|
||||||
background-color: #3B5998;
|
width: 25%;
|
||||||
color: white;
|
margin: 10px;
|
||||||
}
|
|
||||||
|
|
||||||
.twitter {
|
|
||||||
background-color: #55ACEE;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.google {
|
|
||||||
background-color: #dd4b39;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.github {
|
|
||||||
background-color: #dd4b39;
|
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="navbar" style="position:absolute; bottom:0; width:100%;">
|
<footer class="navbar" style="position:fixed; bottom:0; width:100%;">
|
||||||
<div id="main-content" class="container">
|
<div id="main-content" class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<form class="form-inline">
|
<form class="form-inline">
|
||||||
|
@ -128,7 +128,7 @@
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-noty/2.3.7/packaged/jquery.noty.packaged.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-noty/2.3.7/packaged/jquery.noty.packaged.min.js"></script>
|
||||||
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.4.0/animate.min.css">
|
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.4.0/animate.min.css">
|
||||||
<script th:src="@{/js/notification.js}"></script>
|
<script th:src="@{/resources/js/notification.js}"></script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
displayMessage();
|
displayMessage();
|
||||||
|
|
|
@ -17,9 +17,12 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="col-sm-offset-2 col-sm-10">
|
<div class="col-sm-offset-2 col-sm-10">
|
||||||
<button class="btn btn-default" type="submit">Login</button>
|
<button class="btn btn-default" type="submit">
|
||||||
<a href="/register" class="btn btn-default" ><span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
|
<span class="glyphicon glyphicon-log-in" aria-hidden="true"> Login</span>
|
||||||
<span>Register</span></a>
|
</button>
|
||||||
|
<a href="/register" class="btn btn-default" >
|
||||||
|
<span class="glyphicon glyphicon-pencil" aria-hidden="true"> Register</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -28,13 +31,13 @@
|
||||||
<h2 style="text-align:center">Login with Social Media</h2>
|
<h2 style="text-align:center">Login with Social Media</h2>
|
||||||
|
|
||||||
<div class="col-md-12 " th:each="url : ${urls}" style="text-align:center">
|
<div class="col-md-12 " th:each="url : ${urls}" style="text-align:center">
|
||||||
<a th:if="${url.key == 'Google'}" th:href="${url.value}" class="btn btn-bloc" style="background-color: #dd4b39;color: white">
|
<a th:if="${url.key == 'Google'}" th:href="${url.value}" class="btn btn-bloc btn-social btn-lg" style="background-color: #dd4b39">
|
||||||
<i class="fa fa-google fa-fw"></i> Login with Google
|
<i class="fa fa-google fa-fw"></i> Login with Google
|
||||||
</a>
|
</a>
|
||||||
<a th:if="${url.key == 'GitHub'}" th:href="${url.value}" class="btn btn-bloc" style="background-color: white;color: black">
|
<a th:if="${url.key == 'GitHub'}" th:href="${url.value}" class="btn btn-bloc btn-social btn-lg" style="background-color: black">
|
||||||
<i class="fa fa-github fa-fw"></i> Login with Github
|
<i class="fa fa-github fa-fw"></i> Login with Github
|
||||||
</a>
|
</a>
|
||||||
<a th:if="${url.key == 'Facebook'}" th:href="${url.value}" class="btn btn-bloc" style="background-color: #3B5998;color: white">
|
<a th:if="${url.key == 'Facebook'}" th:href="${url.value}" class="btn btn-bloc btn-social btn-lg" style="background-color: #3B5998">
|
||||||
<i class="fa fa-facebook fa-fw"></i> Login with Facebook
|
<i class="fa fa-facebook fa-fw"></i> Login with Facebook
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||||
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
|
@ -65,9 +66,20 @@ import org.springframework.test.web.servlet.MockMvc;
|
||||||
includeFilters = @ComponentScan.Filter(value = PetTypeFormatter.class, type = FilterType.ASSIGNABLE_TYPE))
|
includeFilters = @ComponentScan.Filter(value = PetTypeFormatter.class, type = FilterType.ASSIGNABLE_TYPE))
|
||||||
@RunWith(SpringRunner.class)
|
@RunWith(SpringRunner.class)
|
||||||
@ExtendWith(MockitoExtension.class)
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
@AutoConfigureTestDatabase
|
||||||
class PetControllerTest {
|
class PetControllerTest {
|
||||||
|
|
||||||
private static final int TEST_OWNER_ID = 1;
|
private static final int OWNER_ID = 15;
|
||||||
|
|
||||||
|
private static final String OWNER_FIRST_NAME = "Joe";
|
||||||
|
|
||||||
|
private static final String OWNER_LAST_NAME = "BLOGGS";
|
||||||
|
|
||||||
|
private static final String OWNER_ADDRESS = "123 Caramel Street";
|
||||||
|
|
||||||
|
private static final String OWNER_CITY = "London";
|
||||||
|
|
||||||
|
private static final String OWNER_PHONE = "6085551023";
|
||||||
|
|
||||||
private static final int TEST_PET_ID = 1;
|
private static final int TEST_PET_ID = 1;
|
||||||
|
|
||||||
|
@ -91,13 +103,21 @@ class PetControllerTest {
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void beforeEach() {
|
void beforeEach() {
|
||||||
PetTypeDTO cat = new PetTypeDTO();
|
PetTypeDTO petTypeDTO = new PetTypeDTO();
|
||||||
cat.setId(3);
|
petTypeDTO.setId(3);
|
||||||
cat.setName("hamster");
|
petTypeDTO.setName("hamster");
|
||||||
|
OwnerDTO ownerDTO = new OwnerDTO();
|
||||||
|
ownerDTO = new OwnerDTO();
|
||||||
|
ownerDTO.setId(OWNER_ID);
|
||||||
|
ownerDTO.setFirstName(OWNER_FIRST_NAME);
|
||||||
|
ownerDTO.setLastName(OWNER_LAST_NAME);
|
||||||
|
ownerDTO.setAddress(OWNER_ADDRESS);
|
||||||
|
ownerDTO.setCity(OWNER_CITY);
|
||||||
|
ownerDTO.setTelephone(OWNER_PHONE);
|
||||||
|
|
||||||
given(this.ownerService.findById(TEST_OWNER_ID)).willReturn(new OwnerDTO());
|
given(this.ownerService.findById(OWNER_ID)).willReturn(ownerDTO);
|
||||||
given(this.petService.findById(TEST_PET_ID)).willReturn(new PetDTO());
|
given(this.petService.findById(TEST_PET_ID)).willReturn(new PetDTO());
|
||||||
given(this.petService.findPetTypes()).willReturn(Lists.newArrayList(cat));
|
given(this.petService.findPetTypes()).willReturn(Lists.newArrayList(petTypeDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -105,7 +125,7 @@ class PetControllerTest {
|
||||||
@Tag("initCreationForm")
|
@Tag("initCreationForm")
|
||||||
@DisplayName("Verify that Pet creation form is initialized")
|
@DisplayName("Verify that Pet creation form is initialized")
|
||||||
void givenOwnerId_whenAskToCreatePet_thenDisplayCreationViewWithRightPet() throws Exception {
|
void givenOwnerId_whenAskToCreatePet_thenDisplayCreationViewWithRightPet() throws Exception {
|
||||||
mockMvc.perform(get(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, TEST_OWNER_ID))
|
mockMvc.perform(get(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, OWNER_ID))
|
||||||
.andExpect(status().is2xxSuccessful()).andExpect(view().name(CommonView.PET_CREATE_OR_UPDATE))
|
.andExpect(status().is2xxSuccessful()).andExpect(view().name(CommonView.PET_CREATE_OR_UPDATE))
|
||||||
.andExpect(model().attributeExists(CommonAttribute.PET));
|
.andExpect(model().attributeExists(CommonAttribute.PET));
|
||||||
}
|
}
|
||||||
|
@ -115,7 +135,7 @@ class PetControllerTest {
|
||||||
@Tag("processCreationForm")
|
@Tag("processCreationForm")
|
||||||
@DisplayName("Verify that call the right view with parameters when attempt to create Pet")
|
@DisplayName("Verify that call the right view with parameters when attempt to create Pet")
|
||||||
void givenNewPet_whenPostNewPet_thenSavePetAndRedirectToOwnerView() throws Exception {
|
void givenNewPet_whenPostNewPet_thenSavePetAndRedirectToOwnerView() throws Exception {
|
||||||
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, TEST_OWNER_ID)
|
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, OWNER_ID)
|
||||||
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_TYPE, "hamster")
|
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_TYPE, "hamster")
|
||||||
.param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12")).andExpect(status().is3xxRedirection())
|
.param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12")).andExpect(status().is3xxRedirection())
|
||||||
.andExpect(view().name(CommonView.OWNER_OWNERS_ID_R));
|
.andExpect(view().name(CommonView.OWNER_OWNERS_ID_R));
|
||||||
|
@ -126,7 +146,7 @@ class PetControllerTest {
|
||||||
@Tag("processCreationForm")
|
@Tag("processCreationForm")
|
||||||
@DisplayName("Verify that return to Pet creation form when pet has no name")
|
@DisplayName("Verify that return to Pet creation form when pet has no name")
|
||||||
void givenNewPetWithoutName_whenPostNewPet_thenRedirectToPetUpdate() throws Exception {
|
void givenNewPetWithoutName_whenPostNewPet_thenRedirectToPetUpdate() throws Exception {
|
||||||
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, TEST_OWNER_ID)
|
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, OWNER_ID)
|
||||||
.param(CommonAttribute.PET_TYPE, "hamster").param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12"))
|
.param(CommonAttribute.PET_TYPE, "hamster").param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12"))
|
||||||
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
||||||
.andExpect(model().attributeHasErrors(CommonAttribute.PET))
|
.andExpect(model().attributeHasErrors(CommonAttribute.PET))
|
||||||
|
@ -142,7 +162,7 @@ class PetControllerTest {
|
||||||
@DisplayName("Verify that return to Pet creation form when pet has no type")
|
@DisplayName("Verify that return to Pet creation form when pet has no type")
|
||||||
void givenNewPetWithoutType_whenPostNewPet_thenRedirectToPetUpdate() throws Exception {
|
void givenNewPetWithoutType_whenPostNewPet_thenRedirectToPetUpdate() throws Exception {
|
||||||
|
|
||||||
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, TEST_OWNER_ID)
|
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, OWNER_ID)
|
||||||
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12"))
|
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12"))
|
||||||
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
||||||
.andExpect(model().attributeHasErrors(CommonAttribute.PET))
|
.andExpect(model().attributeHasErrors(CommonAttribute.PET))
|
||||||
|
@ -172,7 +192,7 @@ class PetControllerTest {
|
||||||
@DisplayName("Verify that return to Pet creation form when pet has no birth date")
|
@DisplayName("Verify that return to Pet creation form when pet has no birth date")
|
||||||
void givenNewPetWithoutBirthDate_whenPostNewPet_thenRedirectToPetUpdate() throws Exception {
|
void givenNewPetWithoutBirthDate_whenPostNewPet_thenRedirectToPetUpdate() throws Exception {
|
||||||
|
|
||||||
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, TEST_OWNER_ID)
|
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_NEW, OWNER_ID)
|
||||||
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_TYPE, "hamster"))
|
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_TYPE, "hamster"))
|
||||||
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
||||||
.andExpect(model().attributeHasErrors(CommonAttribute.PET))
|
.andExpect(model().attributeHasErrors(CommonAttribute.PET))
|
||||||
|
@ -187,7 +207,7 @@ class PetControllerTest {
|
||||||
@Tag("initUpdateForm")
|
@Tag("initUpdateForm")
|
||||||
@DisplayName("Verify that Pet update form is initialized with the right Pet")
|
@DisplayName("Verify that Pet update form is initialized with the right Pet")
|
||||||
void givenPetId_whenGetUpdatePet_thenReturnUpdateViewWithPet() throws Exception {
|
void givenPetId_whenGetUpdatePet_thenReturnUpdateViewWithPet() throws Exception {
|
||||||
mockMvc.perform(get(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_ID_EDIT, TEST_OWNER_ID, TEST_PET_ID))
|
mockMvc.perform(get(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_ID_EDIT, OWNER_ID, TEST_PET_ID))
|
||||||
.andExpect(status().isOk()).andExpect(model().attributeExists(CommonAttribute.PET))
|
.andExpect(status().isOk()).andExpect(model().attributeExists(CommonAttribute.PET))
|
||||||
.andExpect(view().name(CommonView.PET_CREATE_OR_UPDATE));
|
.andExpect(view().name(CommonView.PET_CREATE_OR_UPDATE));
|
||||||
}
|
}
|
||||||
|
@ -196,7 +216,7 @@ class PetControllerTest {
|
||||||
@WithMockUser(value = WebSecurityConfig.TEST_USER)
|
@WithMockUser(value = WebSecurityConfig.TEST_USER)
|
||||||
@Tag("processUpdateForm")
|
@Tag("processUpdateForm")
|
||||||
void givenOwnerAndModifiedPet_whenAskToUpdatePet_thenUpdatePetAndDisplayOwnerView() throws Exception {
|
void givenOwnerAndModifiedPet_whenAskToUpdatePet_thenUpdatePetAndDisplayOwnerView() throws Exception {
|
||||||
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_ID_EDIT, TEST_OWNER_ID, TEST_PET_ID)
|
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_ID_EDIT, OWNER_ID, TEST_PET_ID)
|
||||||
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_TYPE, "hamster")
|
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_TYPE, "hamster")
|
||||||
.param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12")).andExpect(status().is3xxRedirection())
|
.param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12")).andExpect(status().is3xxRedirection())
|
||||||
.andExpect(view().name(CommonView.OWNER_OWNERS_ID_R));
|
.andExpect(view().name(CommonView.OWNER_OWNERS_ID_R));
|
||||||
|
@ -206,7 +226,7 @@ class PetControllerTest {
|
||||||
@WithMockUser(value = WebSecurityConfig.TEST_USER)
|
@WithMockUser(value = WebSecurityConfig.TEST_USER)
|
||||||
@Tag("processUpdateForm")
|
@Tag("processUpdateForm")
|
||||||
void testProcessUpdateFormHasErrors() throws Exception {
|
void testProcessUpdateFormHasErrors() throws Exception {
|
||||||
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_ID_EDIT, TEST_OWNER_ID, TEST_PET_ID)
|
mockMvc.perform(post(CommonEndPoint.OWNERS_ID + CommonEndPoint.PETS_ID_EDIT, OWNER_ID, TEST_PET_ID)
|
||||||
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12"))
|
.param(CommonAttribute.PET_NAME, "Betty").param(CommonAttribute.PET_BIRTH_DATE, "2015-02-12"))
|
||||||
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
.andExpect(model().attributeHasNoErrors(CommonAttribute.OWNER))
|
||||||
.andExpect(model().attributeHasErrors(CommonAttribute.PET)).andExpect(status().isOk())
|
.andExpect(model().attributeHasErrors(CommonAttribute.PET)).andExpect(status().isOk())
|
||||||
|
|
|
@ -92,7 +92,7 @@ class VisitControllerIntegrationTest {
|
||||||
expected.setDate(LocalDate.now());
|
expected.setDate(LocalDate.now());
|
||||||
expected.setPetId(PET_ID);
|
expected.setPetId(PET_ID);
|
||||||
|
|
||||||
assertThat(found.getVisits()).contains(expected);
|
assertThat(found.getVisits()).usingElementComparatorOnFields("petId", "date").contains(expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -136,7 +136,7 @@ class VisitControllerTest {
|
||||||
expected.setDate(LocalDate.now());
|
expected.setDate(LocalDate.now());
|
||||||
expected.setPetId(PET_ID);
|
expected.setPetId(PET_ID);
|
||||||
|
|
||||||
assertThat(found.getVisits()).contains(expected);
|
assertThat(found.getVisits()).usingElementComparatorOnFields("petId", "date").contains(expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -23,7 +23,6 @@ import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMock
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.boot.test.mock.mockito.MockBean;
|
import org.springframework.boot.test.mock.mockito.MockBean;
|
||||||
import org.springframework.samples.petclinic.controller.WebSecurityConfig;
|
import org.springframework.samples.petclinic.controller.WebSecurityConfig;
|
||||||
import org.springframework.samples.petclinic.controller.common.CrashController;
|
|
||||||
import org.springframework.samples.petclinic.service.common.UserDetailsServiceImpl;
|
import org.springframework.samples.petclinic.service.common.UserDetailsServiceImpl;
|
||||||
import org.springframework.security.test.context.support.WithMockUser;
|
import org.springframework.security.test.context.support.WithMockUser;
|
||||||
import org.springframework.test.web.servlet.MockMvc;
|
import org.springframework.test.web.servlet.MockMvc;
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.springframework.samples.petclinic.service;
|
package org.springframework.samples.petclinic.service.business;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
@ -25,7 +25,6 @@ import org.junit.jupiter.api.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
|
||||||
import org.springframework.samples.petclinic.model.business.Owner;
|
import org.springframework.samples.petclinic.model.business.Owner;
|
||||||
import org.springframework.samples.petclinic.repository.OwnerRepository;
|
import org.springframework.samples.petclinic.repository.OwnerRepository;
|
||||||
import org.springframework.samples.petclinic.model.business.Pet;
|
import org.springframework.samples.petclinic.model.business.Pet;
|
||||||
|
@ -35,7 +34,7 @@ import org.springframework.samples.petclinic.model.business.Vet;
|
||||||
import org.springframework.samples.petclinic.repository.VetRepository;
|
import org.springframework.samples.petclinic.repository.VetRepository;
|
||||||
import org.springframework.samples.petclinic.model.business.Visit;
|
import org.springframework.samples.petclinic.model.business.Visit;
|
||||||
import org.springframework.samples.petclinic.repository.VisitRepository;
|
import org.springframework.samples.petclinic.repository.VisitRepository;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.samples.petclinic.service.EntityUtils;
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package org.springframework.samples.petclinic.service;
|
package org.springframework.samples.petclinic.service.business;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
@ -19,9 +19,6 @@ import org.springframework.samples.petclinic.repository.OwnerRepository;
|
||||||
import org.springframework.samples.petclinic.repository.PetRepository;
|
import org.springframework.samples.petclinic.repository.PetRepository;
|
||||||
import org.springframework.samples.petclinic.repository.PetTypeRepository;
|
import org.springframework.samples.petclinic.repository.PetTypeRepository;
|
||||||
import org.springframework.samples.petclinic.repository.VisitRepository;
|
import org.springframework.samples.petclinic.repository.VisitRepository;
|
||||||
import org.springframework.samples.petclinic.service.business.OwnerService;
|
|
||||||
import org.springframework.samples.petclinic.service.business.PetService;
|
|
||||||
import org.springframework.samples.petclinic.service.business.PetTypeService;
|
|
||||||
import org.springframework.test.context.junit4.SpringRunner;
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
@ -134,7 +131,6 @@ class OwnerServiceTest {
|
||||||
for (Pet pet : found.getPets()) {
|
for (Pet pet : found.getPets()) {
|
||||||
assertThat(owner.getPets()).extracting("id").contains(pet.getId());
|
assertThat(owner.getPets()).extracting("id").contains(pet.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
|
@ -1,4 +1,4 @@
|
||||||
package org.springframework.samples.petclinic.service;
|
package org.springframework.samples.petclinic.service.business;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.jupiter.api.*;
|
import org.junit.jupiter.api.*;
|
|
@ -1,4 +1,4 @@
|
||||||
package org.springframework.samples.petclinic.service;
|
package org.springframework.samples.petclinic.service.business;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
|
@ -0,0 +1,221 @@
|
||||||
|
package org.springframework.samples.petclinic.service.common;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.*;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
|
||||||
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
|
import org.springframework.samples.petclinic.dto.common.PrivilegeDTO;
|
||||||
|
import org.springframework.samples.petclinic.dto.common.RoleDTO;
|
||||||
|
import org.springframework.samples.petclinic.dto.common.UserDTO;
|
||||||
|
import org.springframework.samples.petclinic.model.common.Privilege;
|
||||||
|
import org.springframework.samples.petclinic.model.common.Role;
|
||||||
|
import org.springframework.samples.petclinic.model.common.User;
|
||||||
|
import org.springframework.samples.petclinic.repository.RoleRepository;
|
||||||
|
import org.springframework.test.context.junit4.SpringRunner;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
@AutoConfigureTestDatabase
|
||||||
|
@SpringBootTest
|
||||||
|
@RunWith(SpringRunner.class)
|
||||||
|
class RoleServiceTest {
|
||||||
|
|
||||||
|
private final static Integer USER_ID = 2;
|
||||||
|
|
||||||
|
private final static Integer ROLE_ID = 4;
|
||||||
|
|
||||||
|
private final static Integer PRIVILEGE_ID = 3;
|
||||||
|
|
||||||
|
private final static String ROLE_NAME = "ROLE_TEST";
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RoleRepository roleRepository;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private UserService userService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private PrivilegeService privilegeService;
|
||||||
|
|
||||||
|
private RoleService roleService;
|
||||||
|
|
||||||
|
private User user;
|
||||||
|
|
||||||
|
private UserDTO userDTO;
|
||||||
|
|
||||||
|
private Role role;
|
||||||
|
|
||||||
|
private RoleDTO roleDTO;
|
||||||
|
|
||||||
|
private Privilege privilege;
|
||||||
|
|
||||||
|
private PrivilegeDTO privilegeDTO;
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void beforeEach() {
|
||||||
|
userDTO = userService.findById(USER_ID);
|
||||||
|
user = userService.dtoToEntity(userDTO);
|
||||||
|
privilegeDTO = privilegeService.findById(PRIVILEGE_ID);
|
||||||
|
privilege = privilegeService.dtoToEntity(privilegeDTO);
|
||||||
|
|
||||||
|
roleService = new RoleService(roleRepository);
|
||||||
|
role = new Role();
|
||||||
|
role.setId(ROLE_ID);
|
||||||
|
role.setName(ROLE_NAME);
|
||||||
|
role.setUsers(Collections.singleton(user));
|
||||||
|
role.setPrivileges(Collections.singleton(privilege));
|
||||||
|
user.setRoles(Collections.singleton(role));
|
||||||
|
|
||||||
|
roleDTO = new RoleDTO();
|
||||||
|
roleDTO.setId(ROLE_ID);
|
||||||
|
roleDTO.setName(ROLE_NAME);
|
||||||
|
roleDTO.setUsers(Collections.singleton(userDTO));
|
||||||
|
roleDTO.setPrivileges(Collections.singleton(privilegeDTO));
|
||||||
|
userDTO.setRoles(Collections.singleton(roleDTO));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("dtoToEntity")
|
||||||
|
@DisplayName("Verify the convertion from DTO to Entity")
|
||||||
|
void dtoToEntity() {
|
||||||
|
Role found = roleService.dtoToEntity(roleDTO);
|
||||||
|
|
||||||
|
assertThat(found.getId()).isEqualTo(role.getId());
|
||||||
|
assertThat(found.getName()).isEqualTo(role.getName());
|
||||||
|
assertThat(found.getUsers()).usingElementComparatorIgnoringFields("roles").contains(user);
|
||||||
|
assertThat(found.getPrivileges()).usingElementComparatorIgnoringFields("roles").contains(privilege);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("entityToDTO")
|
||||||
|
@DisplayName("Verify the convertion from Entity to DTO")
|
||||||
|
void entityToDTO() {
|
||||||
|
RoleDTO found = roleService.entityToDTO(role);
|
||||||
|
|
||||||
|
assertThat(found.getId()).isEqualTo(roleDTO.getId());
|
||||||
|
assertThat(found.getName()).isEqualTo(roleDTO.getName());
|
||||||
|
assertThat(found.getUsers()).usingElementComparatorIgnoringFields("roles").contains(userDTO);
|
||||||
|
assertThat(found.getPrivileges()).usingElementComparatorIgnoringFields("roles").contains(privilegeDTO);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("dtosToEntities")
|
||||||
|
@DisplayName("Verify the convertion from DTOs list to Entities list")
|
||||||
|
void dtosToEntities() {
|
||||||
|
List<RoleDTO> roleDTOS = roleService.findAll();
|
||||||
|
List<Role> expected = new ArrayList<>();
|
||||||
|
roleDTOS.forEach(dto -> expected.add(roleService.dtoToEntity(dto)));
|
||||||
|
List<Role> found = roleService.dtosToEntities(roleDTOS);
|
||||||
|
|
||||||
|
assertThat(found).hasSameSizeAs(expected);
|
||||||
|
|
||||||
|
for (int i = 0; i < found.size(); i++) {
|
||||||
|
assertThat(found.get(i).getId()).isEqualTo(expected.get(i).getId());
|
||||||
|
assertThat(found.get(i).getName()).isEqualTo(expected.get(i).getName());
|
||||||
|
assertThat(found.get(i).getUsers()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.get(i).getUsers().toArray(new User[0]));
|
||||||
|
assertThat(found.get(i).getPrivileges()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.get(i).getPrivileges().toArray(new Privilege[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("entitiesToDTOS")
|
||||||
|
@DisplayName("Verify the convertion from Entities list to DTOs list")
|
||||||
|
void entitiesToDTOS() {
|
||||||
|
List<RoleDTO> expected = roleService.findAll();
|
||||||
|
List<Role> roles = new ArrayList<>();
|
||||||
|
expected.forEach(dto -> roles.add(roleService.dtoToEntity(dto)));
|
||||||
|
|
||||||
|
List<RoleDTO> found = roleService.entitiesToDTOS(roles);
|
||||||
|
|
||||||
|
assertThat(found).hasSameSizeAs(expected);
|
||||||
|
|
||||||
|
for (int i = 0; i < found.size(); i++) {
|
||||||
|
assertThat(found.get(i).getId()).isEqualTo(expected.get(i).getId());
|
||||||
|
assertThat(found.get(i).getName()).isEqualTo(expected.get(i).getName());
|
||||||
|
assertThat(found.get(i).getUsers()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.get(i).getUsers().toArray(new UserDTO[0]));
|
||||||
|
assertThat(found.get(i).getPrivileges()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.get(i).getPrivileges().toArray(new PrivilegeDTO[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("findById")
|
||||||
|
@DisplayName("Verify that we get RoleDTO by his ID")
|
||||||
|
void findById() {
|
||||||
|
List<RoleDTO> allDTO = roleService.findAll();
|
||||||
|
RoleDTO expected = allDTO.get(2);
|
||||||
|
|
||||||
|
RoleDTO found = roleService.findById(expected.getId());
|
||||||
|
|
||||||
|
assertThat(found.getId()).isEqualTo(expected.getId());
|
||||||
|
assertThat(found.getName()).isEqualTo(expected.getName());
|
||||||
|
assertThat(found.getUsers()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.getUsers().toArray(new UserDTO[0]));
|
||||||
|
assertThat(found.getPrivileges()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.getPrivileges().toArray(new PrivilegeDTO[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("findAll")
|
||||||
|
@DisplayName("Verify that the RoleDTO list contain all previous elements and the new saved one")
|
||||||
|
void findAll() {
|
||||||
|
List<RoleDTO> expected = roleService.findAll();
|
||||||
|
|
||||||
|
roleDTO.setUsers(new HashSet<>());
|
||||||
|
assertThat(expected).doesNotContain(roleDTO);
|
||||||
|
RoleDTO saved = roleService.save(roleDTO);
|
||||||
|
|
||||||
|
List<RoleDTO> found = roleService.findAll();
|
||||||
|
|
||||||
|
assertThat(found).hasSize(expected.size() + 1).usingElementComparatorOnFields("id", "name")
|
||||||
|
.containsOnlyOnceElementsOf(expected).contains(roleDTO);
|
||||||
|
|
||||||
|
roleService.delete(saved);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("findByName")
|
||||||
|
@DisplayName("Verify that we get RoleDTO by his Name")
|
||||||
|
void findByName() {
|
||||||
|
RoleDTO expected = roleService.findById(1);
|
||||||
|
|
||||||
|
RoleDTO found = roleService.findByName(expected.getName());
|
||||||
|
|
||||||
|
assertThat(found.getId()).isEqualTo(expected.getId());
|
||||||
|
assertThat(found.getName()).isEqualTo(expected.getName());
|
||||||
|
assertThat(found.getUsers()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.getUsers().toArray(new UserDTO[0]));
|
||||||
|
assertThat(found.getPrivileges()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(expected.getPrivileges().toArray(new PrivilegeDTO[0]));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Tag("save")
|
||||||
|
@DisplayName("Verify that all RoleDTO list contain the new saved one")
|
||||||
|
void save() {
|
||||||
|
assertThat(roleService.findAll()).doesNotContain(roleDTO);
|
||||||
|
roleDTO.setUsers(new HashSet<>());
|
||||||
|
RoleDTO saved = roleService.save(roleDTO);
|
||||||
|
RoleDTO found = roleService.findById(saved.getId());
|
||||||
|
|
||||||
|
assertThat(found.getId()).isEqualTo(saved.getId());
|
||||||
|
assertThat(found.getName()).isEqualTo(saved.getName());
|
||||||
|
assertThat(found.getUsers()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(saved.getUsers().toArray(new UserDTO[0]));
|
||||||
|
assertThat(found.getPrivileges()).usingElementComparatorIgnoringFields("roles")
|
||||||
|
.contains(saved.getPrivileges().toArray(new PrivilegeDTO[0]));
|
||||||
|
|
||||||
|
RoleDTO deleted = roleService.delete(saved);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue