View Javadoc
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 }