feat(api): add auth HTTP controller with tests
这个提交包含在:
53
backend/tests/auth_http_test.cc
普通文件
53
backend/tests/auth_http_test.cc
普通文件
@@ -0,0 +1,53 @@
|
||||
#include <catch2/catch_test_macros.hpp>
|
||||
|
||||
#include "csp/app_state.h"
|
||||
#include "csp/controllers/auth_controller.h"
|
||||
|
||||
#include <drogon/HttpRequest.h>
|
||||
|
||||
#include <future>
|
||||
|
||||
namespace {
|
||||
|
||||
drogon::HttpResponsePtr Call(
|
||||
void (csp::controllers::AuthController::*fn)(
|
||||
const drogon::HttpRequestPtr&,
|
||||
std::function<void(const drogon::HttpResponsePtr&)>&&),
|
||||
const Json::Value& body) {
|
||||
auto req = drogon::HttpRequest::newHttpJsonRequest(body);
|
||||
req->setMethod(drogon::Post);
|
||||
|
||||
std::promise<drogon::HttpResponsePtr> p;
|
||||
csp::controllers::AuthController ctl;
|
||||
(ctl.*fn)(req, [&p](const drogon::HttpResponsePtr& resp) { p.set_value(resp); });
|
||||
return p.get_future().get();
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
TEST_CASE("auth controller: register + login") {
|
||||
csp::AppState::Instance().Init(":memory:");
|
||||
|
||||
Json::Value reg;
|
||||
reg["username"] = "bob";
|
||||
reg["password"] = "password123";
|
||||
|
||||
auto regResp = Call(&csp::controllers::AuthController::registerUser, reg);
|
||||
REQUIRE(regResp != nullptr);
|
||||
REQUIRE(regResp->statusCode() == drogon::k200OK);
|
||||
auto j1 = regResp->jsonObject();
|
||||
REQUIRE(j1 != nullptr);
|
||||
REQUIRE((*j1)["ok"].asBool() == true);
|
||||
REQUIRE((*j1)["token"].asString().size() > 10);
|
||||
|
||||
Json::Value login;
|
||||
login["username"] = "bob";
|
||||
login["password"] = "password123";
|
||||
auto loginResp = Call(&csp::controllers::AuthController::login, login);
|
||||
REQUIRE(loginResp != nullptr);
|
||||
REQUIRE(loginResp->statusCode() == drogon::k200OK);
|
||||
auto j2 = loginResp->jsonObject();
|
||||
REQUIRE(j2 != nullptr);
|
||||
REQUIRE((*j2)["ok"].asBool() == true);
|
||||
REQUIRE((*j2)["token"].asString().size() > 10);
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户