/*
* Copyright (c) 2015. Bearchoke
*/
package com.bearchoke.platform.server.frontend.web.controller;
import com.bearchoke.platform.api.user.dto.Principal;
import com.bearchoke.platform.api.user.enums.Gender;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors;
import org.springframework.test.web.servlet.request.RequestPostProcessor;
import javax.inject.Inject;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
/**
* Created by Bjorn Harvold
* Date: 1/4/15
* Time: 12:13 PM
* Responsibility:
*/
public abstract class AbstractControllerTest {
private static final String PASSWORD = "password";
private static final List<GrantedAuthority> adminCredentials = Collections.singletonList(new SimpleGrantedAuthority("ROLE_ADMIN"));
private static final List<GrantedAuthority> userCredentials = Collections.singletonList(new SimpleGrantedAuthority("ROLE_USER"));
private static final List<GrantedAuthority> managerCredentials = Collections.singletonList(new SimpleGrantedAuthority("ROLE_MANAGER"));
protected static final Principal administrator = new Principal("id1", "id1", "administrator@bearchoke.com", "Bjorn Harvold", "Bjorn", "Harvold", "/img/profile/god.png", Gender.Male, PASSWORD, adminCredentials, true, true, true, true);
protected static final Principal manager = new Principal("id2", "id2", "manager@bearchoke.com", "Jack Clayborne", "Jack", "Clayborne", "/img/profile/jack.png", Gender.Male, PASSWORD, managerCredentials, true, true, true, true);
protected static final Principal user = new Principal("id3", "id3", "user@bearchoke.com", "Tom Boy", "Tom", "Boy", "/img/profile/tomboy.png", Gender.Male, PASSWORD, userCredentials, true, true, true, true);
@Inject
private ObjectMapper objectMapper;
protected static RequestPostProcessor regularUser() {
return SecurityMockMvcRequestPostProcessors.user(user);
}
protected static RequestPostProcessor adminUser() {
return SecurityMockMvcRequestPostProcessors.user(administrator);
}
protected static RequestPostProcessor anonymousUser() {
return SecurityMockMvcRequestPostProcessors.user("anonymous");
}
protected static RequestPostProcessor managerUser() {
return SecurityMockMvcRequestPostProcessors.user(manager);
}
//
// protected static RequestPostProcessor regularUserAuthentication() {
// return SecurityMockMvcRequestPostProcessors.authentication(new TestingAuthenticationToken(user, PASSWORD, userCredentials));
// }
//
// protected static RequestPostProcessor adminUserAuthentication() {
// return SecurityMockMvcRequestPostProcessors.authentication(new TestingAuthenticationToken(administrator, PASSWORD, adminCredentials));
// }
//
// protected static RequestPostProcessor managerUserAuthentication() {
// return SecurityMockMvcRequestPostProcessors.authentication(new TestingAuthenticationToken(manager, PASSWORD, managerCredentials));
// }
protected byte[] convertObjectToJsonBytes(Object object) throws IOException {
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return objectMapper.writeValueAsBytes(object);
}
protected String convertObjectToJsonString(Object object) throws IOException {
return objectMapper.writeValueAsString(object);
}
protected String createStringWithLength(int length) {
StringBuilder builder = new StringBuilder();
for (int index = 0; index < length; index++) {
builder.append("a");
}
return builder.toString();
}
}