rublon-ssh/PAM/ssh/tests/http_mock.hpp
2023-07-24 13:25:48 +02:00

61 lines
1.4 KiB
C++

#pragma once
#include <gmock/gmock.h>
#include <set>
#include <string>
#include <rublon/curl.hpp>
#include <rublon/configuration.hpp>
#include "core_response_generator.hpp"
#include "rublon/sign.hpp"
namespace {
rublon::Configuration conf{rublon::Configuration::Parameters{//
"320BAB778C4D4262B54CD243CDEFFAFD",
"39e8d771d83a2ed3cc728811911c25",
"https://staging-core.rublon.net",
1,
true,
true,
false}};
} // namespace
class HttpHandlerMock : public CoreResponseGenerator{
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() {
status = "pending";
return *this;
}
HttpHandlerMock & brokenBody() {
generateBrokenData = true;
return *this;
}
HttpHandlerMock & brokenSignature() {
skipSignatureGeneration = true;
return *this;
}
operator rublon::Response() {
rublon::Response res;
res.body = generateBody();
signResponse(res);
return res;
}
bool skipSignatureGeneration;
};