package br.com.dextra.dextranet.grupo;
import static br.com.dextra.dextranet.persistencia.TesteUtils.adicionarMembroGrupoGoogle;
import static br.com.dextra.dextranet.persistencia.TesteUtils.buscarGrupoGoogle;
import static br.com.dextra.dextranet.persistencia.TesteUtils.buscarUsuario;
import static br.com.dextra.dextranet.persistencia.TesteUtils.criarGrupoComOsIntegrantes;
import static br.com.dextra.dextranet.persistencia.TesteUtils.criarGrupoGoogle;
import static br.com.dextra.dextranet.persistencia.TesteUtils.criarUsuario;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import org.json.simple.parser.ParseException;
import org.junit.After;
import org.junit.Test;
import br.com.dextra.dextranet.grupo.servico.ServicoRepository;
import br.com.dextra.dextranet.grupo.servico.google.Aprovisionamento;
import br.com.dextra.dextranet.grupo.servico.google.GoogleGrupoJSON;
import br.com.dextra.dextranet.persistencia.TesteUtils;
import br.com.dextra.dextranet.usuario.Usuario;
import br.com.dextra.dextranet.usuario.UsuarioRepository;
import br.com.dextra.teste.TesteIntegracaoBase;
import com.google.api.services.admin.directory.model.Group;
import com.google.api.services.admin.directory.model.Member;
import com.google.appengine.api.datastore.EntityNotFoundException;
public class GrupoRSTest extends TesteIntegracaoBase {
private GrupoRepository repositorioGrupo = new GrupoRepository();
private MembroRepository repositorioMembro = new MembroRepository();
private UsuarioRepository usuarioRepository = new UsuarioRepository();
private GrupoRS grupoRS = new GrupoRSFake();
private ServicoGrupoRepository servicoGrupoRepository = new ServicoGrupoRepository();
private ServicoRepository servicoRepository = new ServicoRepository();
private Aprovisionamento aprovisionamento = new Aprovisionamento();
private static String USUARIO_LOGADO = "login.google";
private String emailGrupo = "grupo@dextra-sw.com";
private String nomeEmailGrupo = "grupo";
@After
public void removerDadosInseridos() throws IOException, GeneralSecurityException, URISyntaxException {
this.limpaGrupoInseridos(repositorioGrupo);
this.limpaMembroInseridos(repositorioMembro);
this.limpaServicoGrupo(servicoGrupoRepository);
this.limpaServico(servicoRepository);
aprovisionamento.removerGrupo(emailGrupo);
}
@Test
public void testaAdicionarGrupo() throws EntityNotFoundException, ParseException {
String nome = "Grupo A";
String descricao = "Grupo teste";
String email = "teste@dextra-sw.com";
Usuario usuario = new Usuario("JoaoDextrano");
usuario = usuarioRepository.persiste(usuario);
UsuarioJSON uMembro = new UsuarioJSON(usuario.getId(), usuario.getNome(), email);
List<GoogleGrupoJSON> googleGrupoJSON = null;
List<UsuarioJSON> uMembros = new ArrayList<UsuarioJSON>();
uMembros.add(uMembro);
GrupoJSON grupojson = new GrupoJSON(null, nome, descricao, uMembros, googleGrupoJSON);
Response response = grupoRS.adicionar(grupojson);
assertEquals(response.getStatus(), 200);
}
@Test
public void testaUsuarioInfraAdicionarNovoMembroAoGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario = criarUsuario(USUARIO_LOGADO, true);
criarGrupoComOsIntegrantes("grupoinfra", true, "Grupo Infra", true, usuario);
Usuario usuario1 = criarUsuario("usuario1", true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, usuario1);
GrupoJSON grupoJSON = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
List<UsuarioJSON> usuarios = grupoJSON.getUsuarios();
usuarios.add(new UsuarioJSON(null, "Usuario 2", "usuario@dextra-sw.com"));
grupoRS.atualizar(grupo.getId(), grupoJSON);
Response grupoResponse = grupoRS.obter(grupo.getId());
GrupoJSON grupoAtualizado = (GrupoJSON) grupoResponse.getEntity();
assertEquals(2, grupoAtualizado.getUsuarios().size());
assertEquals(usuario1.getUsername(), grupoAtualizado.getProprietario());
}
@Test
public void testaMembroDoGrupoAdicionarNovoMembroAoGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario = criarUsuario(USUARIO_LOGADO, true);
Usuario usuario1 = criarUsuario("usuario1", true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, usuario1, usuario);
GrupoJSON grupoJSON = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
List<UsuarioJSON> usuarios = grupoJSON.getUsuarios();
usuarios.add(new UsuarioJSON(null, "Usuario2", "usuario2@dextra-sw.com"));
grupoRS.atualizar(grupo.getId(), grupoJSON);
Response grupoResponse = grupoRS.obter(grupo.getId());
GrupoJSON grupoAtualizado = (GrupoJSON) grupoResponse.getEntity();
assertEquals(3, grupoAtualizado.getUsuarios().size());
assertEquals(usuario1.getUsername(), grupoAtualizado.getProprietario());
}
@Test
public void testaListaTodosGrupos() throws IOException, GeneralSecurityException, URISyntaxException {
Response response = grupoRS.listaTodosGrupos();
@SuppressWarnings("unchecked") List<String> emailsGrupos = (List<String>) response.getEntity();
assertTrue(emailsGrupos.size() > 0);
assertFalse(emailsContains(emailsGrupos, emailGrupo));
}
@Test
public void testaListaMembrosGrupo() throws IOException, GeneralSecurityException, URISyntaxException {
String email1 = "username1@dextra-sw.com";
String email2 = "username2@dextra-sw.com";
String email3 = "username3@dextra-sw.com";
TesteUtils.criarGrupoGoogle(emailGrupo);
Group grupo = aprovisionamento.obterGrupo(emailGrupo);
aprovisionamento.adicionarMembros(Arrays.asList(email1, email2, email3), grupo);
Response response = grupoRS.listaMembrosGrupo(emailGrupo);
@SuppressWarnings("unchecked") List<String> membros = (List<String>) response.getEntity();
assertTrue(emailsContains(membros, email1));
assertTrue(emailsContains(membros, email2));
assertTrue(emailsContains(membros, email3));
assertFalse(emailsContains(membros, "teste@dextra-sw.com.br"));
}
@Test
public void testaRemoverMembroProprietarioPeloUsuarioInfra() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario1 = criarUsuario("Usuario 1", true);
Usuario usuario2 = criarUsuario("Usuario 2", true);
Usuario proprietario = criarUsuario("Usuario 3", true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo1", true, proprietario, usuario2, usuario1);
Usuario usuarioInfra = criarUsuario(USUARIO_LOGADO, true);
criarGrupoComOsIntegrantes("grupoinfra", true, "Grupo Infra", true, usuarioInfra);
GrupoJSON grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
assertEquals(3, grupojson.getUsuarios().size());
grupojson = removerMembrodoGrupo(proprietario, grupo);
Response response = grupoRS.atualizar(grupo.getId(), grupojson);
grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
assertEquals(Status.OK.getStatusCode(), response.getStatus());
assertEquals(2, grupojson.getUsuarios().size());
assertFalse(grupojson.getProprietario().equals(proprietario.getUsername()));
}
@Test
public void testaNaoPodeAlterarGrupoInfra() throws EntityNotFoundException {
Usuario usuario = criarUsuario("usuarioX", true);
criarGrupoComOsIntegrantes("grupox", true, "Grupo X", true, usuario);
Usuario usuario1 = criarUsuario("usuario1", true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, usuario1);
GrupoJSON grupoJSON = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
List<UsuarioJSON> usuarios = grupoJSON.getUsuarios();
usuarios.add(new UsuarioJSON(null, "Usuario 2", "usuario@dextra-sw.com"));
grupoRS.atualizar(grupo.getId(), grupoJSON);
Response grupoResponse = grupoRS.obter(grupo.getId());
GrupoJSON grupoAtualizado = (GrupoJSON) grupoResponse.getEntity();
assertEquals(1, grupoAtualizado.getUsuarios().size());
}
@Test
public void testaAlterarGrupo() throws EntityNotFoundException {
if (usuarioRepository.obtemPorUsername(USUARIO_LOGADO) == null) {
criarUsuario(USUARIO_LOGADO, true);
}
String nome = "Grupo A";
String nomeAlterado = "Grupo alterado";
String descricao = "Grupo teste";
String descricaoAlterada = "Grupo teste alterado";
String nomeMembro = "JoaoDextrano";
String nomeMembroAlterado = "JoseDextrano";
String email = "teste@dextra-sw.com";
Usuario usuario = new Usuario(nomeMembro);
usuario = usuarioRepository.persiste(usuario);
Grupo grupo = new Grupo(nome, descricao, grupoRS.obtemUsernameUsuarioLogado());
grupo = repositorioGrupo.persiste(grupo);
repositorioMembro.persiste(new Membro(usuario.getId(), grupo.getId(), usuario.getNome(), email));
GrupoJSON grupojsonAtualizar = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
grupojsonAtualizar.setNome(nomeAlterado);
grupojsonAtualizar.setDescricao(descricaoAlterada);
UsuarioJSON usuariojson = new UsuarioJSON(null, nomeMembroAlterado, email);
List<UsuarioJSON> usuariosjson = new ArrayList<UsuarioJSON>();
usuariosjson.add(usuariojson);
grupojsonAtualizar.setUsuarios(usuariosjson);
grupoRS.atualizar(grupojsonAtualizar.getId(), grupojsonAtualizar);
Response response = grupoRS.obter(grupo.getId());
assertNotNull(response.getEntity());
GrupoJSON grupojson = (GrupoJSON) response.getEntity();
assertEquals(grupojson.getNome(), nomeAlterado);
assertEquals(grupojson.getDescricao(), descricaoAlterada);
assertEquals(grupojson.getUsuarios().get(0).getNome(), nomeMembroAlterado);
}
@Test
public void testaNaoPodeRemoverMembroGrupoPorMembrodeOutroGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario1 = criarUsuario("Usuario 1", true);
Usuario usuario2 = criarUsuario("Usuario 2", true);
Usuario proprietario = criarUsuario(USUARIO_LOGADO, true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo1", true, proprietario, usuario2);
criarGrupoComOsIntegrantes("outrogrupo", false, "OutroGrupo", true, usuario1);
USUARIO_LOGADO = usuario1.getUsername();
GrupoJSON grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
assertEquals(2, grupojson.getUsuarios().size());
List<UsuarioJSON> usuarios = grupojson.getUsuarios();
UsuarioJSON usuarioExcluir = null;
for (UsuarioJSON usuarioJSON : usuarios) {
if (usuarioJSON.getId().equals(usuario2.getId())) {
usuarioExcluir = usuarioJSON;
}
}
usuarios.remove(usuarioExcluir);
grupojson.setUsuarios(usuarios);
Response response = grupoRS.atualizar(grupo.getId(), grupojson);
grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
assertEquals(Status.FORBIDDEN.getStatusCode(), response.getStatus());
assertEquals(2, grupojson.getUsuarios().size());
USUARIO_LOGADO = "login.google";
}
@Test
public void testaRemoverProprietarioGrupoPorOutroMembrodoGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario proprietario = criarUsuario("Usuario 1", true);
Usuario usuario2 = criarUsuario("Usuario 2", true);
Usuario usuario1 = criarUsuario(USUARIO_LOGADO, true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo1", true, proprietario, usuario1, usuario2);
int qtdeMembrosAntesDaAtualizacao = ((GrupoJSON) grupoRS.obter(grupo.getId()).getEntity()).getUsuarios().size();
GrupoJSON grupojson = removerMembrodoGrupo(proprietario, grupo);
Response response = grupoRS.atualizar(grupo.getId(), grupojson);
grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
assertEquals(3, qtdeMembrosAntesDaAtualizacao);
assertEquals(Status.OK.getStatusCode(), response.getStatus());
assertEquals(2, grupojson.getUsuarios().size());
assertFalse(grupojson.getProprietario().equals(proprietario.getUsername()));
}
@Test
public void testaRemoverMembroGrupoPorOutroMembrodoGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario1 = criarUsuario("Usuario 1", true);
Usuario usuario2 = criarUsuario("Usuario 2", true);
Usuario proprietario = criarUsuario(USUARIO_LOGADO, true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo1", false, proprietario, usuario1, usuario2);
USUARIO_LOGADO = usuario1.getUsername();
GrupoJSON grupojson = removerMembrodoGrupo(usuario2, grupo);
Response response = grupoRS.atualizar(grupo.getId(), grupojson);
grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
assertEquals(Status.OK.getStatusCode(), response.getStatus());
assertEquals(1, grupojson.getUsuarios().size());
assertEquals(proprietario.getUsername(), grupojson.getProprietario());
USUARIO_LOGADO = "login.google";
}
@Test
public void testaRemoverMembroGrupoPorUsuarioInfra() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario1 = criarUsuario("Usuario 1", true);
Usuario usuario2 = criarUsuario("Usuario 2", true);
Usuario proprietario = criarUsuario(USUARIO_LOGADO, true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo1", true, usuario1, usuario2);
criarGrupoComOsIntegrantes("grupo2", true, "Grupo2", true, proprietario);
GrupoJSON grupojson = removerMembrodoGrupo(usuario2, grupo);
Response response = grupoRS.atualizar(grupo.getId(), grupojson);
grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
assertEquals(Status.OK.getStatusCode(), response.getStatus());
assertEquals(1, grupojson.getUsuarios().size());
}
@Test
public void testaObterGrupo() throws EntityNotFoundException {
String nome = "Grupo A";
String descricao = "Grupo teste";
String email = "teste@dextra-sw.com";
Usuario usuario = new Usuario("JoaoDextrano");
usuario = usuarioRepository.persiste(usuario);
Grupo grupo = new Grupo(nome, descricao, grupoRS.obtemUsernameUsuarioLogado());
grupo = repositorioGrupo.persiste(grupo);
repositorioMembro.persiste(new Membro(usuario.getId(), grupo.getId(), usuario.getNome(), email));
Response response = grupoRS.obter(grupo.getId());
assertNotNull(response.getEntity());
GrupoJSON grupojson = (GrupoJSON) response.getEntity();
assertEquals(grupojson.getNome(), nome);
assertEquals(grupojson.getDescricao(), descricao);
assertEquals(grupojson.getUsuarios().get(0).getNome(), usuario.getNome());
}
@Test
@SuppressWarnings("unchecked")
public void testaListar() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
String nome = "Grupo A";
Usuario usuario = criarUsuario(USUARIO_LOGADO, true);
criarGrupoComOsIntegrantes("grupoa", false, "Grupo A", true, usuario);
Response response = grupoRS.listar();
List<GrupoJSON> gruposjson = (List<GrupoJSON>) response.getEntity();
for (GrupoJSON grupojson : gruposjson) {
assertEquals(grupojson.getNome(), nome);
assertEquals(grupojson.getUsuarios().get(0).getNome(), usuario.getNome());
}
}
@Test
public void testaNaoPodeRemoverGrupoPorMembrodoGrupoNaoProprietario() throws EntityNotFoundException, IOException,
GeneralSecurityException, URISyntaxException {
limpaUsuariosInseridos(usuarioRepository);
Usuario membro = criarUsuario(USUARIO_LOGADO, true);
Usuario proprietario = criarUsuario("proprietario", true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, proprietario, membro);
Response response = grupoRS.remover(grupo.getId());
assertEquals(Status.FORBIDDEN.getStatusCode(), response.getStatus());
}
@Test
public void testaRemoverGrupoInexistente() throws EntityNotFoundException, IOException, GeneralSecurityException,
URISyntaxException {
String nomeGrupo = "Grupo A";
Usuario usuario = buscarUsuario(USUARIO_LOGADO);
Grupo grupo = criarGrupoComOsIntegrantes("grupoinexistente", false, nomeGrupo, true, usuario);
grupoRS.remover(grupo.getId());
try {
repositorioGrupo.obtemPorId(grupo.getId());
} catch (EntityNotFoundException e) {
assertTrue(true);
}
assertTrue(buscarGrupoGoogle(emailGrupo) == null);
}
@Test
public void testaRemoverGrupo() throws EntityNotFoundException, IOException, GeneralSecurityException,
URISyntaxException {
String nomeGrupo = "Grupo A";
Usuario usuario = buscarUsuario(USUARIO_LOGADO);
Grupo grupo = criarGrupoComOsIntegrantes(nomeEmailGrupo, false, nomeGrupo, true, usuario);
criarGrupoGoogle(emailGrupo);
grupoRS.remover(grupo.getId());
try {
repositorioGrupo.obtemPorId(grupo.getId());
} catch (EntityNotFoundException e) {
assertTrue(true);
}
assertTrue(buscarGrupoGoogle(emailGrupo) == null);
}
@Test
public void testaRemoverServico() throws EntityNotFoundException, IOException, GeneralSecurityException,
URISyntaxException {
Usuario usuario = buscarUsuario(USUARIO_LOGADO);
Grupo grupo = criarGrupoComOsIntegrantes(nomeEmailGrupo, false, "Grupo 1", true, usuario);
List<ServicoGrupo> servicosGrupo = servicoGrupoRepository.obtemPorIdGrupo(grupo.getId());
Group group = aprovisionamento.criarGrupo("Grupo 1", emailGrupo, "");
aprovisionamento.adicionarMembros(Arrays.asList(USUARIO_LOGADO + "@dextra-sw.com"), group);
grupoRS.removerServico(grupo.getId(), servicosGrupo.get(0).getId());
List<ServicoGrupo> servicosGrupo1 = servicoGrupoRepository.obtemPorIdGrupo(grupo.getId());
Group group2 = buscarGrupoGoogle(emailGrupo);
assertTrue(servicosGrupo1.size() == 0);
assertTrue(group2 == null);
}
@Test
public void testaListagemDeGrupoComIntegranteRemovido() throws EntityNotFoundException {
Usuario lulao = criarUsuario("lulao", true);
Usuario dudi = criarUsuario(USUARIO_LOGADO, true);
criarGrupoComOsIntegrantes("vamobrugrao", false, "VamoBugrao", true, dudi, lulao);
this.removeUmDosUsuariosDoGrupo(lulao);
assertEquals(200, grupoRS.listar().getStatus());
}
@Test
public void testaUsuarioLogadoNaoPodeEditarGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
criarUsuario(USUARIO_LOGADO, true);
Usuario usuario1 = criarUsuario("usuario1", true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, usuario1, usuario1);
Response response = grupoRS.obter(grupo.getId());
GrupoJSON grupojson = (GrupoJSON) response.getEntity();
assertEquals(false, grupojson.isEditarGrupo().booleanValue());
}
@Test
public void testaUsuarioLogadoPodeEditarGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario = criarUsuario(USUARIO_LOGADO, true);
Usuario usuarioMembro = criarUsuario("membroInfra", true);
criarGrupoComOsIntegrantes("grupoinfra", true, "Grupo Infra", true, usuarioMembro, usuario);
Usuario usuario1 = criarUsuario("usuario1", true);
Grupo grupo = criarGrupoComOsIntegrantes(""
+ ""
+ "grupo1", false, "Grupo 1", true, usuario1, usuario1);
Response response = grupoRS.obter(grupo.getId());
GrupoJSON grupojson = (GrupoJSON) response.getEntity();
assertEquals(true, grupojson.isEditarGrupo().booleanValue());
}
@Test
public void testaMembrodoGrupoTemAcessoParaEditarGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario proprietario = criarUsuario("usuario", true);
Usuario membro = criarUsuario(USUARIO_LOGADO, true);
Grupo grupo = criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, proprietario, membro);
Response response = grupoRS.obter(grupo.getId());
GrupoJSON grupojson = (GrupoJSON) response.getEntity();
assertEquals(Boolean.TRUE, grupojson.isEditarGrupo());
}
@Test
@SuppressWarnings("unchecked")
public void testaMembroNaoPodeExcluirGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario membro = criarUsuario(USUARIO_LOGADO, true);
Usuario usuario1 = criarUsuario("usuario1", true);
criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, usuario1, membro);
Response response = grupoRS.listar();
List<GrupoJSON> gruposjson = (List<GrupoJSON>) response.getEntity();
assertEquals(false, gruposjson.get(0).isExcluirGrupo().booleanValue());
}
@Test
@SuppressWarnings("unchecked")
public void testaUsuarioLogadoNaoPodeExcluirGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
criarUsuario(USUARIO_LOGADO, true);
Usuario usuario1 = criarUsuario("usuario1", true);
criarGrupoComOsIntegrantes("Grupo1", false, "Grupo 1", true, usuario1, usuario1);
Response response = grupoRS.listar();
List<GrupoJSON> gruposjson = (List<GrupoJSON>) response.getEntity();
assertEquals(false, gruposjson.get(0).isExcluirGrupo().booleanValue());
}
@Test
public void testaUsuarioLogadoInfraPodeExcluirGrupo() throws EntityNotFoundException {
limpaUsuariosInseridos(usuarioRepository);
Usuario usuario = criarUsuario(USUARIO_LOGADO, true);
Usuario usuarioMembroInfra = criarUsuario("membroInfra", true);
criarGrupoComOsIntegrantes("GrupoInfra", true, "Grupo Infra", true, usuarioMembroInfra, usuario);
Usuario usuario1 = criarUsuario("usuario1", true);
criarGrupoComOsIntegrantes("grupo1", false, "Grupo 1", true, usuario1, usuario1);
Response response = grupoRS.listar();
@SuppressWarnings("unchecked") List<GrupoJSON> gruposjson = (List<GrupoJSON>) response.getEntity();
assertEquals(true, gruposjson.get(0).isExcluirGrupo().booleanValue());
}
@Test
public void testaAprovisionarServicos() throws IOException, ParseException, GeneralSecurityException,
URISyntaxException,
EntityNotFoundException {
GoogleGrupoJSON googleGrupojson = criarGrupoComUmUsuario();
Response response = grupoRS.aprovisionarServicos(Arrays.asList(googleGrupojson));
assertEquals(200, response.getStatus());
Group group = aprovisionamento.obterGrupo(emailGrupo);
List<Member> members = aprovisionamento.obterMembros(group);
assertTrue(members.size() == 1);
}
@Test
public void testaAtualizarIntegrantes() throws EntityNotFoundException, IOException, ParseException,
GeneralSecurityException,
URISyntaxException {
GoogleGrupoJSON googleGrupojson = criarGrupoComUmUsuario();
Response response = grupoRS.aprovisionarServicos(Arrays.asList(googleGrupojson));
assertEquals(200, response.getStatus());
UsuarioJSON usuariojson2 = new UsuarioJSON();
usuariojson2.setEmail("usuario.2@dextra-sw.com");
usuariojson2.setAtivo(true);
usuariojson2.setApelido("Usuario2");
usuariojson2.setUsername("usuario.2");
usuariojson2.setNome("Usuario2");
googleGrupojson.setUsuarioJSONs(Arrays.asList(usuariojson2));
response = grupoRS.aprovisionarServicos(Arrays.asList(googleGrupojson));
assertEquals(200, response.getStatus());
Group group = aprovisionamento.obterGrupo(emailGrupo);
List<Member> members = aprovisionamento.obterMembros(group);
assertTrue(members.size() == 2);
}
@Test
public void testaRemoverIntegrantes() throws IOException, ParseException, GeneralSecurityException,
URISyntaxException,
EntityNotFoundException {
String emailUsuario1 = "usuario.1@dextra-sw.com";
String emailUsuario2 = "usuario.2@dextra-sw.com";
Group group = criarGrupoGoogle(emailGrupo);
List<String> emailMembros = Arrays.asList(emailUsuario1, emailUsuario2);
adicionarMembroGrupoGoogle(emailMembros, emailGrupo);
Usuario usuario = criarUsuario("Usuario1", true);
Grupo grupo = criarGrupoComOsIntegrantes(nomeEmailGrupo, false, "Grupo", true, usuario);
List<ServicoGrupo> servicos = servicoGrupoRepository.obtemPorIdGrupo(grupo.getId());
GoogleGrupoJSON googleGrupojson = new GoogleGrupoJSON();
googleGrupojson.setEmailGrupo(nomeEmailGrupo);
googleGrupojson.setId(grupo.getId());
googleGrupojson.setIdServico(servicos.get(0).getIdServico());
UsuarioJSON usuariojson = new UsuarioJSON();
usuariojson.setEmail("usuario.1@dextra-sw.com");
usuariojson.setAtivo(true);
usuariojson.setApelido("Usuario1");
usuariojson.setUsername("usuario.1");
usuariojson.setNome("Usuario1");
googleGrupojson.setUsuarioJSONs(Arrays.asList(usuariojson));
grupoRS.removerIntegrantes(Arrays.asList(googleGrupojson));
List<Member> members = aprovisionamento.obterMembros(group);
assertTrue(members.size() == 1);
assertTrue(membrosContains(members, emailUsuario2));
}
private GrupoJSON removerMembrodoGrupo(Usuario membro, Grupo grupo) throws EntityNotFoundException {
GrupoJSON grupojson = (GrupoJSON) grupoRS.obter(grupo.getId()).getEntity();
List<UsuarioJSON> usuarios = grupojson.getUsuarios();
UsuarioJSON usuarioExcluir = null;
for (UsuarioJSON usuarioJSON : usuarios) {
if (usuarioJSON.getId().equals(membro.getId())) {
usuarioExcluir = usuarioJSON;
}
}
usuarios.remove(usuarioExcluir);
grupojson.setUsuarios(usuarios);
return grupojson;
}
private void removeUmDosUsuariosDoGrupo(Usuario usuario) {
usuarioRepository.remove(usuario.getId());
}
private Boolean membrosContains(List<Member> membros, String email) {
for (Member member : membros) {
if (member.getEmail().equals(email)) {
return true;
}
}
return false;
}
private Boolean emailsContains(List<String> emails, String email) {
for (String e : emails) {
if (e.equals(email)) {
return true;
}
}
return false;
}
private GoogleGrupoJSON criarGrupoComUmUsuario() throws EntityNotFoundException, IOException,
ParseException,
GeneralSecurityException,
URISyntaxException {
Usuario usuario = criarUsuario("usuario1", true);
Grupo grupo = criarGrupoComOsIntegrantes(nomeEmailGrupo, false, "Grupo", true, usuario);
List<ServicoGrupo> servicos = servicoGrupoRepository.obtemPorIdGrupo(grupo.getId());
GoogleGrupoJSON googleGrupojson = new GoogleGrupoJSON();
googleGrupojson.setEmailGrupo(nomeEmailGrupo);
googleGrupojson.setId(grupo.getId());
googleGrupojson.setIdServico(servicos.get(0).getIdServico());
UsuarioJSON usuariojson = new UsuarioJSON();
usuariojson.setEmail("usuario.1@dextra-sw.com");
usuariojson.setAtivo(true);
usuariojson.setApelido("Usuario1");
usuariojson.setUsername("usuario.1");
usuariojson.setNome("Usuario1");
googleGrupojson.setUsuarioJSONs(Arrays.asList(usuariojson));
return googleGrupojson;
}
public class GrupoRSFake extends GrupoRS {
@Override
protected String obtemUsernameUsuarioLogado() {
return USUARIO_LOGADO;
}
}
}