From 5ca38cd5f4a0efe802b4732e83163c6c8477f1b5 Mon Sep 17 00:00:00 2001 From: AndressaKarla Date: Mon, 8 Apr 2024 19:38:25 -0300 Subject: [PATCH] Algumas melhorias fixtures, workflow, readme, etc --- ...stes-automatizados-api-serve-rest-ruby.yml | 10 ++-- .gitignore | 5 +- README.md | 51 +++++++++---------- spec/requests/login_request.rb | 2 +- spec/requests/produto_request.rb | 2 +- spec/requests/usuario_request.rb | 4 +- spec/support/fixtures/usuario.example.json | 12 +++++ spec/support/fixtures/usuario.json | 12 ----- spec/tests/delete_usuario_test.rb | 14 ++--- spec/tests/post_login_test.rb | 20 ++++---- spec/tests/post_produto_test.rb | 14 ++--- spec/tests/post_usuario_test.rb | 20 ++++---- 12 files changed, 83 insertions(+), 83 deletions(-) create mode 100644 spec/support/fixtures/usuario.example.json delete mode 100644 spec/support/fixtures/usuario.json diff --git a/.github/workflows/workflow-testes-automatizados-api-serve-rest-ruby.yml b/.github/workflows/workflow-testes-automatizados-api-serve-rest-ruby.yml index aad7b5c..e5a4e1b 100644 --- a/.github/workflows/workflow-testes-automatizados-api-serve-rest-ruby.yml +++ b/.github/workflows/workflow-testes-automatizados-api-serve-rest-ruby.yml @@ -10,7 +10,7 @@ on: workflow_dispatch: jobs: - testes-automatizados-api-serve-rest-ruby: + ruby-api-rest: # agente de execução/runner do tipo máquina virtual bem enxuta, sem interface gráfica runs-on: ubuntu-latest @@ -18,14 +18,18 @@ jobs: - name: Passo 1 - Obter cópia do código-fonte do repositório uses: actions/checkout@v3 - - name: Passo 2 - Instalar ruby e Instalar dependências + - name: Passo 2 - Redirecionar os conteúdos de "secrets.USUARIO_ENV", para os arquivos "usuario.json", etc + run: | + echo '${{ secrets.USUARIO_ENV }}' > ./spec/support/fixtures/usuario.json + + - name: Passo 3 - Instalar ruby e Instalar dependências uses: ruby/setup-ruby@v1 with: ruby-version: '3.1.2' # executa o comando bundle install e armazena as gems instaladas automaticamente bundler-cache: true - - name: Passo 3 - Executar testes automatizados de API REST em um ambiente de desenvolvimento e Gerar relatório html + - name: Passo 4 - Executar testes automatizados de API REST em um ambiente de desenvolvimento e Gerar relatório html run: bundle exec rspec spec/tests/* - name: Passo 5 - Armazenar relatório html diff --git a/.gitignore b/.gitignore index 7ed08e5..451dfaa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ -*.log -Gemfile.lock \ No newline at end of file +Gemfile.lock +spec/support/fixtures/*.json +!spec/support/fixtures/*.example.json \ No newline at end of file diff --git a/README.md b/README.md index 2ed2e4e..9c29ebb 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Esse projeto "testes-automatizados-api-serve-rest_ruby" é executado em um ambie # :dart: Executar testes automatizados de API REST em um ambiente de desenvolvimento, Gerar e armazenar relatório html no GitHub Actions - Nesse repositório, acessar a aba "Actions" - Na seção "Actions", clicar em "Pipeline Testes Automatizados API ServeRest Postman" -- Em "This workflow has a workflow_dispatch event trigger.", clicar em "Run workflow" > "Run workflow" para executar testes automatizados de API REST, gerar e armazenar relatório html no GitHub Actions +- Em "This workflow has a workflow_dispatch event trigger.", clicar em "Run workflow" > "Run workflow" para executar testes automatizados de API REST, gerar e armazenar relatório html no GitHub Actions [com os conteúdos de "secrets.USUARIO_ENV", etc (baseado nos arquivos ["usuario.example.json"](https://github.com/AndressaKarla/testes-automatizados-api-serve-rest_ruby/tree/main/spec/support/fixtures/usuario.example.json), etc, e configurados na aba "Settings" desse repositório > "Secrets and variables" > "Actions" > "Secrets" > "Repository secrets") que foram redirecionados para os arquivos "usuario.json"] - Após o término da execução, clicar na run "Pipeline Testes Automatizados API ServeRest Postman" - Na seção "Artifacts", clicar em "relatorio-api-serve-rest-ruby" - Na janela aberta, escolher um diretório para baixar a pasta compactada "relatorio-api-serve-rest-ruby.zip" @@ -76,13 +76,6 @@ ruby -v ``` ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt] ``` - - -## :hammer_and_wrench: Rspec versão 3.12.0 -- No cmder aberto anteriormente, informar o comando abaixo para instalar o rspec versão 3.12.0 -``` -gem install rspec -v 3.12.0 -``` - Fechar esse cmder ou terminal ## :hammer_and_wrench: Baixar, instalar e configurar o git @@ -117,7 +110,7 @@ git clone git@github.com:AndressaKarla/testes-automatizados-api-serve-rest_ruby. ## :hammer_and_wrench: Instalar todas as dependências necessárias -- No cmder aberto anteriormente, informar o comando abaixo para acessar o projeto “testes-automatizados-web-front-serve-rest_ruby” clonado anteriormente +- No cmder aberto anteriormente, informar o comando abaixo para acessar o projeto “testes-automatizados-api-serve-rest_ruby” clonado anteriormente ``` cd testes-automatizados-api-serve-rest_ruby ``` @@ -129,7 +122,6 @@ C:\Users\usuario\Desktop\testes-automatizados-api-serve-rest_ruby ``` bundle install ``` -- Fechar esse cmder ## :hammer_and_wrench: Instalar as extensões no Visual Studio Code (VS Code) - Caso ainda não tenha o VS Code baixado e instalado, acessar o site do [Visual Studio Code](https://code.visualstudio.com/download), baixar e instalar com a opção "System Installer" @@ -144,17 +136,29 @@ bundle install - Material Icon Theme - Philipp Kief - Clicar na opção "Material Icon Theme" apresentada para habilitar a extensão - - Ruby - - Peng Lv - - VsCode Ruby - - Stafford Brunk - -- Fechar o VS Code - + - Simple Ruby ERB + - Victor Ortiz Heredia + +## :bookmark_tabs: Abrir o VS Code diretamente na pasta do projeto "testes-automatizados-api-serve-rest_ruby" +- No cmder aberto anteriormente, informar o comando abaixo para abrir o VS Code diretamente na pasta do projeto "testes-automatizados-api-serve-rest_ruby" +``` +code . +``` +- Aguardar o VS Code ser aberto +- Fechar esse cmder +- No VS Code aberto, caso seja apresentado "Do you trust the authors on the files in this folder?", marcar a opção "Trust the authors of all files in the parent folder ...." + - Clicar no botão "Yes, I trust the authors ...." + +## :hammer_and_wrench: Criar arquivos "usuario.json", informando os dados com base nos arquivos "usuario.example.json", etc +- No VS Code aberto anteriormente, acessar "spec > support > fixtures" +- Criar o arquivo "usuario.json" + - Informar os dados com base no arquivo ["usuario.example.json"](https://github.com/AndressaKarla/testes-automatizados-api-serve-rest_ruby/tree/main/spec/support/fixtures/usuario.example.json) + - Salvar o arquivo "usuario.json" com os dados informados anteriormente + --- # :dart: Executar testes automatizados de API REST em um ambiente de desenvolvimento, Gerar e armazenar relatório html no computador - Abrir uma janela do "Windows Explorer" -- Acessar o diretório onde foi clonado o projeto “testes-automatizados-web-front-serve-rest_ruby” +- Acessar o diretório onde foi clonado o projeto “testes-automatizados-api-serve-rest_ruby” - Copiar esse diretório - Abrir um novo cmder - Informar o comando abaixo para acessar o projeto "testes-automatizados-api-serve-rest_ruby" @@ -178,7 +182,7 @@ Ex. 2: bundle exec rspec spec/tests/delete_usuario_test.rb ``` -- Ou informar o comando abaixo para executar todas as features e/ou cenários do projeto (mesmo comando que é utilizado no "Passo 3" da "Pipeline Testes Automatizados API ServeRest Ruby" em ".github > workflows > [workflow-testes-automatizados-api-serve-rest-ruby.yml](https://github.com/AndressaKarla/testes-automatizados-api-serve-rest_ruby/blob/main/.github/workflows/workflow-testes-automatizados-api-serve-rest-ruby.yml)" no GitHub Actions) +- Ou informar o comando abaixo para executar todas as features e/ou cenários do projeto (mesmo comando que é utilizado no "Passo 4" do job "ruby-api-rest" da "Pipeline Testes Automatizados API ServeRest Ruby" em ".github > workflows > [workflow-testes-automatizados-api-serve-rest-ruby.yml](https://github.com/AndressaKarla/testes-automatizados-api-serve-rest_ruby/blob/main/.github/workflows/workflow-testes-automatizados-api-serve-rest-ruby.yml)" no GitHub Actions) e Gerar os resultados dos testes no computador: ``` bundle exec rspec spec/tests/* ``` @@ -186,15 +190,6 @@ bundle exec rspec spec/tests/* --- # Verificar no navegador padrão o relatório html gerado anteriormente no computador :female_detective: -## :bookmark_tabs: Abrir o VS Code diretamente na pasta do projeto "testes-automatizados-api-serve-rest_ruby" -- No cmder aberto anteriormente, informar o comando abaixo para abrir o VS Code diretamente na pasta do projeto "testes-automatizados-api-serve-rest_ruby" -``` -code . -``` -- No VS Code aberto, caso seja apresentado "Do you trust the authors on the files in this folder?", marcar a opção "Trust the authors of all files in the parent folder ...." - - Clicar no botão "Yes, I trust the authors ...." - - ## :bookmark_tabs: Relatório html no computador - No VS Code aberto anteriormente, acessar "relatorios > relatorio-api-serve-rest-ruby.html" - Clicar com botão direito do mouse sob o arquivo "relatorio-api-serve-rest-ruby.html" > "Reveal in File Explorer" diff --git a/spec/requests/login_request.rb b/spec/requests/login_request.rb index 165f45c..0145e7e 100644 --- a/spec/requests/login_request.rb +++ b/spec/requests/login_request.rb @@ -4,6 +4,6 @@ class Login include HTTParty def post_login(email, senha) - BaseApi.post('/login', body: { email: email, password: senha }.to_json, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }) + BaseApi.post('/login', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: { email: email, password: senha }.to_json) end end \ No newline at end of file diff --git a/spec/requests/produto_request.rb b/spec/requests/produto_request.rb index 7a84d17..082e50a 100644 --- a/spec/requests/produto_request.rb +++ b/spec/requests/produto_request.rb @@ -16,6 +16,6 @@ def gerar_numeros_aleatorios(qtde_numeros) end def post_produto(nome, preco, descricao, quantidade, token) - BaseApi.post('/produtos', body: { nome: nome, preco: preco, descricao: descricao, quantidade: quantidade }.to_json, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': token }) + BaseApi.post('/produtos', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'Authorization': token }, body: { nome: nome, preco: preco, descricao: descricao, quantidade: quantidade }.to_json) end end \ No newline at end of file diff --git a/spec/requests/usuario_request.rb b/spec/requests/usuario_request.rb index 9821349..e68988a 100644 --- a/spec/requests/usuario_request.rb +++ b/spec/requests/usuario_request.rb @@ -223,11 +223,11 @@ def gerar_senha end def post_usuario_padrao(nome_sobrenome, email, senha) - BaseApi.post('/usuarios', body: { nome: nome_sobrenome, email: email, password: senha, administrador: "false" }.to_json, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }) + BaseApi.post('/usuarios', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: { nome: nome_sobrenome, email: email, password: senha, administrador: "false" }.to_json) end def post_usuario_admin(nome_sobrenome, email, senha) - BaseApi.post('/usuarios', body: { nome: nome_sobrenome, email: email, password: senha, administrador: "true" }.to_json, headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }) + BaseApi.post('/usuarios', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: { nome: nome_sobrenome, email: email, password: senha, administrador: "true" }.to_json) end def delete_usuario(id) diff --git a/spec/support/fixtures/usuario.example.json b/spec/support/fixtures/usuario.example.json new file mode 100644 index 0000000..e79f005 --- /dev/null +++ b/spec/support/fixtures/usuario.example.json @@ -0,0 +1,12 @@ +{ + "admin_valido": { + "nome_sobrenome_valido": "informar-nome-sobrenome-usuario-admin-valido", + "email_valido": "informar-email-usuario-admin-valido@gmail.com", + "senha_valida": "informar-senha-usuario-admin-valido" + }, + "padrao_valido": { + "nome_sobrenome_valido": "informar-nome-sobrenome-usuario-padrao-valido", + "email_valido": "informar-email-usuario-padrao-valido@outlook.com", + "senha_valida": "informar-senha-usuario-padrao-valido" + } +} \ No newline at end of file diff --git a/spec/support/fixtures/usuario.json b/spec/support/fixtures/usuario.json deleted file mode 100644 index 7229c25..0000000 --- a/spec/support/fixtures/usuario.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "admin_valido1": { - "nome_sobrenome_valido1": "Usuário Admin", - "email_valido1": "usuario.admin@gmail.com", - "senha_valida1": "teste1234" - }, - "padrao_valido1": { - "nome_sobrenome_valido1": "Usuário Padrão", - "email_valido1": "usuario.padrao@outlook.com", - "senha_valida1": "teste1235" - } -} \ No newline at end of file diff --git a/spec/tests/delete_usuario_test.rb b/spec/tests/delete_usuario_test.rb index 28711bb..ec244b9 100644 --- a/spec/tests/delete_usuario_test.rb +++ b/spec/tests/delete_usuario_test.rb @@ -2,18 +2,18 @@ before(:all) do @usuario_fixture = carregar_fixture('usuario') - email_usuario_padrao_valido1 = @usuario_fixture['padrao_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido1) + email_usuario_padrao_valido = @usuario_fixture['padrao_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido) - email_usuario_admin_valido1 = @usuario_fixture['admin_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido1) + email_usuario_admin_valido = @usuario_fixture['admin_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido) end context "DEL usuario/id (administrador)" do before(:all) do - @nome_sobrenome = @usuario_fixture['admin_valido1']['nome_sobrenome_valido1'] - @email = @usuario_fixture['admin_valido1']['email_valido1'] - @senha = @usuario_fixture['admin_valido1']['senha_valida1'] + @nome_sobrenome = @usuario_fixture['admin_valido']['nome_sobrenome_valido'] + @email = @usuario_fixture['admin_valido']['email_valido'] + @senha = @usuario_fixture['admin_valido']['senha_valida'] @json_data_post_usuario = usuario.post_usuario_admin(@nome_sobrenome, @email, @senha) @id_obtido = @json_data_post_usuario['_id'] diff --git a/spec/tests/post_login_test.rb b/spec/tests/post_login_test.rb index eee4a37..44eaeb9 100644 --- a/spec/tests/post_login_test.rb +++ b/spec/tests/post_login_test.rb @@ -2,18 +2,18 @@ before(:all) do @usuario_fixture = carregar_fixture('usuario') - email_usuario_padrao_valido1 = @usuario_fixture['padrao_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido1) + email_usuario_padrao_valido = @usuario_fixture['padrao_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido) - email_usuario_admin_valido1 = @usuario_fixture['admin_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido1) + email_usuario_admin_valido = @usuario_fixture['admin_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido) end context "POST login (administrador)" do before(:all) do - @nome_sobrenome = @usuario_fixture['admin_valido1']['nome_sobrenome_valido1'] - @email = @usuario_fixture['admin_valido1']['email_valido1'] - @senha = @usuario_fixture['admin_valido1']['senha_valida1'] + @nome_sobrenome = @usuario_fixture['admin_valido']['nome_sobrenome_valido'] + @email = @usuario_fixture['admin_valido']['email_valido'] + @senha = @usuario_fixture['admin_valido']['senha_valida'] @json_data_post_usuario = usuario.post_usuario_admin(@nome_sobrenome, @email, @senha) @json_data_post_login = login.post_login(@email, @senha) @@ -32,9 +32,9 @@ context "POST login (padrão 1)" do before(:all) do - @nome_sobrenome = @usuario_fixture['padrao_valido1']['nome_sobrenome_valido1'] - @email = @usuario_fixture['padrao_valido1']['email_valido1'] - @senha = @usuario_fixture['padrao_valido1']['senha_valida1'] + @nome_sobrenome = @usuario_fixture['padrao_valido']['nome_sobrenome_valido'] + @email = @usuario_fixture['padrao_valido']['email_valido'] + @senha = @usuario_fixture['padrao_valido']['senha_valida'] @json_data_post_usuario = usuario.post_usuario_padrao(@nome_sobrenome, @email, @senha) @json_data_post_login = login.post_login(@email, @senha) diff --git a/spec/tests/post_produto_test.rb b/spec/tests/post_produto_test.rb index 4d438ae..f4c0fe7 100644 --- a/spec/tests/post_produto_test.rb +++ b/spec/tests/post_produto_test.rb @@ -2,18 +2,18 @@ before(:all) do @usuario_fixture = carregar_fixture('usuario') - email_usuario_padrao_valido1 = @usuario_fixture['padrao_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido1) + email_usuario_padrao_valido = @usuario_fixture['padrao_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido) - email_usuario_admin_valido1 = @usuario_fixture['admin_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido1) + email_usuario_admin_valido = @usuario_fixture['admin_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido) end context "POST produto 1" do before(:all) do - @nome_sobrenome = @usuario_fixture['admin_valido1']['nome_sobrenome_valido1'] - @email = @usuario_fixture['admin_valido1']['email_valido1'] - @senha = @usuario_fixture['admin_valido1']['senha_valida1'] + @nome_sobrenome = @usuario_fixture['admin_valido']['nome_sobrenome_valido'] + @email = @usuario_fixture['admin_valido']['email_valido'] + @senha = @usuario_fixture['admin_valido']['senha_valida'] @json_data_post_usuario = usuario.post_usuario_admin(@nome_sobrenome, @email, @senha) @json_data_post_login = login.post_login(@email, @senha) diff --git a/spec/tests/post_usuario_test.rb b/spec/tests/post_usuario_test.rb index 0b7c20a..e5ef018 100644 --- a/spec/tests/post_usuario_test.rb +++ b/spec/tests/post_usuario_test.rb @@ -2,18 +2,18 @@ before(:all) do @usuario_fixture = carregar_fixture('usuario') - email_usuario_padrao_valido1 = @usuario_fixture['padrao_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido1) + email_usuario_padrao_valido = @usuario_fixture['padrao_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_padrao_valido) - email_usuario_admin_valido1 = @usuario_fixture['admin_valido1']['email_valido1'] - obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido1) + email_usuario_admin_valido = @usuario_fixture['admin_valido']['email_valido'] + obter_por_email_e_excluir_usuario_por_id(email_usuario_admin_valido) end context "POST usuario (administrador)" do before(:all) do - @nome_sobrenome = @usuario_fixture['admin_valido1']['nome_sobrenome_valido1'] - @email = @usuario_fixture['admin_valido1']['email_valido1'] - @senha = @usuario_fixture['admin_valido1']['senha_valida1'] + @nome_sobrenome = @usuario_fixture['admin_valido']['nome_sobrenome_valido'] + @email = @usuario_fixture['admin_valido']['email_valido'] + @senha = @usuario_fixture['admin_valido']['senha_valida'] @json_data_post_usuario = usuario.post_usuario_admin(@nome_sobrenome, @email, @senha) @message_obtida = @json_data_post_usuario['message']; @@ -31,9 +31,9 @@ context "POST usuario (padrão 1)" do before(:all) do - @nome_sobrenome = @usuario_fixture['padrao_valido1']['nome_sobrenome_valido1'] - @email = @usuario_fixture['padrao_valido1']['email_valido1'] - @senha = @usuario_fixture['padrao_valido1']['senha_valida1'] + @nome_sobrenome = @usuario_fixture['padrao_valido']['nome_sobrenome_valido'] + @email = @usuario_fixture['padrao_valido']['email_valido'] + @senha = @usuario_fixture['padrao_valido']['senha_valida'] @json_data_post_usuario = usuario.post_usuario_padrao(@nome_sobrenome, @email, @senha) @message_obtida = @json_data_post_usuario['message'];