package org.kalipo.web.rest; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.ObjectMapper; import org.json.JSONException; import org.json.JSONObject; import org.mockito.Mockito; import org.springframework.http.MediaType; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.test.web.servlet.MvcResult; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import java.util.Collection; import java.util.LinkedList; import java.util.List; /** * Utility class for testing REST controllers. */ public class TestUtil { /** * MediaType for JSON UTF8 */ public static final MediaType APPLICATION_JSON_UTF8 = new MediaType( MediaType.APPLICATION_JSON.getType(), MediaType.APPLICATION_JSON.getSubtype(), Charset.forName("utf8")); /** * Convert an object to JSON byte array. * * @param object the object to convert * @return the JSON byte array * @throws IOException */ public static byte[] convertObjectToJsonBytes(Object object) throws IOException { ObjectMapper mapper = new ObjectMapper(); mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); return mapper.writeValueAsBytes(object); } public static void mockSecurityContext(Object principal, Collection<String> privileges) { AuthenticationStub authentication = new AuthenticationStub(); authentication.setPrincipal(principal); authentication.setAuthenticated(true); List<GrantedAuthority> authorities = new LinkedList<>(); privileges.forEach(privilege -> authorities.add(new SimpleGrantedAuthority(privilege))); authentication.setAuthorities(authorities); SecurityContext securityContext = Mockito.mock(SecurityContext.class); Mockito.when(securityContext.getAuthentication()).thenReturn(authentication); SecurityContextHolder.setContext(securityContext); } public static JSONObject toJson(MvcResult result) throws UnsupportedEncodingException, JSONException { return new JSONObject(result.getResponse().getContentAsString()); } }