mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-13 02:55:39 +00:00
Deploying to gh-pages from @ 4e7e8da574 🚀
This commit is contained in:
@@ -277,43 +277,6 @@
|
||||
<span id="274">274</span>
|
||||
<span id="275">275</span>
|
||||
<span id="276">276</span>
|
||||
<span id="277">277</span>
|
||||
<span id="278">278</span>
|
||||
<span id="279">279</span>
|
||||
<span id="280">280</span>
|
||||
<span id="281">281</span>
|
||||
<span id="282">282</span>
|
||||
<span id="283">283</span>
|
||||
<span id="284">284</span>
|
||||
<span id="285">285</span>
|
||||
<span id="286">286</span>
|
||||
<span id="287">287</span>
|
||||
<span id="288">288</span>
|
||||
<span id="289">289</span>
|
||||
<span id="290">290</span>
|
||||
<span id="291">291</span>
|
||||
<span id="292">292</span>
|
||||
<span id="293">293</span>
|
||||
<span id="294">294</span>
|
||||
<span id="295">295</span>
|
||||
<span id="296">296</span>
|
||||
<span id="297">297</span>
|
||||
<span id="298">298</span>
|
||||
<span id="299">299</span>
|
||||
<span id="300">300</span>
|
||||
<span id="301">301</span>
|
||||
<span id="302">302</span>
|
||||
<span id="303">303</span>
|
||||
<span id="304">304</span>
|
||||
<span id="305">305</span>
|
||||
<span id="306">306</span>
|
||||
<span id="307">307</span>
|
||||
<span id="308">308</span>
|
||||
<span id="309">309</span>
|
||||
<span id="310">310</span>
|
||||
<span id="311">311</span>
|
||||
<span id="312">312</span>
|
||||
<span id="313">313</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -335,7 +298,6 @@
|
||||
<span class="kw">use</span> <span class="ident">actix_identity</span>::<span class="ident">Identity</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{<span class="ident">post</span>, <span class="ident">web</span>, <span class="ident">HttpResponse</span>, <span class="ident">Responder</span>};
|
||||
<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
|
||||
<span class="kw">use</span> <span class="ident">url</span>::<span class="ident">Url</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="kw">super</span>::{<span class="ident">get_random</span>, <span class="ident">is_authenticated</span>};
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="ident">errors</span>::<span class="kw-2">*</span>;
|
||||
@@ -343,68 +305,58 @@
|
||||
|
||||
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Deserialize</span>, <span class="ident">Serialize</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MCaptchaID</span> {
|
||||
<span class="kw">pub</span> <span class="ident">name</span>: <span class="ident">String</span>,
|
||||
<span class="kw">pub</span> <span class="ident">domain</span>: <span class="ident">String</span>,
|
||||
<span class="kw">pub</span> <span class="ident">name</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Clone</span>, <span class="ident">Debug</span>, <span class="ident">Deserialize</span>, <span class="ident">Serialize</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">MCaptchaDetails</span> {
|
||||
<span class="kw">pub</span> <span class="ident">name</span>: <span class="ident">String</span>,
|
||||
<span class="kw">pub</span> <span class="ident">name</span>: <span class="prelude-ty">Option</span><span class="op"><</span><span class="ident">String</span><span class="op">></span>,
|
||||
<span class="kw">pub</span> <span class="ident">key</span>: <span class="ident">String</span>,
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/add"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">add_mcaptcha</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaID</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/add"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">add_mcaptcha</span>(<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>, <span class="ident">id</span>: <span class="ident">Identity</span>) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</span><span class="ident">id</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
|
||||
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="ident">get_random</span>(<span class="number">32</span>);
|
||||
<span class="kw">let</span> <span class="ident">url</span> <span class="op">=</span> <span class="ident">Url</span>::<span class="ident">parse</span>(<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">domain</span>)<span class="question-mark">?</span>;
|
||||
|
||||
<span class="kw">let</span> <span class="ident">host</span> <span class="op">=</span> <span class="ident">url</span>.<span class="ident">host_str</span>().<span class="ident">ok_or</span>(<span class="ident">ServiceError</span>::<span class="ident">NotAUrl</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">sqlx</span>::<span class="macro">query</span><span class="macro">!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_config
|
||||
(name, key, domain_name)
|
||||
VALUES ($1, $2, (
|
||||
SELECT name FROM mcaptcha_domains_verified WHERE name = ($3)))"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">name</span>,
|
||||
(key, user_id)
|
||||
VALUES ($1, (SELECT ID FROM mcaptcha_users WHERE name = $2))"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">key</span>,
|
||||
<span class="kw-2">&</span><span class="ident">host</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>,
|
||||
)
|
||||
.<span class="ident">execute</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>)
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="kw">match</span> <span class="ident">res</span> {
|
||||
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">></span> <span class="prelude-val">Err</span>(<span class="ident">dup_error</span>(<span class="ident">e</span>, <span class="ident">ServiceError</span>::<span class="ident">TokenNameTaken</span>)),
|
||||
<span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="macro">println</span><span class="macro">!</span>(<span class="string">"{}"</span>, <span class="kw-2">&</span><span class="ident">e</span>);
|
||||
<span class="prelude-val">Err</span>(<span class="ident">dup_error</span>(<span class="ident">e</span>, <span class="ident">ServiceError</span>::<span class="ident">TokenNameTaken</span>))
|
||||
}
|
||||
<span class="prelude-val">Ok</span>(<span class="kw">_</span>) <span class="op">=</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">MCaptchaDetails</span> {
|
||||
<span class="ident">key</span>,
|
||||
<span class="ident">name</span>: <span class="ident">payload</span>.<span class="ident">into_inner</span>().<span class="ident">name</span>,
|
||||
};
|
||||
|
||||
<span class="kw">let</span> <span class="ident">resp</span> <span class="op">=</span> <span class="ident">MCaptchaDetails</span> { <span class="ident">key</span>, <span class="ident">name</span>: <span class="prelude-val">None</span> };
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>().<span class="ident">json</span>(<span class="ident">resp</span>))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/update"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/update/key"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_token</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaID</span><span class="op">></span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="kw">use</span> <span class="ident">std</span>::<span class="ident">borrow</span>::<span class="ident">Cow</span>;
|
||||
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</span><span class="ident">id</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">url</span> <span class="op">=</span> <span class="ident">Url</span>::<span class="ident">parse</span>(<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">domain</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">key</span>;
|
||||
|
||||
<span class="kw">let</span> <span class="ident">host</span> <span class="op">=</span> <span class="ident">url</span>.<span class="ident">host_str</span>().<span class="ident">ok_or</span>(<span class="ident">ServiceError</span>::<span class="ident">NotAUrl</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">loop</span> {
|
||||
<span class="ident">key</span> <span class="op">=</span> <span class="ident">get_random</span>(<span class="number">32</span>);
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">update_token_helper</span>(<span class="kw-2">&</span><span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">name</span>, <span class="kw-2">&</span><span class="ident">host</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>;
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="ident">update_token_helper</span>(<span class="kw-2">&</span><span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>, <span class="kw-2">&</span><span class="ident">username</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>;
|
||||
<span class="kw">if</span> <span class="ident">res</span>.<span class="ident">is_ok</span>() {
|
||||
<span class="kw">break</span>;
|
||||
} <span class="kw">else</span> {
|
||||
@@ -428,37 +380,36 @@
|
||||
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">update_token_helper</span>(
|
||||
<span class="ident">key</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">name</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">host</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">old_key</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">username</span>: <span class="kw-2">&</span><span class="ident">str</span>,
|
||||
<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">Data</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="prelude-ty">Result</span><span class="op"><</span>(), <span class="ident">sqlx</span>::<span class="ident">Error</span><span class="op">></span> {
|
||||
<span class="ident">sqlx</span>::<span class="macro">query</span><span class="macro">!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_config SET key = $1
|
||||
WHERE name = $2 AND domain_name = $3"</span>,
|
||||
WHERE key = $2 AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">key</span>,
|
||||
<span class="kw-2">&</span><span class="ident">name</span>,
|
||||
<span class="kw-2">&</span><span class="ident">host</span>,
|
||||
<span class="kw-2">&</span><span class="ident">old_key</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>,
|
||||
)
|
||||
.<span class="ident">execute</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>)
|
||||
.<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/get"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/get"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">get_token</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaID</span><span class="op">></span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</span><span class="ident">id</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">url</span> <span class="op">=</span> <span class="ident">Url</span>::<span class="ident">parse</span>(<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">domain</span>)<span class="question-mark">?</span>;
|
||||
|
||||
<span class="kw">let</span> <span class="ident">host</span> <span class="op">=</span> <span class="ident">url</span>.<span class="ident">host_str</span>().<span class="ident">ok_or</span>(<span class="ident">ServiceError</span>::<span class="ident">NotAUrl</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
|
||||
<span class="kw">let</span> <span class="ident">res</span> <span class="op">=</span> <span class="kw">match</span> <span class="ident">sqlx</span>::<span class="macro">query_as</span><span class="macro">!</span>(
|
||||
<span class="ident">MCaptchaDetails</span>,
|
||||
<span class="string">"SELECT key, name from mcaptcha_config WHERE name = $1 AND domain_name = $2"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">name</span>,
|
||||
<span class="kw-2">&</span><span class="ident">host</span>,
|
||||
<span class="string">"SELECT key, name from mcaptcha_config
|
||||
WHERE key = ($1) AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2) "</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>,
|
||||
)
|
||||
.<span class="ident">fetch_one</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>)
|
||||
.<span class="kw">await</span>
|
||||
@@ -474,16 +425,20 @@
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse</span>::<span class="prelude-val">Ok</span>().<span class="ident">json</span>(<span class="ident">res</span>))
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/domain/token/delete"</span>)]</span>
|
||||
<span class="attribute">#[<span class="ident">post</span>(<span class="string">"/api/v1/mcaptcha/delete"</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_mcaptcha</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaID</span><span class="op">></span>,
|
||||
<span class="ident">payload</span>: <span class="ident">web</span>::<span class="ident">Json</span><span class="op"><</span><span class="ident">MCaptchaDetails</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">web</span>::<span class="ident">Data</span><span class="op"><</span><span class="ident">Data</span><span class="op">></span>,
|
||||
<span class="ident">id</span>: <span class="ident">Identity</span>,
|
||||
) <span class="op">-</span><span class="op">></span> <span class="ident">ServiceResult</span><span class="op"><</span><span class="kw">impl</span> <span class="ident">Responder</span><span class="op">></span> {
|
||||
<span class="ident">is_authenticated</span>(<span class="kw-2">&</span><span class="ident">id</span>)<span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">username</span> <span class="op">=</span> <span class="ident">id</span>.<span class="ident">identity</span>().<span class="ident">unwrap</span>();
|
||||
|
||||
<span class="ident">sqlx</span>::<span class="macro">query</span><span class="macro">!</span>(
|
||||
<span class="string">"DELETE FROM mcaptcha_config WHERE name = ($1)"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">name</span>,
|
||||
<span class="string">"DELETE FROM mcaptcha_config
|
||||
WHERE key = ($1) AND user_id = (SELECT ID FROM mcaptcha_users WHERE name = $2) "</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>,
|
||||
)
|
||||
.<span class="ident">execute</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>)
|
||||
.<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
@@ -514,10 +469,8 @@
|
||||
<span class="kw">const</span> <span class="ident">NAME</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"testusermcaptcha"</span>;
|
||||
<span class="kw">const</span> <span class="ident">PASSWORD</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"longpassworddomain"</span>;
|
||||
<span class="kw">const</span> <span class="ident">EMAIL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"testusermcaptcha@a.com"</span>;
|
||||
<span class="kw">const</span> <span class="ident">DOMAIN</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"http://mcaptcha.example.com"</span>;
|
||||
<span class="kw">const</span> <span class="ident">TOKEN_NAME</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"add_mcaptcha_works_token"</span>;
|
||||
<span class="kw">const</span> <span class="ident">ADD_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/domain/token/add"</span>;
|
||||
<span class="kw">const</span> <span class="ident">DEL_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/domain/token/delete"</span>;
|
||||
<span class="kw">const</span> <span class="ident">ADD_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/add"</span>;
|
||||
<span class="kw">const</span> <span class="ident">DEL_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/delete"</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>;
|
||||
@@ -526,42 +479,18 @@
|
||||
|
||||
<span class="comment">// 1. add mcaptcha token</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">data</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">add_token_util</span>(<span class="ident">NAME</span>, <span class="ident">PASSWORD</span>, <span class="ident">DOMAIN</span>, <span class="ident">TOKEN_NAME</span>).<span class="kw">await</span>;
|
||||
<span class="kw">let</span> (<span class="ident">data</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>, <span class="ident">token_key</span>) <span class="op">=</span> <span class="ident">add_token_util</span>(<span class="ident">NAME</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>;
|
||||
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">domain</span> <span class="op">=</span> <span class="ident">MCaptchaID</span> {
|
||||
<span class="ident">domain</span>: <span class="ident">DOMAIN</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">name</span>: <span class="ident">TOKEN_NAME</span>.<span class="ident">into</span>(),
|
||||
};
|
||||
|
||||
<span class="comment">// 2. add duplicate mcaptha</span>
|
||||
<span class="ident">bad_post_req_test</span>(
|
||||
<span class="ident">NAME</span>,
|
||||
<span class="ident">PASSWORD</span>,
|
||||
<span class="ident">ADD_URL</span>,
|
||||
<span class="kw-2">&</span><span class="ident">domain</span>,
|
||||
<span class="ident">ServiceError</span>::<span class="ident">TokenNameTaken</span>,
|
||||
<span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
|
||||
)
|
||||
.<span class="kw">await</span>;
|
||||
|
||||
<span class="comment">// 4. not a URL test for adding domain</span>
|
||||
<span class="ident">domain</span>.<span class="ident">domain</span> <span class="op">=</span> <span class="string">"testing"</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">ADD_URL</span>,
|
||||
<span class="kw-2">&</span><span class="ident">domain</span>,
|
||||
<span class="ident">ServiceError</span>::<span class="ident">NotAUrl</span>,
|
||||
<span class="ident">StatusCode</span>::<span class="ident">BAD_REQUEST</span>,
|
||||
)
|
||||
.<span class="kw">await</span>;
|
||||
<span class="comment">// let mut domain = MCaptchaID {</span>
|
||||
<span class="comment">// name: TOKEN_NAME.into(),</span>
|
||||
<span class="comment">// };</span>
|
||||
|
||||
<span class="comment">// 4. delete token</span>
|
||||
<span class="kw">let</span> <span class="ident">del_token</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">call_service</span>(
|
||||
<span class="kw-2">&</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">&</span><span class="ident">domain</span>, <span class="ident">DEL_URL</span>)
|
||||
<span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&</span><span class="ident">token_key</span>, <span class="ident">DEL_URL</span>)
|
||||
.<span class="ident">cookie</span>(<span class="ident">cookies</span>.<span class="ident">clone</span>())
|
||||
.<span class="ident">to_request</span>(),
|
||||
)
|
||||
@@ -574,10 +503,8 @@
|
||||
<span class="kw">const</span> <span class="ident">NAME</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"updateusermcaptcha"</span>;
|
||||
<span class="kw">const</span> <span class="ident">PASSWORD</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"longpassworddomain"</span>;
|
||||
<span class="kw">const</span> <span class="ident">EMAIL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"testupdateusermcaptcha@a.com"</span>;
|
||||
<span class="kw">const</span> <span class="ident">DOMAIN</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"http://update-mcaptcha.example.com"</span>;
|
||||
<span class="kw">const</span> <span class="ident">TOKEN_NAME</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"get_update_mcaptcha_works_token"</span>;
|
||||
<span class="kw">const</span> <span class="ident">UPDATE_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/domain/token/update"</span>;
|
||||
<span class="kw">const</span> <span class="ident">GET_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/domain/token/get"</span>;
|
||||
<span class="kw">const</span> <span class="ident">UPDATE_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/update/key"</span>;
|
||||
<span class="kw">const</span> <span class="ident">GET_URL</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/get"</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>;
|
||||
@@ -586,18 +513,14 @@
|
||||
|
||||
<span class="comment">// 1. add mcaptcha token</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">data</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>) <span class="op">=</span> <span class="ident">add_token_util</span>(<span class="ident">NAME</span>, <span class="ident">PASSWORD</span>, <span class="ident">DOMAIN</span>, <span class="ident">TOKEN_NAME</span>).<span class="kw">await</span>;
|
||||
<span class="kw">let</span> (<span class="ident">data</span>, <span class="kw">_</span>, <span class="ident">signin_resp</span>, <span class="ident">token_key</span>) <span class="op">=</span> <span class="ident">add_token_util</span>(<span class="ident">NAME</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>;
|
||||
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">domain</span> <span class="op">=</span> <span class="ident">MCaptchaID</span> {
|
||||
<span class="ident">domain</span>: <span class="ident">DOMAIN</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">name</span>: <span class="ident">TOKEN_NAME</span>.<span class="ident">into</span>(),
|
||||
};
|
||||
|
||||
<span class="comment">// 2. update token key</span>
|
||||
<span class="kw">let</span> <span class="ident">update_token_resp</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">call_service</span>(
|
||||
<span class="kw-2">&</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">&</span><span class="ident">domain</span>, <span class="ident">UPDATE_URL</span>)
|
||||
<span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&</span><span class="ident">token_key</span>, <span class="ident">UPDATE_URL</span>)
|
||||
.<span class="ident">cookie</span>(<span class="ident">cookies</span>.<span class="ident">clone</span>())
|
||||
.<span class="ident">to_request</span>(),
|
||||
)
|
||||
@@ -605,22 +528,25 @@
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">update_token_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode</span>::<span class="ident">OK</span>);
|
||||
<span class="kw">let</span> <span class="ident">updated_token</span>: <span class="ident">MCaptchaDetails</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">read_body_json</span>(<span class="ident">update_token_resp</span>).<span class="kw">await</span>;
|
||||
|
||||
<span class="comment">// get token key with updated key</span>
|
||||
<span class="kw">let</span> <span class="ident">get_token_resp</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">call_service</span>(
|
||||
<span class="kw-2">&</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">&</span><span class="ident">domain</span>, <span class="ident">GET_URL</span>)
|
||||
<span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&</span><span class="ident">updated_token</span>, <span class="ident">GET_URL</span>)
|
||||
.<span class="ident">cookie</span>(<span class="ident">cookies</span>.<span class="ident">clone</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">get_token_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode</span>::<span class="ident">OK</span>);
|
||||
<span class="kw">let</span> <span class="ident">get_token_key</span>: <span class="ident">MCaptchaDetails</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">read_body_json</span>(<span class="ident">get_token_resp</span>).<span class="kw">await</span>;
|
||||
|
||||
<span class="comment">// check if they match</span>
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">get_token_key</span>: <span class="ident">MCaptchaDetails</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">read_body_json</span>(<span class="ident">get_token_resp</span>).<span class="kw">await</span>;
|
||||
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">get_token_key</span>.<span class="ident">key</span>, <span class="ident">updated_token</span>.<span class="ident">key</span>);
|
||||
|
||||
<span class="ident">domain</span>.<span class="ident">name</span> <span class="op">=</span> <span class="string">"https://batsense.net"</span>.<span class="ident">into</span>();
|
||||
<span class="ident">get_token_key</span>.<span class="ident">key</span> <span class="op">=</span> <span class="string">"nonexistent"</span>.<span class="ident">into</span>();
|
||||
|
||||
<span class="kw">let</span> <span class="ident">get_nonexistent_token_resp</span> <span class="op">=</span> <span class="ident">test</span>::<span class="ident">call_service</span>(
|
||||
<span class="kw-2">&</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">&</span><span class="ident">domain</span>, <span class="ident">GET_URL</span>)
|
||||
<span class="macro">post_request</span><span class="macro">!</span>(<span class="kw-2">&</span><span class="ident">get_token_key</span>, <span class="ident">GET_URL</span>)
|
||||
.<span class="ident">cookie</span>(<span class="ident">cookies</span>.<span class="ident">clone</span>())
|
||||
.<span class="ident">to_request</span>(),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user