Package com.sparc.knappsack.components.services

Source Code of com.sparc.knappsack.components.services.AbstractServiceTests

package com.sparc.knappsack.components.services;

import com.sparc.knappsack.components.entities.Organization;
import com.sparc.knappsack.components.entities.User;
import com.sparc.knappsack.enums.UserRole;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.authentication.encoding.MessageDigestPasswordEncoder;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.transaction.TransactionConfiguration;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

import static org.junit.Assert.assertTrue;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:**/spring/test-applicationContext.xml"})
@TransactionConfiguration(transactionManager = "txManager", defaultRollback = true)
public abstract class AbstractServiceTests extends AbstractTransactionalJUnit4SpringContextTests {

    private User user;

    @PersistenceContext
    EntityManager entityManager;

    @Autowired(required = true)
    private UserService userService;

    @Before
    public void setup() {
        GrantedAuthority grantedAuthority = new GrantedAuthority() {
            @Override
            public String getAuthority() {
                return UserRole.ROLE_ADMIN.toString();
            }
        };
        List<GrantedAuthority> grantedAuthorities = new ArrayList<GrantedAuthority>();
        grantedAuthorities.add(grantedAuthority);
        user = getUserWithSecurityContext();
        UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken = new UsernamePasswordAuthenticationToken(user, "1234", grantedAuthorities);
        SecurityContextHolder.getContext().setAuthentication(usernamePasswordAuthenticationToken);
    }

    protected User getUserWithSecurityContext() {
        if (user == null) {
            MessageDigestPasswordEncoder passwordEncoder = new MessageDigestPasswordEncoder("SHA-256", true);
            user = createUser("user@knappsack.com", true, false);
        }

        return user;
    }

    protected void setActiveOrganizationOnUserInSecurityContext(Organization organization) {
        User securityContextUser = getUserWithSecurityContext();
        securityContextUser.setActiveOrganization(organization);
        userService.update(securityContextUser);
        userService.updateSecurityContext(securityContextUser);

        user = securityContextUser;
    }

    protected User createUser(String email, boolean activated, boolean passwordExpired) {
        MessageDigestPasswordEncoder passwordEncoder = new MessageDigestPasswordEncoder("SHA-256", true);
        User user = new User();
        user.setEmail(email);
        user.setFirstName("John");
        user.setLastName("Doe");
        user.setUsername(email);
        user.setPassword(passwordEncoder.encodePassword("1234", user.getEmail()));
        user.setActivationCode(UUID.randomUUID().toString());
        user.setActivated(activated);
        user.setPasswordExpired(passwordExpired);
        user.getUuid();

        userService.add(user);
        assertTrue(userService.doesEntityExist(user.getId()));

        return user;
    }

    protected void setActiveOrganizationOnUser(User user, Organization organization) {
        user.setActiveOrganization(organization);

        userService.update(user);
        assertTrue(userService.doesEntityExist(user.getId()));
        assertTrue(userService.getUsersByActiveOrganization(organization).contains(user));
    }
}
TOP

Related Classes of com.sparc.knappsack.components.services.AbstractServiceTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.