Skip to content

Commit

Permalink
Deployed 5bd5c0e with MkDocs version: 1.6.1
Browse files Browse the repository at this point in the history
  • Loading branch information
dunossauro committed Oct 5, 2024
1 parent fbf093c commit 7ff18b7
Show file tree
Hide file tree
Showing 3 changed files with 87 additions and 8 deletions.
7 changes: 5 additions & 2 deletions 06/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -2582,7 +2582,10 @@ <h3 id="checagem-de-tokens-invalidos">Checagem de tokens inválidos</h3>
<h2 id="exercicios">Exercícios</h2>
<ol>
<li>
<p>Faça um teste para cobrir o cenário que levanta exception <code>credentials_exception</code> na autenticação caso o <code>User</code> não seja encontrado. Ao olhar a cobertura de <code>security.py</code> você vai notar que esse contexto não está coberto.</p>
<p>Faça um teste para cobrir o cenário que levanta exception <code>credentials_exception</code> na autenticação caso o <code>email</code> não seja enviado via JWT. Ao olhar a cobertura de <code>security.py</code> você vai notar que esse contexto não está coberto.</p>
</li>
<li>
<p>Faça um teste para cobrir o cenário que levanta exception <code>credentials_exception</code> na autenticação caso o email seja enviado, mas não exista um <code>User</code> correspondente cadastrado na base de dados. Ao olhar a cobertura de <code>security.py</code> você vai notar que esse contexto não está coberto.</p>
</li>
<li>
<p>Reveja os testes criados até a aula 5 e veja se eles ainda fazem sentido (testes envolvendo <code class="language-python highlight"><span class="mi">400</span></code>)</p>
Expand Down Expand Up @@ -2729,7 +2732,7 @@ <h2 id="conclusao">Conclusão</h2>
<span class="md-icon" title="Última atualização">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">3 de outubro de 2024</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">5 de outubro de 2024</span>
</span>


Expand Down
86 changes: 81 additions & 5 deletions exercicios_resolvidos/aula_06/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -1039,6 +1039,30 @@
</ul>
</nav>

</li>

<li class="md-nav__item">
<a href="#exercicio-03" class="md-nav__link">
<span class="md-ellipsis">
Exercício 03
</span>
</a>

<nav class="md-nav" aria-label="Exercício 03">
<ul class="md-nav__list">

<li class="md-nav__item">
<a href="#solucao_2" class="md-nav__link">
<span class="md-ellipsis">
Solução
</span>
</a>

</li>

</ul>
</nav>

</li>

</ul>
Expand Down Expand Up @@ -1507,6 +1531,30 @@
</ul>
</nav>

</li>

<li class="md-nav__item">
<a href="#exercicio-03" class="md-nav__link">
<span class="md-ellipsis">
Exercício 03
</span>
</a>

<nav class="md-nav" aria-label="Exercício 03">
<ul class="md-nav__list">

<li class="md-nav__item">
<a href="#solucao_2" class="md-nav__link">
<span class="md-ellipsis">
Solução
</span>
</a>

</li>

</ul>
</nav>

</li>

</ul>
Expand All @@ -1529,13 +1577,41 @@

<div><h1 id="exercicios-da-aula-06">Exercícios da aula 06</h1>
<h2 id="exercicio-01">Exercício 01</h2>
<p>Faça um teste para cobrir o cenário que levanta exception <code>credentials_exception</code> na autenticação caso o <code>User</code> não seja encontrado. Ao olhar a cobertura de <code>security.py</code> você vai notar que esse contexto não está coberto.</p>
<p>Faça um teste para cobrir o cenário que levanta exception <code>credentials_exception</code> na autenticação caso o <code>email</code> não seja enviado via JWT. Ao olhar a cobertura de <code>security.py</code> você vai notar que esse contexto não está coberto.</p>
<h3 id="solucao">Solução</h3>
<p>...</p>
<p>Para executar o bloco de código você deve fazer uma chamada a qualquer endpoint que dependa do token (currentUser) e enviar um token que não contenha um endereço de e-mail (sub):</p>
<div class="language-python highlight"><span class="filename">tests/test_app.py</span><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a><span class="k">def</span> <span class="nf">test_get_current_user_not_found__exercicio</span><span class="p">(</span><span class="n">client</span><span class="p">):</span>
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> <span class="n">data</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'no-email'</span><span class="p">:</span> <span class="s1">'test'</span><span class="p">}</span>
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> <span class="n">token</span> <span class="o">=</span> <span class="n">create_access_token</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</span><span id="__span-0-4"><a id="__codelineno-0-4" name="__codelineno-0-4" href="#__codelineno-0-4"></a>
</span><span id="__span-0-5"><a id="__codelineno-0-5" name="__codelineno-0-5" href="#__codelineno-0-5"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span>
</span><span id="__span-0-6"><a id="__codelineno-0-6" name="__codelineno-0-6" href="#__codelineno-0-6"></a> <span class="s1">'/users/1'</span><span class="p">,</span>
</span><span id="__span-0-7"><a id="__codelineno-0-7" name="__codelineno-0-7" href="#__codelineno-0-7"></a> <span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'Authorization'</span><span class="p">:</span> <span class="sa">f</span><span class="s1">'Bearer </span><span class="si">{</span><span class="n">token</span><span class="si">}</span><span class="s1">'</span><span class="p">},</span>
</span><span id="__span-0-8"><a id="__codelineno-0-8" name="__codelineno-0-8" href="#__codelineno-0-8"></a> <span class="p">)</span>
</span><span id="__span-0-9"><a id="__codelineno-0-9" name="__codelineno-0-9" href="#__codelineno-0-9"></a>
</span><span id="__span-0-10"><a id="__codelineno-0-10" name="__codelineno-0-10" href="#__codelineno-0-10"></a> <span class="k">assert</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="n">HTTPStatus</span><span class="o">.</span><span class="n">UNAUTHORIZED</span>
</span><span id="__span-0-11"><a id="__codelineno-0-11" name="__codelineno-0-11" href="#__codelineno-0-11"></a> <span class="k">assert</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> <span class="o">==</span> <span class="p">{</span><span class="s1">'detail'</span><span class="p">:</span> <span class="s1">'Could not validate credentials'</span><span class="p">}</span>
</span></code></pre></div>
<h2 id="exercicio-02">Exercício 02</h2>
<p>Reveja os testes criados até a aula 5 e veja se eles ainda fazem sentido (testes envolvendo <code class="language-python highlight"><span class="mi">400</span></code>)</p>
<p>Faça um teste para cobrir o cenário que levanta exception <code>credentials_exception</code> na autenticação caso o email seja enviado, mas não exista um <code>User</code> correspondente cadastrado na base de dados. Ao olhar a cobertura de <code>security.py</code> você vai notar que esse contexto não está coberto.</p>
<h3 id="solucao_1">Solução</h3>
<p>...</p></div><style type="text/css">.quiz {
<p>Para executar o bloco de código você deve fazer uma chamada a qualquer endpoint que dependa do token (currentUser) e enviar um token que contenha um endereço de email (sub) que não esteja cadastrado na base de dados:</p>
<div class="language-python highlight"><span class="filename">tests/test_app.py</span><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="k">def</span> <span class="nf">test_get_current_user_does_not_exists__exercicio</span><span class="p">(</span><span class="n">client</span><span class="p">):</span>
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a> <span class="n">data</span> <span class="o">=</span> <span class="p">{</span><span class="s1">'sub'</span><span class="p">:</span> <span class="s1">'test@test'</span><span class="p">}</span>
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a> <span class="n">token</span> <span class="o">=</span> <span class="n">create_access_token</span><span class="p">(</span><span class="n">data</span><span class="p">)</span>
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a> <span class="n">response</span> <span class="o">=</span> <span class="n">client</span><span class="o">.</span><span class="n">delete</span><span class="p">(</span>
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a> <span class="s1">'/users/1'</span><span class="p">,</span>
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a> <span class="n">headers</span><span class="o">=</span><span class="p">{</span><span class="s1">'Authorization'</span><span class="p">:</span> <span class="sa">f</span><span class="s1">'Bearer </span><span class="si">{</span><span class="n">token</span><span class="si">}</span><span class="s1">'</span><span class="p">},</span>
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a> <span class="p">)</span>
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a>
</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a> <span class="k">assert</span> <span class="n">response</span><span class="o">.</span><span class="n">status_code</span> <span class="o">==</span> <span class="n">HTTPStatus</span><span class="o">.</span><span class="n">UNAUTHORIZED</span>
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a> <span class="k">assert</span> <span class="n">response</span><span class="o">.</span><span class="n">json</span><span class="p">()</span> <span class="o">==</span> <span class="p">{</span><span class="s1">'detail'</span><span class="p">:</span> <span class="s1">'Could not validate credentials'</span><span class="p">}</span>
</span></code></pre></div>
<h2 id="exercicio-03">Exercício 03</h2>
<p>Reveja os testes criados até a aula 5 e veja se eles ainda fazem sentido (testes envolvendo <code class="language-python highlight"><span class="mi">400</span></code>)</p>
<h3 id="solucao_2">Solução</h3>
<p>Os testes para os endpoints de PUT e DELETE, que verificam usuários não existentes na base de dados não fazem mais sentido. Já que para alterar ou deletar um user, você tem que ser validado pelo token. Esses testes podem ser deletados.</p></div><style type="text/css">.quiz {
border: 1px solid black;
padding: 1rem;
margin: 1rem 0;
Expand Down Expand Up @@ -1666,7 +1742,7 @@ <h3 id="solucao_1">Solução</h3>
<span class="md-icon" title="Última atualização">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg>
</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">7 de setembro de 2024</span>
<span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">5 de outubro de 2024</span>
</span>


Expand Down
2 changes: 1 addition & 1 deletion search/search_index.json

Large diffs are not rendered by default.

0 comments on commit 7ff18b7

Please sign in to comment.