Deploying to gh-pages from @ 096dcd32e4 🚀

This commit is contained in:
realaravinth
2021-03-11 15:42:10 +00:00
parent a974f0650f
commit 44865c4e31
33 changed files with 619 additions and 120 deletions

View File

@@ -257,6 +257,18 @@
<span id="254">254</span>
<span id="255">255</span>
<span id="256">256</span>
<span id="257">257</span>
<span id="258">258</span>
<span id="259">259</span>
<span id="260">260</span>
<span id="261">261</span>
<span id="262">262</span>
<span id="263">263</span>
<span id="264">264</span>
<span id="265">265</span>
<span id="266">266</span>
<span id="267">267</span>
<span id="268">268</span>
</pre><div class="example-wrap"><pre class="rust ">
<span class="comment">/*
* Copyright (C) 2021 Aravinth Manivannan &lt;realaravinth@batsense.net&gt;
@@ -432,13 +444,15 @@
<span class="kw">const</span> <span class="ident">NAME</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;testuser&quot;</span>;
<span class="kw">const</span> <span class="ident">PASSWORD</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;longpassword&quot;</span>;
<span class="kw">const</span> <span class="ident">EMAIL</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;testuser1@a.com&quot;</span>;
<span class="kw">const</span> <span class="ident">SIGNIN</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;/api/v1/signin&quot;</span>;
<span class="kw">const</span> <span class="ident">SIGNUP</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;/api/v1/signup&quot;</span>;
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">app</span> <span class="op">=</span> <span class="macro">get_app</span><span class="macro">!</span>(<span class="ident">data</span>).<span class="kw">await</span>;
<span class="ident">delete_user</span>(<span class="ident">NAME</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span>;
<span class="comment">// 1. Register and signin</span>
<span class="kw">let</span> (<span class="ident">data</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">signin_util</span>(<span class="ident">NAME</span>, <span class="ident">EMAIL</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</span>;
<span class="kw">let</span> (<span class="kw">_</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">register_and_signin</span>(<span class="ident">NAME</span>, <span class="ident">EMAIL</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</span>;
<span class="kw">let</span> <span class="ident">cookies</span> <span class="op">=</span> <span class="macro">get_cookie</span><span class="macro">!</span>(<span class="ident">signin_resp</span>);
<span class="comment">// 2. check if duplicate username is allowed</span>
@@ -447,49 +461,55 @@
<span class="ident">password</span>: <span class="ident">PASSWORD</span>.<span class="ident">into</span>(),
<span class="ident">email</span>: <span class="ident">EMAIL</span>.<span class="ident">into</span>(),
};
<span class="kw">let</span> <span class="ident">duplicate_user_resp</span> <span class="op">=</span>
<span class="ident">test</span>::<span class="ident">call_service</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>, <span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">msg</span>, <span class="string">&quot;/api/v1/signup&quot;</span>).<span class="ident">to_request</span>()).<span class="kw">await</span>;
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">duplicate_user_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>);
<span class="ident">bad_post_req_test</span>(
<span class="ident">NAME</span>,
<span class="ident">PASSWORD</span>,
<span class="ident">SIGNUP</span>,
<span class="kw-2">&amp;</span><span class="ident">msg</span>,
<span class="ident">ServiceError</span>::<span class="ident">UsernameTaken</span>,
<span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
)
.<span class="kw">await</span>;
<span class="comment">// 3. sigining in with non-existent user</span>
<span class="kw">let</span> <span class="ident">nonexistantuser</span> <span class="op">=</span> <span class="ident">Login</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">login</span> <span class="op">=</span> <span class="ident">Login</span> {
<span class="ident">username</span>: <span class="string">&quot;nonexistantuser&quot;</span>.<span class="ident">into</span>(),
<span class="ident">password</span>: <span class="ident">msg</span>.<span class="ident">password</span>.<span class="ident">clone</span>(),
};
<span class="kw">let</span> <span class="ident">userdoesntexist</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">call_service</span>(
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>,
<span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">nonexistantuser</span>, <span class="string">&quot;/api/v1/signin&quot;</span>).<span class="ident">to_request</span>(),
<span class="ident">bad_post_req_test</span>(
<span class="ident">NAME</span>,
<span class="ident">PASSWORD</span>,
<span class="ident">SIGNIN</span>,
<span class="kw-2">&amp;</span><span class="ident">login</span>,
<span class="ident">ServiceError</span>::<span class="ident">UsernameNotFound</span>,
<span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
)
.<span class="kw">await</span>;
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">userdoesntexist</span>.<span class="ident">status</span>(), <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>);
<span class="kw">let</span> <span class="ident">txt</span>: <span class="ident">ErrorToResponse</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">read_body_json</span>(<span class="ident">userdoesntexist</span>).<span class="kw">await</span>;
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">txt</span>.<span class="ident">error</span>, <span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">ServiceError</span>::<span class="ident">UsernameNotFound</span>));
<span class="comment">// 4. trying to signin with wrong password</span>
<span class="kw">let</span> <span class="ident">wrongpassword</span> <span class="op">=</span> <span class="ident">Login</span> {
<span class="ident">username</span>: <span class="ident">NAME</span>.<span class="ident">into</span>(),
<span class="ident">password</span>: <span class="ident">NAME</span>.<span class="ident">into</span>(),
};
<span class="kw">let</span> <span class="ident">wrongpassword_resp</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">call_service</span>(
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>,
<span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">wrongpassword</span>, <span class="string">&quot;/api/v1/signin&quot;</span>).<span class="ident">to_request</span>(),
<span class="ident">login</span>.<span class="ident">username</span> <span class="op">=</span> <span class="ident">NAME</span>.<span class="ident">into</span>();
<span class="ident">login</span>.<span class="ident">password</span> <span class="op">=</span> <span class="ident">NAME</span>.<span class="ident">into</span>();
<span class="ident">bad_post_req_test</span>(
<span class="ident">NAME</span>,
<span class="ident">PASSWORD</span>,
<span class="ident">SIGNIN</span>,
<span class="kw-2">&amp;</span><span class="ident">login</span>,
<span class="ident">ServiceError</span>::<span class="ident">WrongPassword</span>,
<span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>,
)
.<span class="kw">await</span>;
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">wrongpassword_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode</span>::<span class="ident">UNAUTHORIZED</span>);
<span class="kw">let</span> <span class="ident">txt</span>: <span class="ident">ErrorToResponse</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">read_body_json</span>(<span class="ident">wrongpassword_resp</span>).<span class="kw">await</span>;
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">txt</span>.<span class="ident">error</span>, <span class="macro">format</span><span class="macro">!</span>(<span class="string">&quot;{}&quot;</span>, <span class="ident">ServiceError</span>::<span class="ident">WrongPassword</span>));
<span class="comment">// 5. signout</span>
<span class="kw">let</span> <span class="ident">signout_resp</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">call_service</span>(
<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">app</span>,
<span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&amp;</span><span class="ident">wrongpassword</span>, <span class="string">&quot;/api/v1/signout&quot;</span>)
.<span class="ident">cookie</span>(<span class="ident">cookies</span>.<span class="ident">clone</span>())
<span class="ident">test</span>::<span class="ident">TestRequest</span>::<span class="ident">post</span>()
.<span class="ident">uri</span>(<span class="string">&quot;/api/v1/signout&quot;</span>)
.<span class="ident">cookie</span>(<span class="ident">cookies</span>)
.<span class="ident">to_request</span>(),
)
.<span class="kw">await</span>;
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">signout_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode</span>::<span class="ident">OK</span>);
<span class="ident">delete_user</span>(<span class="ident">NAME</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span>;
}
<span class="attribute">#[<span class="ident">actix_rt</span>::<span class="ident">test</span>]</span>
@@ -498,7 +518,12 @@
<span class="kw">const</span> <span class="ident">PASSWORD</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;longpassword2&quot;</span>;
<span class="kw">const</span> <span class="ident">EMAIL</span>: <span class="kw-2">&amp;</span><span class="ident">str</span> <span class="op">=</span> <span class="string">&quot;testuser1@a.com2&quot;</span>;
<span class="kw">let</span> (<span class="ident">data</span>, <span class="ident">creds</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">signin_util</span>(<span class="ident">NAME</span>, <span class="ident">EMAIL</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</span>;
{
<span class="kw">let</span> <span class="ident">data</span> <span class="op">=</span> <span class="ident">Data</span>::<span class="ident">new</span>().<span class="kw">await</span>;
<span class="ident">delete_user</span>(<span class="ident">NAME</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span>;
}
<span class="kw">let</span> (<span class="ident">data</span>, <span class="ident">creds</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">register_and_signin</span>(<span class="ident">NAME</span>, <span class="ident">EMAIL</span>, <span class="ident">PASSWORD</span>).<span class="kw">await</span>;
<span class="kw">let</span> <span class="ident">cookies</span> <span class="op">=</span> <span class="macro">get_cookie</span><span class="macro">!</span>(<span class="ident">signin_resp</span>);
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">app</span> <span class="op">=</span> <span class="macro">get_app</span><span class="macro">!</span>(<span class="ident">data</span>).<span class="kw">await</span>;
@@ -511,7 +536,6 @@
.<span class="kw">await</span>;
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">delete_user_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode</span>::<span class="ident">OK</span>);
<span class="ident">delete_user</span>(<span class="ident">NAME</span>, <span class="kw-2">&amp;</span><span class="ident">data</span>).<span class="kw">await</span>;
}
}
</pre></div>