userver: /home/antonyzhilin/arcadia/taxi/uservices/userver/libraries/grpc-protovalidate/tests/utils.cpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
utils.cpp
1#include "utils.hpp"
2
3#include <userver/ugrpc/status_utils.hpp>
4
5USERVER_NAMESPACE_BEGIN
6
7namespace tests {
8
9types::ConstrainedMessage CreateValidMessage(int32_t required_value) {
10 types::ConstrainedMessage msg;
11 msg.set_required_rule(required_value);
12 msg.set_const_rule(true);
13 msg.mutable_lt_rule()->set_seconds(3);
14 msg.mutable_lt_rule()->set_nanos(100000);
15 msg.set_gt_rule(5.7);
16 msg.set_in_rule(3);
17 msg.set_not_in_rule("test");
18 msg.set_uuid_rule("3422b448-2460-4fd2-9183-8000de6f8343");
19 msg.set_regex_rule("Hello, world!");
20 msg.set_defined_only_rule(types::TEST_ENUM_VALUE_1);
21 msg.add_unique_gt_rule(11);
22 msg.add_unique_gt_rule(12);
23 msg.add_unique_gt_rule(13);
24 (*msg.mutable_keys_values_rule())["x"] = 0;
25 (*msg.mutable_keys_values_rule())["xx"] = -1;
26 (*msg.mutable_keys_values_rule())["xxx"] = -2;
27 return msg;
28}
29
30types::ConstrainedMessage CreateInvalidMessage() {
31 types::ConstrainedMessage msg;
32 msg.set_required_rule(0);
33 msg.set_const_rule(false);
34 msg.mutable_lt_rule()->set_seconds(10);
35 msg.mutable_lt_rule()->set_nanos(100000);
36 msg.set_gt_rule(3.5);
37 msg.set_in_rule(20);
38 msg.set_not_in_rule("aaa");
39 msg.set_uuid_rule("3422b448-2460-4fd2-9183");
40 msg.set_regex_rule("World, hello!");
41 msg.set_defined_only_rule(static_cast<types::TestEnum>(10));
42 msg.add_unique_gt_rule(3);
43 msg.add_unique_gt_rule(5);
44 msg.add_unique_gt_rule(3);
45 (*msg.mutable_keys_values_rule())["x"] = 1;
46 (*msg.mutable_keys_values_rule())["xxxxx"] = -1;
47 (*msg.mutable_keys_values_rule())["xxxxxx"] = 10;
48 return msg;
49}
50
51std::optional<buf::validate::Violations> GetViolations(const ugrpc::client::InvalidArgumentError& err) {
52 std::optional<buf::validate::Violations> result;
53 auto status = ugrpc::ToGoogleRpcStatus(err.GetStatus());
54
55 if (status) {
56 for (const auto& detail : status->details()) {
57 if (detail.Is<buf::validate::Violations>()) {
58 result.emplace();
59 detail.UnpackTo(&(*result));
60 }
61 }
62 }
63
64 return result;
65}
66
67} // namespace tests
68
69USERVER_NAMESPACE_END