nc.noumea.mairie.appock.core.impl.AppUserImplTest.java Source code

Java tutorial

Introduction

Here is the source code for nc.noumea.mairie.appock.core.impl.AppUserImplTest.java

Source

package nc.noumea.mairie.appock.core.impl;

/*-
 * #%L
 * Logiciel de Gestion des approvisionnements et des stocks des fournitures administratives de la Mairie de Nouma
 * %%
 * Copyright (C) 2017 Mairie de Nouma, Nouvelle-Caldonie
 * %%
 * This program 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.
 * 
 * This program 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 this program.  If not, see
 * <http://www.gnu.org/licenses/gpl-3.0.html>.
 * #L%
 */

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.validation.ConstraintViolationException;

import org.apache.commons.collections4.CollectionUtils;
import org.junit.Assert;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
import org.springframework.transaction.annotation.Transactional;

import com.google.common.collect.Lists;

import nc.noumea.mairie.appock.core.security.AppUser;
import nc.noumea.mairie.appock.enums.Role;
import nc.noumea.mairie.appock.repositories.AppUserRepository;
import nc.noumea.mairie.appock.services.AppUserService;

@ContextConfiguration(locations = { "/META-INF/spring/applicationContext-test.xml" })
public class AppUserImplTest extends AbstractTransactionalJUnit4SpringContextTests {

    @Autowired
    AppUserService appUserService;

    @Autowired
    AppUserRepository appUserRepository;

    @PersistenceContext(unitName = "persistenceUnit")
    private EntityManager appockEntityManager;

    @Test(expected = ConstraintViolationException.class)
    @Transactional("appockTransactionManager")
    public void creeAppUserVide() {
        AppUser appUser = new AppUser();
        appUserRepository.save(appUser);
        appockEntityManager.flush();
    }

    private AppUser creeAppUserEnBase(boolean actif, boolean gestionnaire, List<Role> listeRole) {
        AppUser appUser = new AppUser();
        appUser.setActif(actif);
        appUser.setEmail("test@test.com");
        appUser.setLogin("test");
        appUser.setNom("test");
        appUser.setPrenom("test");

        if (CollectionUtils.isNotEmpty(listeRole)) {
            for (Role role : listeRole) {
                appUser.addRole(role);
            }
        }

        AppUser result = appUserRepository.save(appUser);
        appockEntityManager.flush();

        return result;
    }

    @Test
    public void findAllWithRole() {

        List<Role> listeRole = new ArrayList<Role>();
        listeRole.add(Role.ROLE_ADMIN);

        creeAppUserEnBase(false, false, listeRole);

        Assert.assertTrue(CollectionUtils.isEmpty(appUserService.findAllWithRole(Role.ROLE_ADMIN, true))); // que les appUser actif (le notre n'est pas actif)

        // On passe le appUser gestionnaire mais toujours "non actif"
        AppUser appUserFromBdd = Lists.newArrayList(appUserRepository.findAll()).get(0);
        appUserFromBdd.setActif(false);
        appUserRepository.save(appUserFromBdd);
        appockEntityManager.flush();

        Assert.assertTrue(CollectionUtils.isEmpty(appUserService.findAllWithRole(Role.ROLE_ADMIN, true)));
        Assert.assertFalse(CollectionUtils.isEmpty(appUserService.findAllWithRole(Role.ROLE_ADMIN, false)));
    }
}