mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-12 02:25:41 +00:00
Deploying to gh-pages from @ ea8264054a 🚀
This commit is contained in:
@@ -331,43 +331,6 @@
|
||||
<span id="328">328</span>
|
||||
<span id="329">329</span>
|
||||
<span id="330">330</span>
|
||||
<span id="331">331</span>
|
||||
<span id="332">332</span>
|
||||
<span id="333">333</span>
|
||||
<span id="334">334</span>
|
||||
<span id="335">335</span>
|
||||
<span id="336">336</span>
|
||||
<span id="337">337</span>
|
||||
<span id="338">338</span>
|
||||
<span id="339">339</span>
|
||||
<span id="340">340</span>
|
||||
<span id="341">341</span>
|
||||
<span id="342">342</span>
|
||||
<span id="343">343</span>
|
||||
<span id="344">344</span>
|
||||
<span id="345">345</span>
|
||||
<span id="346">346</span>
|
||||
<span id="347">347</span>
|
||||
<span id="348">348</span>
|
||||
<span id="349">349</span>
|
||||
<span id="350">350</span>
|
||||
<span id="351">351</span>
|
||||
<span id="352">352</span>
|
||||
<span id="353">353</span>
|
||||
<span id="354">354</span>
|
||||
<span id="355">355</span>
|
||||
<span id="356">356</span>
|
||||
<span id="357">357</span>
|
||||
<span id="358">358</span>
|
||||
<span id="359">359</span>
|
||||
<span id="360">360</span>
|
||||
<span id="361">361</span>
|
||||
<span id="362">362</span>
|
||||
<span id="363">363</span>
|
||||
<span id="364">364</span>
|
||||
<span id="365">365</span>
|
||||
<span id="366">366</span>
|
||||
<span id="367">367</span>
|
||||
</pre><div class="example-wrap"><pre class="rust ">
|
||||
<span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
@@ -387,6 +350,7 @@
|
||||
*/</span>
|
||||
<span class="kw">use</span> <span class="ident">actix_identity::Identity</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix_web</span>::{<span class="ident">web</span>, <span class="ident">HttpResponse</span>, <span class="ident">Responder</span>};
|
||||
<span class="kw">use</span> <span class="ident">futures::future::try_join_all</span>;
|
||||
<span class="kw">use</span> <span class="ident">libmcaptcha</span>::{<span class="ident">defense::Level</span>, <span class="ident">DefenseBuilder</span>};
|
||||
<span class="kw">use</span> <span class="ident">log::debug</span>;
|
||||
<span class="kw">use</span> <span class="ident">serde</span>::{<span class="ident">Deserialize</span>, <span class="ident">Serialize</span>};
|
||||
@@ -400,7 +364,7 @@
|
||||
|
||||
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">Levels</span> {
|
||||
<span class="kw">pub</span> <span class="ident">add</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>,
|
||||
<span class="kw">pub</span> <span class="ident">delete</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>,
|
||||
<span class="comment">// pub delete: &'static str,</span>
|
||||
<span class="kw">pub</span> <span class="ident">get</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>,
|
||||
<span class="kw">pub</span> <span class="ident">update</span>: <span class="kw-2">&</span><span class="lifetime">'static</span> <span class="ident">str</span>,
|
||||
}
|
||||
@@ -409,11 +373,11 @@
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="kw">fn</span> <span class="ident">new</span>() <span class="op">-</span><span class="op">></span> <span class="ident">Levels</span> {
|
||||
<span class="kw">let</span> <span class="ident">add</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/levels/add"</span>;
|
||||
<span class="kw">let</span> <span class="ident">update</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/levels/update"</span>;
|
||||
<span class="kw">let</span> <span class="ident">delete</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/levels/delete"</span>;
|
||||
<span class="comment">// let delete = "/api/v1/mcaptcha/levels/delete";</span>
|
||||
<span class="kw">let</span> <span class="ident">get</span> <span class="op">=</span> <span class="string">"/api/v1/mcaptcha/levels/get"</span>;
|
||||
<span class="ident">Levels</span> {
|
||||
<span class="ident">add</span>,
|
||||
<span class="ident">delete</span>,
|
||||
<span class="comment">// delete,</span>
|
||||
<span class="ident">get</span>,
|
||||
<span class="ident">update</span>,
|
||||
}
|
||||
@@ -431,7 +395,6 @@
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">services</span>(<span class="ident">cfg</span>: <span class="kw-2">&</span><span class="kw-2">mut</span> <span class="ident">web::ServiceConfig</span>) {
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">add_levels</span>);
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">update_levels</span>);
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">delete_levels</span>);
|
||||
<span class="ident">cfg</span>.<span class="ident">service</span>(<span class="ident">get_levels</span>);
|
||||
}
|
||||
|
||||
@@ -458,10 +421,12 @@
|
||||
|
||||
<span class="macro">debug!</span>(<span class="string">"config created"</span>);
|
||||
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">futs</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">payload</span>.<span class="ident">levels</span>.<span class="ident">len</span>());
|
||||
|
||||
<span class="kw">for</span> <span class="ident">level</span> <span class="kw">in</span> <span class="ident">payload</span>.<span class="ident">levels</span>.<span class="ident">iter</span>() {
|
||||
<span class="kw">let</span> <span class="ident">difficulty_factor</span> <span class="op">=</span> <span class="ident">level</span>.<span class="ident">difficulty_factor</span> <span class="kw">as</span> <span class="ident">i32</span>;
|
||||
<span class="kw">let</span> <span class="ident">visitor_threshold</span> <span class="op">=</span> <span class="ident">level</span>.<span class="ident">visitor_threshold</span> <span class="kw">as</span> <span class="ident">i32</span>;
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="kw">let</span> <span class="ident">fut</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_levels (
|
||||
difficulty_factor,
|
||||
visitor_threshold,
|
||||
@@ -476,17 +441,20 @@
|
||||
<span class="kw-2">&</span><span class="ident">mcaptcha_config</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>;
|
||||
.<span class="ident">execute</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>);
|
||||
<span class="ident">futs</span>.<span class="ident">push</span>(<span class="ident">fut</span>);
|
||||
}
|
||||
|
||||
<span class="ident">try_join_all</span>(<span class="ident">futs</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>().<span class="ident">json</span>(<span class="ident">mcaptcha_config</span>))
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Serialize</span>, <span class="ident">Deserialize</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">UpdateLevels</span> {
|
||||
<span class="kw">pub</span> <span class="ident">levels</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Level</span><span class="op">></span>,
|
||||
<span class="doccomment">/// name is config_name</span>
|
||||
<span class="kw">pub</span> <span class="ident">duration</span>: <span class="ident">u32</span>,
|
||||
<span class="kw">pub</span> <span class="ident">description</span>: <span class="ident">String</span>,
|
||||
<span class="kw">pub</span> <span class="ident">key</span>: <span class="ident">String</span>,
|
||||
}
|
||||
|
||||
@@ -511,7 +479,8 @@
|
||||
<span class="comment">// still, needs to be benchmarked</span>
|
||||
<span class="ident">defense</span>.<span class="ident">build</span>()<span class="question-mark">?</span>;
|
||||
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">futs</span> <span class="op">=</span> <span class="ident">Vec::with_capacity</span>(<span class="ident">payload</span>.<span class="ident">levels</span>.<span class="ident">len</span>() <span class="op">+</span> <span class="number">2</span>);
|
||||
<span class="kw">let</span> <span class="ident">del_fut</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"DELETE FROM mcaptcha_levels
|
||||
WHERE config_id = (
|
||||
SELECT config_id FROM mcaptcha_config where key = ($1)
|
||||
@@ -522,13 +491,26 @@
|
||||
<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>;
|
||||
.<span class="ident">execute</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>); <span class="comment">//.await?;</span>
|
||||
|
||||
<span class="kw">let</span> <span class="ident">update_fut</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"UPDATE mcaptcha_config SET name = $1, duration = $2
|
||||
WHERE user_id = (SELECT ID FROM mcaptcha_users WHERE name = $3)
|
||||
AND key = $4"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">description</span>,
|
||||
<span class="ident">payload</span>.<span class="ident">duration</span> <span class="kw">as</span> <span class="ident">i32</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>,
|
||||
)
|
||||
.<span class="ident">execute</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>); <span class="comment">//.await?;</span>
|
||||
|
||||
<span class="ident">futs</span>.<span class="ident">push</span>(<span class="ident">del_fut</span>);
|
||||
<span class="ident">futs</span>.<span class="ident">push</span>(<span class="ident">update_fut</span>);
|
||||
|
||||
<span class="kw">for</span> <span class="ident">level</span> <span class="kw">in</span> <span class="ident">payload</span>.<span class="ident">levels</span>.<span class="ident">iter</span>() {
|
||||
<span class="kw">let</span> <span class="ident">difficulty_factor</span> <span class="op">=</span> <span class="ident">level</span>.<span class="ident">difficulty_factor</span> <span class="kw">as</span> <span class="ident">i32</span>;
|
||||
<span class="kw">let</span> <span class="ident">visitor_threshold</span> <span class="op">=</span> <span class="ident">level</span>.<span class="ident">visitor_threshold</span> <span class="kw">as</span> <span class="ident">i32</span>;
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="kw">let</span> <span class="ident">fut</span> <span class="op">=</span> <span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"INSERT INTO mcaptcha_levels (
|
||||
difficulty_factor,
|
||||
visitor_threshold,
|
||||
@@ -544,40 +526,11 @@
|
||||
<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>;
|
||||
}
|
||||
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">my_codegen::post</span>(
|
||||
<span class="ident">path</span> <span class="op">=</span> <span class="string">"crate::V1_API_ROUTES.levels.delete"</span>,
|
||||
<span class="ident">wrap</span> <span class="op">=</span> <span class="string">"crate::CheckLogin"</span>
|
||||
)]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_levels</span>(
|
||||
<span class="ident">payload</span>: <span class="ident">web::Json</span><span class="op"><</span><span class="ident">UpdateLevels</span><span class="op">></span>,
|
||||
<span class="ident">data</span>: <span class="ident">AppData</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">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">for</span> <span class="ident">level</span> <span class="kw">in</span> <span class="ident">payload</span>.<span class="ident">levels</span>.<span class="ident">iter</span>() {
|
||||
<span class="kw">let</span> <span class="ident">difficulty_factor</span> <span class="op">=</span> <span class="ident">level</span>.<span class="ident">difficulty_factor</span> <span class="kw">as</span> <span class="ident">i32</span>;
|
||||
<span class="macro">sqlx::query!</span>(
|
||||
<span class="string">"DELETE FROM mcaptcha_levels WHERE
|
||||
config_id = (
|
||||
SELECT config_id FROM mcaptcha_config WHERE key = $1 AND
|
||||
user_id = (SELECT ID from mcaptcha_users WHERE name = $3)
|
||||
) AND difficulty_factor = ($2);"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">payload</span>.<span class="ident">key</span>,
|
||||
<span class="ident">difficulty_factor</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="ident">execute</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>); <span class="comment">//.await?;</span>
|
||||
<span class="ident">futs</span>.<span class="ident">push</span>(<span class="ident">fut</span>);
|
||||
}
|
||||
|
||||
<span class="ident">try_join_all</span>(<span class="ident">futs</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">HttpResponse::Ok</span>())
|
||||
}
|
||||
|
||||
@@ -616,7 +569,8 @@
|
||||
config_id = (
|
||||
SELECT config_id FROM mcaptcha_config WHERE key = ($1)
|
||||
AND user_id = (SELECT ID from mcaptcha_users WHERE name = $2)
|
||||
);"</span>,
|
||||
)
|
||||
ORDER BY difficulty_factor ASC;"</span>,
|
||||
<span class="ident">key</span>,
|
||||
<span class="kw-2">&</span><span class="ident">username</span>
|
||||
)
|
||||
@@ -637,6 +591,15 @@
|
||||
<span class="kw">use</span> <span class="kw">crate</span><span class="ident">::tests</span>::<span class="kw-2">*</span>;
|
||||
<span class="kw">use</span> <span class="kw">crate</span>::<span class="kw-2">*</span>;
|
||||
|
||||
<span class="kw">const</span> <span class="ident">L1</span>: <span class="ident">Level</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||
<span class="ident">difficulty_factor</span>: <span class="number">100</span>,
|
||||
<span class="ident">visitor_threshold</span>: <span class="number">10</span>,
|
||||
};
|
||||
<span class="kw">const</span> <span class="ident">L2</span>: <span class="ident">Level</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||
<span class="ident">difficulty_factor</span>: <span class="number">1000</span>,
|
||||
<span class="ident">visitor_threshold</span>: <span class="number">1000</span>,
|
||||
};
|
||||
|
||||
<span class="attribute">#[<span class="ident">actix_rt::test</span>]</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">level_routes_work</span>() {
|
||||
<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">"testuserlevelroutes"</span>;
|
||||
@@ -655,8 +618,7 @@
|
||||
|
||||
<span class="comment">// 2. get level</span>
|
||||
|
||||
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">L1</span>, <span class="ident">L2</span>];
|
||||
|
||||
<span class="kw">let</span> <span class="ident">add_level</span> <span class="op">=</span> <span class="ident">get_level_data</span>();
|
||||
<span class="kw">let</span> <span class="ident">get_level_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">key</span>, <span class="ident">ROUTES</span>.<span class="ident">levels</span>.<span class="ident">get</span>)
|
||||
@@ -666,31 +628,28 @@
|
||||
.<span class="kw">await</span>;
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">get_level_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode::OK</span>);
|
||||
<span class="kw">let</span> <span class="ident">res_levels</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Level</span><span class="op">></span> <span class="op">=</span> <span class="ident">test::read_body_json</span>(<span class="ident">get_level_resp</span>).<span class="kw">await</span>;
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">res_levels</span>, <span class="ident">levels</span>);
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">res_levels</span>, <span class="ident">add_level</span>.<span class="ident">levels</span>);
|
||||
|
||||
<span class="comment">// 3. update level</span>
|
||||
|
||||
<span class="kw">let</span> <span class="ident">l1</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||
<span class="ident">difficulty_factor</span>: <span class="number">10</span>,
|
||||
<span class="ident">visitor_threshold</span>: <span class="number">10</span>,
|
||||
};
|
||||
<span class="kw">let</span> <span class="ident">l2</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||
<span class="ident">difficulty_factor</span>: <span class="number">5000</span>,
|
||||
<span class="ident">visitor_threshold</span>: <span class="number">5000</span>,
|
||||
};
|
||||
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">l1</span>, <span class="ident">l2</span>];
|
||||
<span class="kw">let</span> <span class="ident">add_level</span> <span class="op">=</span> <span class="ident">UpdateLevels</span> {
|
||||
<span class="ident">levels</span>: <span class="ident">levels</span>.<span class="ident">clone</span>(),
|
||||
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">L1</span>, <span class="ident">L2</span>];
|
||||
|
||||
<span class="kw">let</span> <span class="ident">update_level</span> <span class="op">=</span> <span class="ident">UpdateLevels</span> {
|
||||
<span class="ident">key</span>: <span class="ident">key</span>.<span class="ident">key</span>.<span class="ident">clone</span>(),
|
||||
<span class="ident">levels</span>: <span class="ident">levels</span>.<span class="ident">clone</span>(),
|
||||
<span class="ident">description</span>: <span class="ident">add_level</span>.<span class="ident">description</span>,
|
||||
<span class="ident">duration</span>: <span class="ident">add_level</span>.<span class="ident">duration</span>,
|
||||
};
|
||||
|
||||
<span class="kw">let</span> <span class="ident">add_token_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">add_level</span>, <span class="ident">ROUTES</span>.<span class="ident">levels</span>.<span class="ident">update</span>)
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">update_level</span>, <span class="kw-2">&</span><span class="ident">ROUTES</span>.<span class="ident">levels</span>.<span class="ident">update</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="ident">add_token_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode::OK</span>);
|
||||
|
||||
<span class="kw">let</span> <span class="ident">get_level_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">key</span>, <span class="ident">ROUTES</span>.<span class="ident">levels</span>.<span class="ident">get</span>)
|
||||
@@ -701,39 +660,6 @@
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">get_level_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode::OK</span>);
|
||||
<span class="kw">let</span> <span class="ident">res_levels</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Level</span><span class="op">></span> <span class="op">=</span> <span class="ident">test::read_body_json</span>(<span class="ident">get_level_resp</span>).<span class="kw">await</span>;
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">res_levels</span>, <span class="ident">levels</span>);
|
||||
|
||||
<span class="comment">// 4. delete level</span>
|
||||
<span class="kw">let</span> <span class="ident">l1</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||
<span class="ident">difficulty_factor</span>: <span class="number">10</span>,
|
||||
<span class="ident">visitor_threshold</span>: <span class="number">10</span>,
|
||||
};
|
||||
<span class="kw">let</span> <span class="ident">l2</span> <span class="op">=</span> <span class="ident">Level</span> {
|
||||
<span class="ident">difficulty_factor</span>: <span class="number">5000</span>,
|
||||
<span class="ident">visitor_threshold</span>: <span class="number">5000</span>,
|
||||
};
|
||||
<span class="kw">let</span> <span class="ident">levels</span> <span class="op">=</span> <span class="macro">vec!</span>[<span class="ident">l1</span>, <span class="ident">l2</span>];
|
||||
<span class="kw">let</span> <span class="ident">add_level</span> <span class="op">=</span> <span class="ident">UpdateLevels</span> {
|
||||
<span class="ident">levels</span>: <span class="ident">levels</span>.<span class="ident">clone</span>(),
|
||||
<span class="ident">key</span>: <span class="ident">key</span>.<span class="ident">key</span>.<span class="ident">clone</span>(),
|
||||
};
|
||||
<span class="kw">let</span> <span class="ident">add_token_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">add_level</span>, <span class="ident">ROUTES</span>.<span class="ident">levels</span>.<span class="ident">delete</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="ident">add_token_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode::OK</span>);
|
||||
<span class="kw">let</span> <span class="ident">get_level_resp</span> <span class="op">=</span> <span class="ident">test::call_service</span>(
|
||||
<span class="kw-2">&</span><span class="ident">app</span>,
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">key</span>, <span class="ident">ROUTES</span>.<span class="ident">levels</span>.<span class="ident">get</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="ident">get_level_resp</span>.<span class="ident">status</span>(), <span class="ident">StatusCode::OK</span>);
|
||||
<span class="kw">let</span> <span class="ident">res_levels</span>: <span class="ident">Vec</span><span class="op"><</span><span class="ident">Level</span><span class="op">></span> <span class="op">=</span> <span class="ident">test::read_body_json</span>(<span class="ident">get_level_resp</span>).<span class="kw">await</span>;
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">res_levels</span>, <span class="ident">Vec::new</span>());
|
||||
}
|
||||
}
|
||||
</pre></div>
|
||||
|
||||
@@ -299,7 +299,7 @@
|
||||
<span class="string">"SELECT difficulty_factor, visitor_threshold FROM mcaptcha_levels WHERE
|
||||
config_id = (
|
||||
SELECT config_id FROM mcaptcha_config WHERE key = ($1)
|
||||
);"</span>,
|
||||
) ORDER BY difficulty_factor ASC;"</span>,
|
||||
<span class="kw-2">&</span><span class="ident">key</span>,
|
||||
)
|
||||
.<span class="ident">fetch_all</span>(<span class="kw-2">&</span><span class="ident">data</span>.<span class="ident">db</span>);
|
||||
|
||||
Reference in New Issue
Block a user