mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2026-02-13 11:05:40 +00:00
Deploying to gh-pages from @ 855dbc60ef 🚀
This commit is contained in:
@@ -143,6 +143,36 @@
|
||||
<span id="143">143</span>
|
||||
<span id="144">144</span>
|
||||
<span id="145">145</span>
|
||||
<span id="146">146</span>
|
||||
<span id="147">147</span>
|
||||
<span id="148">148</span>
|
||||
<span id="149">149</span>
|
||||
<span id="150">150</span>
|
||||
<span id="151">151</span>
|
||||
<span id="152">152</span>
|
||||
<span id="153">153</span>
|
||||
<span id="154">154</span>
|
||||
<span id="155">155</span>
|
||||
<span id="156">156</span>
|
||||
<span id="157">157</span>
|
||||
<span id="158">158</span>
|
||||
<span id="159">159</span>
|
||||
<span id="160">160</span>
|
||||
<span id="161">161</span>
|
||||
<span id="162">162</span>
|
||||
<span id="163">163</span>
|
||||
<span id="164">164</span>
|
||||
<span id="165">165</span>
|
||||
<span id="166">166</span>
|
||||
<span id="167">167</span>
|
||||
<span id="168">168</span>
|
||||
<span id="169">169</span>
|
||||
<span id="170">170</span>
|
||||
<span id="171">171</span>
|
||||
<span id="172">172</span>
|
||||
<span id="173">173</span>
|
||||
<span id="174">174</span>
|
||||
<span id="175">175</span>
|
||||
</pre><pre class="rust"><code><span class="comment">/*
|
||||
* Copyright (C) 2021 Aravinth Manivannan <realaravinth@batsense.net>
|
||||
*
|
||||
@@ -160,9 +190,11 @@
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/</span>
|
||||
<span class="kw">use</span> <span class="ident">std::time::Duration</span>;
|
||||
<span class="comment">//use std::sync::atomicBool</span>
|
||||
|
||||
<span class="kw">use</span> <span class="ident">actix::clock::sleep</span>;
|
||||
<span class="kw">use</span> <span class="ident">actix::spawn</span>;
|
||||
<span class="kw">use</span> <span class="ident">tokio::task::JoinHandle</span>;
|
||||
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::api::v1::account::delete::runners::delete_user</span>;
|
||||
<span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::api::v1::account</span>::{<span class="ident">username::runners::username_exists</span>, <span class="ident">AccountCheckPayload</span>};
|
||||
@@ -176,52 +208,79 @@
|
||||
<span class="doccomment">/// Demo password</span>
|
||||
<span class="kw">pub</span> <span class="kw">const</span> <span class="ident">DEMO_PASSWORD</span>: <span class="kw-2">&</span><span class="ident">str</span> <span class="op">=</span> <span class="string">"password"</span>;
|
||||
|
||||
<span class="doccomment">/// register demo user runner</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">user_exists_payload</span> <span class="op">=</span> <span class="ident">AccountCheckPayload</span> {
|
||||
<span class="ident">val</span>: <span class="ident">DEMO_USER</span>.<span class="ident">into</span>(),
|
||||
};
|
||||
<span class="kw">pub</span> <span class="kw">struct</span> <span class="ident">DemoUser</span> {
|
||||
<span class="ident">data</span>: <span class="ident">AppData</span>,
|
||||
<span class="ident">duration</span>: <span class="ident">Duration</span>,
|
||||
<span class="ident">handle</span>: <span class="ident">JoinHandle</span><span class="op"><</span>()<span class="op">></span>,
|
||||
}
|
||||
|
||||
<span class="kw">if</span> <span class="op">!</span><span class="ident">username_exists</span>(<span class="kw-2">&</span><span class="ident">user_exists_payload</span>, <span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>.<span class="ident">exists</span> {
|
||||
<span class="kw">let</span> <span class="ident">register_payload</span> <span class="op">=</span> <span class="ident">Register</span> {
|
||||
<span class="ident">username</span>: <span class="ident">DEMO_USER</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">password</span>: <span class="ident">DEMO_PASSWORD</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">confirm_password</span>: <span class="ident">DEMO_PASSWORD</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">email</span>: <span class="prelude-val">None</span>,
|
||||
<span class="kw">impl</span> <span class="ident">DemoUser</span> {
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">spawn</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">duration</span>: <span class="ident">Duration</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="self">Self</span><span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">handle</span> <span class="op">=</span> <span class="ident"><span class="self">Self</span>::run</span>(<span class="ident">data</span>.<span class="ident">clone</span>(), <span class="ident">duration</span>.<span class="ident">clone</span>()).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="kw">let</span> <span class="ident">d</span> <span class="op">=</span> <span class="self">Self</span> {
|
||||
<span class="ident">data</span>,
|
||||
<span class="ident">duration</span>,
|
||||
<span class="ident">handle</span>,
|
||||
};
|
||||
|
||||
<span class="macro">log::info!</span>(<span class="string">"Registering demo user"</span>);
|
||||
<span class="kw">match</span> <span class="ident">register_runner</span>(<span class="kw-2">&</span><span class="ident">register_payload</span>, <span class="ident">data</span>).<span class="kw">await</span> {
|
||||
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>) <span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
|
||||
<span class="prelude-val">Err</span>(<span class="ident">e</span>) => <span class="prelude-val">Err</span>(<span class="ident">e</span>),
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">d</span>)
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">dead_code</span>)]</span>
|
||||
<span class="kw">pub</span> <span class="kw">fn</span> <span class="ident">abort</span>(<span class="kw-2">&</span><span class="self">self</span>) {
|
||||
<span class="self">self</span>.<span class="ident">handle</span>.<span class="ident">abort</span>();
|
||||
}
|
||||
|
||||
<span class="doccomment">/// register demo user runner</span>
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">register_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="kw">let</span> <span class="ident">user_exists_payload</span> <span class="op">=</span> <span class="ident">AccountCheckPayload</span> {
|
||||
<span class="ident">val</span>: <span class="ident">DEMO_USER</span>.<span class="ident">into</span>(),
|
||||
};
|
||||
|
||||
<span class="kw">if</span> <span class="op">!</span><span class="ident">username_exists</span>(<span class="kw-2">&</span><span class="ident">user_exists_payload</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>.<span class="ident">exists</span> {
|
||||
<span class="kw">let</span> <span class="ident">register_payload</span> <span class="op">=</span> <span class="ident">Register</span> {
|
||||
<span class="ident">username</span>: <span class="ident">DEMO_USER</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">password</span>: <span class="ident">DEMO_PASSWORD</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">confirm_password</span>: <span class="ident">DEMO_PASSWORD</span>.<span class="ident">into</span>(),
|
||||
<span class="ident">email</span>: <span class="prelude-val">None</span>,
|
||||
};
|
||||
|
||||
<span class="macro">log::info!</span>(<span class="string">"Registering demo user"</span>);
|
||||
<span class="kw">match</span> <span class="ident">register_runner</span>(<span class="kw-2">&</span><span class="ident">register_payload</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span> {
|
||||
<span class="prelude-val">Err</span>(<span class="ident">ServiceError::UsernameTaken</span>) <span class="op">|</span> <span class="prelude-val">Ok</span>(<span class="kw">_</span>) => <span class="prelude-val">Ok</span>(()),
|
||||
<span class="prelude-val">Err</span>(<span class="ident">e</span>) => <span class="prelude-val">Err</span>(<span class="ident">e</span>),
|
||||
}
|
||||
} <span class="kw">else</span> {
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
} <span class="kw">else</span> {
|
||||
}
|
||||
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="macro">log::info!</span>(<span class="string">"Deleting demo user"</span>);
|
||||
<span class="ident">delete_user</span>(<span class="ident">DEMO_USER</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
}
|
||||
|
||||
<span class="kw">async</span> <span class="kw">fn</span> <span class="ident">delete_demo_user</span>(<span class="ident">data</span>: <span class="kw-2">&</span><span class="ident">AppData</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="macro">log::info!</span>(<span class="string">"Deleting demo user"</span>);
|
||||
<span class="ident">delete_user</span>(<span class="ident">DEMO_USER</span>, <span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
}
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">run</span>(
|
||||
<span class="ident">data</span>: <span class="ident">AppData</span>,
|
||||
<span class="ident">duration</span>: <span class="ident">Duration</span>,
|
||||
) -> <span class="ident">ServiceResult</span><span class="op"><</span><span class="ident">JoinHandle</span><span class="op"><</span>()<span class="op">></span><span class="op">></span> {
|
||||
<span class="ident"><span class="self">Self</span>::register_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
|
||||
<span class="kw">pub</span> <span class="kw">async</span> <span class="kw">fn</span> <span class="ident">run</span>(<span class="ident">data</span>: <span class="ident">AppData</span>, <span class="ident">duration</span>: <span class="ident">Duration</span>) -> <span class="ident">ServiceResult</span><span class="op"><</span>()<span class="op">></span> {
|
||||
<span class="ident">register_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span><span class="question-mark">?</span>;
|
||||
|
||||
<span class="kw">let</span> <span class="ident">fut</span> <span class="op">=</span> <span class="kw">async</span> <span class="kw">move</span> {
|
||||
<span class="kw">loop</span> {
|
||||
<span class="ident">sleep</span>(<span class="ident">duration</span>).<span class="kw">await</span>;
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span> <span class="ident">delete_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span> {
|
||||
<span class="macro">log::error!</span>(<span class="string">"Error while deleting demo user: {:?}"</span>, <span class="ident">e</span>);
|
||||
<span class="kw">let</span> <span class="ident">fut</span> <span class="op">=</span> <span class="kw">async</span> <span class="kw">move</span> {
|
||||
<span class="kw">loop</span> {
|
||||
<span class="ident">sleep</span>(<span class="ident">duration</span>).<span class="kw">await</span>;
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span> <span class="ident"><span class="self">Self</span>::delete_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span> {
|
||||
<span class="macro">log::error!</span>(<span class="string">"Error while deleting demo user: {:?}"</span>, <span class="ident">e</span>);
|
||||
}
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span> <span class="ident"><span class="self">Self</span>::register_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span> {
|
||||
<span class="macro">log::error!</span>(<span class="string">"Error while registering demo user: {:?}"</span>, <span class="ident">e</span>);
|
||||
}
|
||||
}
|
||||
<span class="kw">if</span> <span class="kw">let</span> <span class="prelude-val">Err</span>(<span class="ident">e</span>) <span class="op">=</span> <span class="ident">register_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span> {
|
||||
<span class="macro">log::error!</span>(<span class="string">"Error while registering demo user: {:?}"</span>, <span class="ident">e</span>);
|
||||
}
|
||||
}
|
||||
};
|
||||
<span class="ident">spawn</span>(<span class="ident">fut</span>);
|
||||
<span class="prelude-val">Ok</span>(())
|
||||
};
|
||||
<span class="kw">let</span> <span class="ident">handle</span> <span class="op">=</span> <span class="ident">spawn</span>(<span class="ident">fut</span>);
|
||||
<span class="prelude-val">Ok</span>(<span class="ident">handle</span>)
|
||||
}
|
||||
}
|
||||
|
||||
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">test</span>)]</span>
|
||||
@@ -245,7 +304,7 @@
|
||||
<span class="kw">let</span> <span class="ident">duration</span> <span class="op">=</span> <span class="ident">Duration::from_secs</span>(<span class="ident">DURATION</span>);
|
||||
|
||||
<span class="comment">// register works</span>
|
||||
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">register_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>.<span class="ident">unwrap</span>();
|
||||
<span class="kw">let</span> <span class="kw">_</span> <span class="op">=</span> <span class="ident">DemoUser::register_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>.<span class="ident">unwrap</span>();
|
||||
<span class="kw">let</span> <span class="ident">payload</span> <span class="op">=</span> <span class="ident">AccountCheckPayload</span> {
|
||||
<span class="ident">val</span>: <span class="ident">DEMO_USER</span>.<span class="ident">into</span>(),
|
||||
};
|
||||
@@ -253,11 +312,11 @@
|
||||
<span class="ident">signin</span>(<span class="ident">DEMO_USER</span>, <span class="ident">DEMO_PASSWORD</span>).<span class="kw">await</span>;
|
||||
|
||||
<span class="comment">// deletion works</span>
|
||||
<span class="macro">assert!</span>(<span class="ident"><span class="kw">super</span>::delete_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>.<span class="ident">is_ok</span>());
|
||||
<span class="macro">assert!</span>(<span class="ident">DemoUser::delete_demo_user</span>(<span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>.<span class="ident">is_ok</span>());
|
||||
<span class="macro">assert!</span>(<span class="op">!</span><span class="ident">username_exists</span>(<span class="kw-2">&</span><span class="ident">payload</span>, <span class="kw-2">&</span><span class="ident">data</span>).<span class="kw">await</span>.<span class="ident">unwrap</span>().<span class="ident">exists</span>);
|
||||
|
||||
<span class="comment">// test the runner</span>
|
||||
<span class="ident">run</span>(<span class="ident">data</span>, <span class="ident">duration</span>).<span class="kw">await</span>.<span class="ident">unwrap</span>();
|
||||
<span class="kw">let</span> <span class="ident">user</span> <span class="op">=</span> <span class="ident">DemoUser::spawn</span>(<span class="ident">data</span>, <span class="ident">duration</span>).<span class="kw">await</span>.<span class="ident">unwrap</span>();
|
||||
<span class="kw">let</span> (<span class="ident">data_inner</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_levels_util</span>(<span class="ident">DEMO_USER</span>, <span class="ident">DEMO_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="ident">signin_resp</span>);
|
||||
@@ -265,7 +324,7 @@
|
||||
|
||||
<span class="kw">let</span> <span class="ident">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">token_key</span>, <span class="ident"><span class="kw">crate</span>::V1_API_ROUTES</span>.<span class="ident">levels</span>.<span class="ident">get</span>)
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">token_key</span>, <span class="ident"><span class="kw">crate</span>::V1_API_ROUTES</span>.<span class="ident">captcha</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>(),
|
||||
)
|
||||
@@ -278,7 +337,7 @@
|
||||
|
||||
<span class="kw">let</span> <span class="ident">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">token_key</span>, <span class="ident"><span class="kw">crate</span>::V1_API_ROUTES</span>.<span class="ident">levels</span>.<span class="ident">get</span>)
|
||||
<span class="macro">post_request!</span>(<span class="kw-2">&</span><span class="ident">token_key</span>, <span class="ident"><span class="kw">crate</span>::V1_API_ROUTES</span>.<span class="ident">captcha</span>.<span class="ident">get</span>)
|
||||
.<span class="ident">cookie</span>(<span class="ident">cookies</span>)
|
||||
.<span class="ident">to_request</span>(),
|
||||
)
|
||||
@@ -286,6 +345,7 @@
|
||||
<span class="macro">assert_eq!</span>(<span class="ident">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">resp</span>).<span class="kw">await</span>;
|
||||
<span class="macro">assert!</span>(<span class="ident">res_levels</span>.<span class="ident">is_empty</span>());
|
||||
<span class="ident">user</span>.<span class="ident">abort</span>();
|
||||
}
|
||||
}
|
||||
</code></pre></div>
|
||||
|
||||
Reference in New Issue
Block a user