1 package org.oxerr.jackson.module.jsr250; 2 3 import static org.junit.jupiter.api.Assertions.assertEquals; 4 5 import java.io.Serializable; 6 7 import javax.annotation.security.DenyAll; 8 import javax.annotation.security.RolesAllowed; 9 10 import org.apache.logging.log4j.LogManager; 11 import org.apache.logging.log4j.Logger; 12 import org.junit.jupiter.api.BeforeEach; 13 import org.junit.jupiter.api.Test; 14 import org.springframework.security.authentication.TestingAuthenticationToken; 15 import org.springframework.security.core.Authentication; 16 import org.springframework.security.core.context.SecurityContextHolder; 17 18 import com.fasterxml.jackson.core.JsonProcessingException; 19 import com.fasterxml.jackson.databind.ObjectMapper; 20 21 class Jsr250ModuleTest { 22 23 private final Logger log = LogManager.getLogger(); 24 25 private User user; 26 27 @BeforeEach 28 void setUp() throws Exception { 29 this.user = new User(); 30 user.setNickname("John Doe"); 31 user.setUsername("john"); 32 user.setPassword("secret"); 33 } 34 35 @Test 36 void testNoJsr250Module() throws JsonProcessingException { 37 ObjectMapper objectMapper = new ObjectMapper(); 38 39 String json = objectMapper.writeValueAsString(user); 40 log.info(json); 41 assertEquals("{\"nickname\":\"John Doe\",\"username\":\"john\",\"password\":\"secret\"}", json); 42 } 43 44 @Test 45 void testJsr250Module() throws JsonProcessingException { 46 ObjectMapper objectMapper = new ObjectMapper(); 47 objectMapper.registerModule(new Jsr250Module()); 48 49 String json = objectMapper.writeValueAsString(user); 50 log.info(json); 51 assertEquals("{\"nickname\":\"John Doe\"}", json); 52 53 Authentication userAuthentication = new TestingAuthenticationToken("user", "pass", "ROLE_USER"); 54 SecurityContextHolder.getContext().setAuthentication(userAuthentication); 55 json = objectMapper.writeValueAsString(user); 56 log.info(json); 57 assertEquals("{\"nickname\":\"John Doe\"}", json); 58 59 Authentication adminAuthentication = new TestingAuthenticationToken("user", "pass", "ROLE_USER", "ROLE_ADMIN"); 60 SecurityContextHolder.getContext().setAuthentication(adminAuthentication); 61 json = objectMapper.writeValueAsString(user); 62 log.info(json); 63 assertEquals("{\"nickname\":\"John Doe\",\"username\":\"john\"}", json); 64 } 65 66 public static class User implements Serializable { 67 68 private static final long serialVersionUID = 2021080801L; 69 70 private String nickname; 71 72 private String username; 73 74 private String password; 75 76 public String getNickname() { 77 return nickname; 78 } 79 80 public void setNickname(String nickname) { 81 this.nickname = nickname; 82 } 83 84 @RolesAllowed("ROLE_ADMIN") 85 public String getUsername() { 86 return username; 87 } 88 89 public void setUsername(String username) { 90 this.username = username; 91 } 92 93 @DenyAll 94 public String getPassword() { 95 return password; 96 } 97 98 public void setPassword(String password) { 99 this.password = password; 100 } 101 102 } 103 104 }