rublon-ssh/PAM/ssh/tests/http_mock.hpp
Bartosz Wieczorek dcab16178d init
2023-07-05 11:40:54 +02:00

61 lines
1.3 KiB
C++

#pragma once
#include <gmock/gmock.h>
#include <set>
#include <string>
#include "../src/curl.hpp"
#include "../src/configuration.hpp"
#include "core_response_generator.hpp"
namespace {
rublon::Configuration conf{rublon::Configuration::Parameters{//
"320BAB778C4D4262B54CD243CDEFFAFD",
"39e8d771d83a2ed3cc728811911c25",
"https://staging-core.rublon.net",
1,
true,
true,
false}};
} // namespace
class HttpHandlerMock {
auto signResponse(rublon::Response & res) {
const auto & sign =
skipSignatureGeneration ? std::array< char, 64 >{} : rublon::signData(res.body, conf.parameters.secretKey.c_str());
res.headers["x-rublon-signature"] = sign.data();
}
public:
MOCK_METHOD(std::optional< rublon::Response >, request, ( std::string_view, const rublon::Request & ), (const));
HttpHandlerMock & statusPending() {
gen.status = "pending";
return *this;
}
HttpHandlerMock & brokenBody() {
gen.generateBrokenData = true;
return *this;
}
HttpHandlerMock & brokenSignature() {
skipSignatureGeneration = true;
return *this;
}
operator rublon::Response() {
rublon::Response res;
res.body = gen.generateBody();
signResponse(res);
return res;
}
bool skipSignatureGeneration;
CoreResponseGenerator gen;
};