| 
<?php
 use App\Infraestrutura\Adaptadores\HTTP\ImplementacaoCurlClienteHTTP;
 
 global $jwt;
 
 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('(Conta Bancaria):', function() use (&$jwt) {
 
 it('Deverá existir uma conta bancária criada no momento da criação da empresa.', function() use (&$jwt) {
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/contasbancarias');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0])->toHaveKey('chaveAPI')
 ->and($resposta->body[0])->toHaveKey('clientID')
 ->and($resposta->body[0])->toHaveKey('banco')
 ->and($resposta->body[0]['nome'])->toBe('Conta Principal - Empresa Teste');
 })
 ->group('Integracao', 'ContaBancaria');
 
 it('Deverá atualizar as informações da conta bancaria principal', function() use(&$jwt){
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/contasbancarias');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0])->toHaveKey('chaveAPI')
 ->and($resposta->body[0])->toHaveKey('clientID')
 ->and($resposta->body[0])->toHaveKey('banco')
 ->and($resposta->body[0]['nome'])->toBe('Conta Principal - Empresa Teste');
 
 $contaBancaria = $resposta->body[0];
 
 $resposta = $this->clientHTTPApi->put(
 endpoint: '/contasbancarias',
 data: [
 'codigo' => $contaBancaria['codigo'],
 'nome' => 'Conta Principal - Empresa Teste atualizada',
 'chaveAPI' => '$aact_MzkwODA2MWY2OGM3MWRlMDU2NWM3MzJlNzZmNGZhZGY6OmI2YmI4NWM3LWFkNTYtNGRiNi04YjgzLWI0YTM3MTBjOGRkMjo6JGFhY2hfNzUxMGY4ZmYtYTFhMS00NTgzLWJhMDEtYmQ1ODBlZGRmZDMz',
 'clientID' => 'c819cbad-7dcd-4ffb-ab57-3e961bcea57e',
 'ambiente' => 'Producao'
 ]
 );
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('message')
 ->and($resposta->body['message'])->toBe('As informações da conta bancária foram atualizadas com sucesso');
 })
 ->group('Integracao', 'ContaBancaria');
 
 it('As informações da conta bancaria principal precisam estar atualizadas', function() use(&$jwt){
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/contasbancarias');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0])->toHaveKey('chaveAPI')
 ->and($resposta->body[0])->toHaveKey('clientID')
 ->and($resposta->body[0])->toHaveKey('ambiente')
 ->and($resposta->body[0])->toHaveKey('banco')
 ->and($resposta->body[0]['nome'])->toBe('Conta Principal - Empresa Teste atualizada')
 ->and($resposta->body[0]['ambiente'])->toBe('Producao')
 ->and($resposta->body[0]['chaveAPI'])->toBe('****************')
 ->and($resposta->body[0]['clientID'])->toBe('c819cbad-7dcd-4ffb-ab57-3e961bcea57e');
 })
 ->group('Integracao', 'ContaBancaria');
 
 // Vamos deixar essa conta bancaria como Sandbox.
 it('Vamos atualizar o ambiente da conta bancaria de Producao para Sandbox', function() use(&$jwt){
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/contasbancarias');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0])->toHaveKey('chaveAPI')
 ->and($resposta->body[0])->toHaveKey('ambiente')
 ->and($resposta->body[0])->toHaveKey('clientID')
 ->and($resposta->body[0])->toHaveKey('banco')
 ->and($resposta->body[0]['nome'])->toBe('Conta Principal - Empresa Teste atualizada')
 ->and($resposta->body[0]['ambiente'])->toBe('Producao');
 
 $contaBancaria = $resposta->body[0];
 
 $resposta = $this->clientHTTPApi->put(
 endpoint: '/contasbancarias',
 data: [
 'codigo' => $contaBancaria['codigo'],
 'nome' => $contaBancaria['nome'],
 'chaveAPI' => $contaBancaria['chaveAPI'],
 'clientID' => $contaBancaria['clientID'],
 'ambiente' => 'Sandbox'
 ]
 );
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveKey('message')
 ->and($resposta->body['message'])->toBe('As informações da conta bancária foram atualizadas com sucesso');
 
 $this->clientHTTPApi->configurar([
 'headers' => [
 'Authorization: Bearer ' . $jwt
 ]
 ]);
 
 $resposta = $this->clientHTTPApi->get('/contasbancarias');
 
 expect($resposta->code)->toBe(200)
 ->and($resposta->body)->toBeArray()
 ->and($resposta->body)->toHaveCount(1)
 ->and($resposta->body[0])->toBeArray()
 ->and($resposta->body[0])->toHaveKey('codigo')
 ->and($resposta->body[0])->toHaveKey('nome')
 ->and($resposta->body[0])->toHaveKey('chaveAPI')
 ->and($resposta->body[0])->toHaveKey('ambiente')
 ->and($resposta->body[0])->toHaveKey('clientID')
 ->and($resposta->body[0])->toHaveKey('banco')
 ->and($resposta->body[0]['nome'])->toBe('Conta Principal - Empresa Teste atualizada')
 ->and($resposta->body[0]['ambiente'])->toBe('Sandbox');
 
 })
 ->group('Integracao', 'ContaBancaria');
 })
 ->group('Integracao', 'ContaBancaria');
 |