io.lavagna.service.UserServiceTest.java Source code

Java tutorial

Introduction

Here is the source code for io.lavagna.service.UserServiceTest.java

Source

/**
 * This file is part of lavagna.
 *
 * lavagna is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * lavagna is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with lavagna.  If not, see <http://www.gnu.org/licenses/>.
 */
package io.lavagna.service;

import io.lavagna.config.PersistenceAndServiceConfig;
import io.lavagna.model.Permission;
import io.lavagna.model.Project;
import io.lavagna.model.Role;
import io.lavagna.model.UserToCreate;
import io.lavagna.model.UserWithPermission;
import io.lavagna.service.PermissionService;
import io.lavagna.service.ProjectService;
import io.lavagna.service.UserRepository;
import io.lavagna.service.UserService;
import io.lavagna.service.config.TestServiceConfig;

import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.annotation.Transactional;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = { TestServiceConfig.class, PersistenceAndServiceConfig.class })
@Transactional
public class UserServiceTest {

    @Autowired
    private ProjectService projectService;

    @Autowired
    private PermissionService permissionService;

    @Autowired
    private UserService userService;

    @Autowired
    private UserRepository userRepository;

    @Test
    public void createUserWithoutRole() {
        Assert.assertFalse(userRepository.userExistsAndEnabled("demo", "test"));
        UserToCreate userToCreate = new UserToCreate();
        userToCreate.setUsername("test");
        userToCreate.setProvider("demo");
        userToCreate.setEnabled(true);
        userService.createUser(userToCreate);
        Assert.assertTrue(userRepository.userExistsAndEnabled("demo", "test"));
        Assert.assertTrue(permissionService
                .findBaseRoleAndPermissionByUserId(userRepository.findUserByName("demo", "test").getId())
                .isEmpty());
    }

    @Test
    public void createUserWithRole() {
        Assert.assertFalse(userRepository.userExistsAndEnabled("demo", "test"));
        permissionService.createRole(new Role("A"));
        permissionService.createRole(new Role("B"));
        UserToCreate userToCreate = new UserToCreate();
        userToCreate.setUsername("test");
        userToCreate.setProvider("demo");
        userToCreate.setEnabled(true);
        userToCreate.setRoles(Arrays.asList("A", "B"));
        userService.createUser(userToCreate);
        Assert.assertTrue(userRepository.userExistsAndEnabled("demo", "test"));
        int userId = userRepository.findUserByName("demo", "test").getId();
        Map<String, ?> res = permissionService.findBaseRoleAndPermissionByUserId(userId);
        Assert.assertEquals(new HashSet<>(Arrays.asList("A", "B")), res.keySet());
    }

    @Test
    public void createUserWithPermissions() {
        projectService.create("test", "TEST", "desc");
        Project project = projectService.findByShortName("TEST");

        Set<Permission> permissions = EnumSet.of(Permission.READ, Permission.CREATE_FILE);
        permissionService.createRole(new Role("A"));
        permissionService.updatePermissionsToRole(new Role("A"), permissions);

        UserToCreate userToCreate = new UserToCreate();
        userToCreate.setUsername("test");
        userToCreate.setProvider("demo");
        userToCreate.setEnabled(true);
        userToCreate.setRoles(Arrays.asList("A"));
        userService.createUser(userToCreate);
        int userId = userRepository.findUserByName("demo", "test").getId();

        permissionService.createRoleInProjectId(new Role("ROLE_PROJ"), project.getId());
        permissionService.assignRoleToUsersInProjectId(new Role("ROLE_PROJ"), Collections.singleton(userId),
                project.getId());
        permissionService.updatePermissionsToRoleInProjectId(new Role("ROLE_PROJ"), permissions, project.getId());

        UserWithPermission uwp = userService.findUserWithPermission(userId);
        Assert.assertEquals(uwp.getBasePermissions().keySet(), permissions);
        Assert.assertEquals(uwp.getPermissionsForProject().get("TEST").keySet(), permissions);
    }

    @Test
    public void createUsers() {
        UserToCreate userToCreate1 = new UserToCreate();
        userToCreate1.setUsername("test1");
        userToCreate1.setProvider("demo");
        userToCreate1.setEnabled(true);
        UserToCreate userToCreate2 = new UserToCreate();
        userToCreate2.setUsername("test2");
        userToCreate2.setProvider("demo");
        userToCreate2.setEnabled(true);
        userService.createUsers(Arrays.asList(userToCreate1, userToCreate2));
        Assert.assertTrue(userRepository.userExistsAndEnabled("demo", "test1"));
        Assert.assertTrue(userRepository.userExistsAndEnabled("demo", "test2"));
    }
}