20
20
// NOLINTBEGIN(cppcoreguidelines-avoid-capturing-lambda-coroutines)
21
21
22
22
using namespace testing ;
23
+ using GetMessagesFuncType = std::function<boost::asio::awaitable<intStringTuple>(const int )>;
23
24
24
25
namespace
25
26
{
@@ -51,32 +52,34 @@ TEST(CommunicatorTest, StatefulMessageProcessingTask_Success)
51
52
{
52
53
auto mockHttpClient = std::make_unique<MockHttpClient>();
53
54
54
- auto getMessages = []() -> boost::asio::awaitable<std::tuple< int , std::string> >
55
+ auto getMessages = [](const int ) -> boost::asio::awaitable<intStringTuple >
55
56
{
56
- co_return std::tuple< int , std::string> {1 , std::string (" message-content" )};
57
+ co_return intStringTuple {1 , std::string (" message-content" )};
57
58
};
58
59
59
60
std::function<void (const int , const std::string&)> onSuccess = [](const int , const std::string& message)
60
61
{
61
62
EXPECT_EQ (message, " message-content" );
62
63
};
63
64
65
+ auto MockCo_PerformHttpRequest =
66
+ [](std::shared_ptr<std::string>,
67
+ http_client::HttpRequestParams,
68
+ GetMessagesFuncType pGetMessages,
69
+ std::function<void ()>,
70
+ [[maybe_unused]] std::time_t connectionRetry,
71
+ [[maybe_unused]] std::time_t batchInterval,
72
+ [[maybe_unused]] int batchSize,
73
+ std::function<void (const int , const std::string&)> pOnSuccess,
74
+ [[maybe_unused]] std::function<bool ()> loopRequestCondition) -> boost::asio::awaitable<void >
75
+ {
76
+ const auto message = co_await pGetMessages (1 );
77
+ pOnSuccess (std::get<0 >(message), std::get<1 >(message));
78
+ co_return ;
79
+ };
80
+
64
81
EXPECT_CALL (*mockHttpClient, Co_PerformHttpRequest (_, _, _, _, _, _, _, _, _))
65
- .WillOnce (Invoke (
66
- [](std::shared_ptr<std::string>,
67
- http_client::HttpRequestParams,
68
- std::function<boost::asio::awaitable<std::tuple<int , std::string>>()> pGetMessages,
69
- std::function<void ()>,
70
- [[maybe_unused]] std::time_t connectionRetry,
71
- [[maybe_unused]] std::time_t batchInterval,
72
- [[maybe_unused]] int batchSize,
73
- std::function<void (const int , const std::string&)> pOnSuccess,
74
- [[maybe_unused]] std::function<bool ()> loopRequestCondition) -> boost::asio::awaitable<void >
75
- {
76
- const auto message = co_await pGetMessages ();
77
- pOnSuccess (std::get<0 >(message), std::get<1 >(message));
78
- co_return ;
79
- }));
82
+ .WillOnce (Invoke (MockCo_PerformHttpRequest));
80
83
81
84
communicator::Communicator communicator (std::move (mockHttpClient), " uuid" , " key" , nullptr , FUNC);
82
85
@@ -109,22 +112,24 @@ TEST(CommunicatorTest, WaitForTokenExpirationAndAuthenticate_FailedAuthenticatio
109
112
return std::nullopt;
110
113
}));
111
114
115
+ auto MockCo_PerformHttpRequest =
116
+ [](std::shared_ptr<std::string> token,
117
+ http_client::HttpRequestParams,
118
+ [[maybe_unused]] GetMessagesFuncType pGetMessages,
119
+ [[maybe_unused]] std::function<void ()> onUnauthorized,
120
+ [[maybe_unused]] std::time_t connectionRetry,
121
+ [[maybe_unused]] std::time_t batchInterval,
122
+ [[maybe_unused]] int batchSize,
123
+ [[maybe_unused]] std::function<void (const int , const std::string&)> onSuccess,
124
+ [[maybe_unused]] std::function<bool ()> loopCondition) -> boost::asio::awaitable<void >
125
+ {
126
+ EXPECT_TRUE (token->empty ());
127
+ co_return ;
128
+ };
129
+
112
130
// A following call to Co_PerformHttpRequest should not have a token
113
131
EXPECT_CALL (*mockHttpClientPtr, Co_PerformHttpRequest (_, _, _, _, _, _, _, _, _))
114
- .WillOnce (Invoke (
115
- [](std::shared_ptr<std::string> token,
116
- http_client::HttpRequestParams,
117
- [[maybe_unused]] std::function<boost::asio::awaitable<std::tuple<int , std::string>>()> getMessages,
118
- [[maybe_unused]] std::function<void ()> onUnauthorized,
119
- [[maybe_unused]] std::time_t connectionRetry,
120
- [[maybe_unused]] std::time_t batchInterval,
121
- [[maybe_unused]] int batchSize,
122
- [[maybe_unused]] std::function<void (const int , const std::string&)> onSuccess,
123
- [[maybe_unused]] std::function<bool ()> loopCondition) -> boost::asio::awaitable<void >
124
- {
125
- EXPECT_TRUE (token->empty ());
126
- co_return ;
127
- }));
132
+ .WillOnce (Invoke (MockCo_PerformHttpRequest));
128
133
129
134
boost::asio::io_context ioContext;
130
135
@@ -134,8 +139,8 @@ TEST(CommunicatorTest, WaitForTokenExpirationAndAuthenticate_FailedAuthenticatio
134
139
{
135
140
co_await communicatorPtr->WaitForTokenExpirationAndAuthenticate ();
136
141
co_await communicatorPtr->StatelessMessageProcessingTask (
137
- []() -> boost::asio::awaitable<std::tuple< int , std::string> >
138
- { co_return std::tuple< int , std::string> (1 , std::string {" message" }); },
142
+ [](const int ) -> boost::asio::awaitable<intStringTuple >
143
+ { co_return intStringTuple (1 , std::string {" message" }); },
139
144
[]([[maybe_unused]] const int , const std::string&) {});
140
145
}(),
141
146
boost::asio::detached);
@@ -167,22 +172,24 @@ TEST(CommunicatorTest, StatelessMessageProcessingTask_CallsWithValidToken)
167
172
}));
168
173
169
174
std::string capturedToken;
175
+
176
+ auto MockCo_PerformHttpRequest =
177
+ [&capturedToken](std::shared_ptr<std::string> token,
178
+ http_client::HttpRequestParams,
179
+ [[maybe_unused]] GetMessagesFuncType pGetMessages,
180
+ [[maybe_unused]] std::function<void ()> onUnauthorized,
181
+ [[maybe_unused]] std::time_t connectionRetry,
182
+ [[maybe_unused]] std::time_t batchInterval,
183
+ [[maybe_unused]] int batchSize,
184
+ [[maybe_unused]] std::function<void (const int , const std::string&)> onSuccess,
185
+ [[maybe_unused]] std::function<bool ()> loopCondition) -> boost::asio::awaitable<void >
186
+ {
187
+ capturedToken = *token;
188
+ co_return ;
189
+ };
190
+
170
191
EXPECT_CALL (*mockHttpClientPtr, Co_PerformHttpRequest (_, _, _, _, _, _, _, _, _))
171
- .WillOnce (Invoke (
172
- [&capturedToken](
173
- std::shared_ptr<std::string> token,
174
- http_client::HttpRequestParams,
175
- [[maybe_unused]] std::function<boost::asio::awaitable<std::tuple<int , std::string>>()> getMessages,
176
- [[maybe_unused]] std::function<void ()> onUnauthorized,
177
- [[maybe_unused]] std::time_t connectionRetry,
178
- [[maybe_unused]] std::time_t batchInterval,
179
- [[maybe_unused]] int batchSize,
180
- [[maybe_unused]] std::function<void (const int , const std::string&)> onSuccess,
181
- [[maybe_unused]] std::function<bool ()> loopCondition) -> boost::asio::awaitable<void >
182
- {
183
- capturedToken = *token;
184
- co_return ;
185
- }));
192
+ .WillOnce (Invoke (MockCo_PerformHttpRequest));
186
193
187
194
boost::asio::io_context ioContext;
188
195
@@ -192,8 +199,8 @@ TEST(CommunicatorTest, StatelessMessageProcessingTask_CallsWithValidToken)
192
199
{
193
200
co_await communicatorPtr->WaitForTokenExpirationAndAuthenticate ();
194
201
co_await communicatorPtr->StatelessMessageProcessingTask (
195
- []() -> boost::asio::awaitable<std::tuple< int , std::string> >
196
- { co_return std::tuple< int , std::string> (1 , std::string {" message" }); },
202
+ [](const int ) -> boost::asio::awaitable<intStringTuple >
203
+ { co_return intStringTuple (1 , std::string {" message" }); },
197
204
[]([[maybe_unused]] const int , const std::string&) {});
198
205
}(),
199
206
boost::asio::detached);
0 commit comments