PHP Classes

File: tests/Integracao/Api/AaaEmpresa.php

Recommend this page to a friend!
  Packages of Matheusz Maydana   Bames   tests/Integracao/Api/AaaEmpresa.php   Download  
File: tests/Integracao/Api/AaaEmpresa.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Bames
Application collection to study design patterns
Author: By
Last change:
Date: 1 year ago
Size: 7,341 bytes
 

Contents

Class file image Download
<?php

use App\Infraestrutura\Adaptadores\HTTP\ImplementacaoCurlClienteHTTP;

global $jwt;
global $email;
global $senha1;

if(!is_file(__DIR__.'/../../../.env')) {
    return;
}

beforeEach(function(){
    
    $this->clientHTTPAuth = new ImplementacaoCurlClienteHTTP([
        'baseURL' => 'http://localhost:8052'
    ]);
    
    $this->clientHTTPApi = new ImplementacaoCurlClienteHTTP([
        'baseURL' => 'http://localhost:8053'
    ]);
});

describe('(Auth): login', function() use (&$jwt, &$email, &$senha1){

    it("Vamos utilizar nestes testes o usuário teste automatizado. (E-mail: {$email} - Senha: {$senha1})", function() use (&$jwt){
        expect(true)->toBeTrue();
    })->group('Integracao', 'Empresa');

    it('Vamos logar no sistema com o usuario teste automatizado para pegar o JWT.', function() use (&$jwt, &$email, &$senha1){
    
        $resposta = $this->clientHTTPAuth->post('/login', [
            "email" => $email,
            "senha" => $senha1
        ]);
    
        $jwt = $resposta->body['access_token'];
    
        expect($resposta->code)->toBe(201)
            ->and($resposta->body)->toBeArray()
            ->and($jwt)->toBeString();
    
    })->group('Integracao', 'Empresa');
    
    it('Deverá ter criado já um JWT diferente de vazio', function() use (&$jwt){
        expect($jwt)->not->toBeEmpty();
    })->group('Integracao', 'Empresa');

})->group('Integracao', 'Empresa');


$empresaID = '';
describe('(Empresa): empresa', function() use (&$jwt, &$empresaID){

    it('Deverá retornar os dados da empresa', function() use (&$jwt, &$empresaID){

        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $resposta = $this->clientHTTPApi->get('/empresa');

        expect($resposta->code)->toBe(200)
            ->and($resposta->body)->toBeArray()
            ->and($resposta->body)->toHaveKey('codigo')
            ->and($resposta->body)->toHaveKey('apelido')
            ->and($resposta->body)->toHaveKey('documentoTipo')
            ->and($resposta->body)->toHaveKey('documentoNumero');

        $empresaID = $resposta->body['codigo'];

    })->group('Integracao', 'Empresa');

})->group('Integracao', 'Empresa');

describe('(Empresa): usuários', function() use (&$jwt){

    it('Deverá listar pelo menos 1 usuario da empresa', function() use (&$jwt){

        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $resposta = $this->clientHTTPApi->get('/empresa/usuarios');
    
        expect($resposta->code)->toBe(200)
            ->and($resposta->body)->toBeArray()
            ->and($resposta->body[0])->toHaveKey('codigo')
            ->and($resposta->body[0])->toHaveKey('nome')
            ->and($resposta->body[0])->toHaveKey('email');
    
    })->group('Integracao', 'Empresa');
    
    $emailCadastrar = '';
    it('Deverá cadastrar um novo usuário na empresa', function() use (&$jwt, &$emailCadastrar){
    
        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $emailCadastrar = "email-aqui-".rand(111111, 999999)."@gmail.com";
    
        $resposta = $this->clientHTTPApi->post('/empresa/usuarios', [
            "nome" => "Teste Automatizado",
            "email" => $emailCadastrar,
            "oab" => "RS 123".rand(111,999)
        ]);

        expect($resposta->code)->toBe(201)
            ->and($resposta->body)->toBeArray()
            ->and($resposta->body)->toHaveKey('message');
    
    })->group('Integracao', 'Empresa');
    
    it('Deverá retornar erro ao tentar cadastrar um novo usuário na empresa com email já existente', function() use (&$jwt, &$emailCadastrar){
    
        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $resposta = $this->clientHTTPApi->post('/empresa/usuarios', [
            "nome" => "Teste Automatizado Versao",
            "email" => $emailCadastrar,
            "oab" => "RS 123".rand(111,999)
        ]);
    
        expect($resposta->code)->toBe(400)
            ->and($resposta->body)->toBeArray()
            ->and($resposta->body)->toHaveKey('message')
            ->and($resposta->body['message'])->toBe('Já existe um colaborador com o e-mail informado.');
    
    })->group('Integracao', 'Empresa');
    
    it('Deverá retornar erro ao tentar cadastrar um novo usuário na empresa sem informar o email', function() use (&$jwt){
    
        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $resposta = $this->clientHTTPApi->post('/empresa/usuarios', [
            "nome" => "Teste Automatizado Versao",
        ]);
    
        expect($resposta->code)->toBe(400)
            ->and($resposta->body)->toBeArray()
            ->and($resposta->body)->toHaveKey('message')
            ->and($resposta->body['message'])->toBe('O e-mail precisa ser informado adequadamente.');
    
    })->group('Integracao', 'Empresa');
    
    it('Deverá retornar erro ao tentar cadastrar um novo usuário na empresa sem informar o nome completo', function() use (&$jwt){
    
        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $resposta = $this->clientHTTPApi->post('/empresa/usuarios', [
            "email" => "email-aqui-".random_int(1, 999999)."@gmail.com",
        ]);
    
        expect($resposta->code)->toBe(400)
            ->and($resposta->body)->toBeArray()
            ->and($resposta->body)->toHaveKey('message')
            ->and($resposta->body['message'])->toBe('O nome completo precisa ser informado adequadamente.');
    
    })->group('Integracao', 'Empresa');
    
    it('Deverá retornar erro ao tentar cadastrar um novo usuário na empresa sem informar o nome completo e o email', function() use (&$jwt){
    
        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $resposta = $this->clientHTTPApi->post('/empresa/usuarios', []);
    
        expect($resposta->code)->toBe(400)
            ->and($resposta->body)->toBeArray()
            ->and($resposta->body)->toHaveKey('message')
            ->and($resposta->body['message'])->toBe('O nome completo precisa ser informado adequadamente.');
    
    })->group('Integracao', 'Empresa');
    
    it('Deverá retornar uma lista com os usuarios da empresa, no mínimo 2', function() use (&$jwt){
    
        $this->clientHTTPApi->configurar([
            'headers' => [
                'Authorization: Bearer ' . $jwt
            ]
        ]);
    
        $resposta = $this->clientHTTPApi->get('/empresa/usuarios');
    
        expect($resposta->code)->toBe(200)
            ->and($resposta->body)->toBeArray()
            ->and(count($resposta->body))->toBeGreaterThan(1);
    
    })->group('Integracao', 'Empresa');

})->group('Integracao', 'Empresa');

afterAll(function() use(&$empresaID) {
    echo "Vamos limpar tudo da empresa com ID: $empresaID";
});