@@ -1824,7 +1824,6 @@ Y_UNIT_TEST_SUITE(TestHttpProxy) {
1824
1824
res = SendHttpRequest (" /Root" , " AmazonSQS.DeleteQueue" , std::move (deleteQueueReq), FormAuthorizationStr (" ru-central1" ));
1825
1825
UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1826
1826
1827
-
1828
1827
for (int i = 0 ; i < 61 ; ++i) {
1829
1828
req = CreateSqsGetQueueUrlRequest ();
1830
1829
res = SendHttpRequest (" /Root" , " AmazonSQS.GetQueueUrl" , std::move (req), FormAuthorizationStr (" ru-central1" ));
@@ -2052,4 +2051,139 @@ Y_UNIT_TEST_SUITE(TestHttpProxy) {
2052
2051
UNIT_ASSERT_VALUES_EQUAL (json[" QueueUrls" ][0 ], resultQueueUrl);
2053
2052
}
2054
2053
2054
+ Y_UNIT_TEST_F (TestChangeMessageVisibility, THttpProxyTestMock) {
2055
+ auto createQueueReq = CreateSqsCreateQueueRequest ();
2056
+ auto res = SendHttpRequest (" /Root" , " AmazonSQS.CreateQueue" , std::move (createQueueReq), FormAuthorizationStr (" ru-central1" ));
2057
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
2058
+ NJson::TJsonValue json;
2059
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
2060
+ TString resultQueueUrl = GetByPath<TString>(json, " QueueUrl" );
2061
+
2062
+ NJson::TJsonValue sendMessageReq;
2063
+ sendMessageReq[" QueueUrl" ] = resultQueueUrl;
2064
+ auto body = " MessageBody-0" ;
2065
+ sendMessageReq[" MessageBody" ] = body;
2066
+
2067
+ res = SendHttpRequest (" /Root" , " AmazonSQS.SendMessage" , std::move (sendMessageReq), FormAuthorizationStr (" ru-central1" ));
2068
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
2069
+
2070
+ for (int i = 0 ; i < 20 ; ++i) {
2071
+ NJson::TJsonValue receiveMessageReq;
2072
+ receiveMessageReq[" QueueUrl" ] = resultQueueUrl;
2073
+ res = SendHttpRequest (" /Root" , " AmazonSQS.ReceiveMessage" , std::move (receiveMessageReq), FormAuthorizationStr (" ru-central1" ));
2074
+ if (res.Body != TString (" {}" )) {
2075
+ break ;
2076
+ }
2077
+ std::this_thread::sleep_for (std::chrono::milliseconds (1000 ));
2078
+ }
2079
+
2080
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
2081
+
2082
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
2083
+
2084
+ auto receiptHandle = json[" Messages" ][0 ][" ReceiptHandle" ].GetString ();
2085
+ UNIT_ASSERT (!receiptHandle.Empty ());
2086
+
2087
+ NJson::TJsonValue changeMessageVisibility;
2088
+ changeMessageVisibility[" QueueUrl" ] = resultQueueUrl;
2089
+ changeMessageVisibility[" ReceiptHandle" ] = receiptHandle;
2090
+ changeMessageVisibility[" VisibilityTimeout" ] = 1 ;
2091
+
2092
+ res = SendHttpRequest (
2093
+ " /Root" ,
2094
+ " AmazonSQS.ChangeMessageVisibility" ,
2095
+ std::move (changeMessageVisibility),
2096
+ FormAuthorizationStr (" ru-central1" )
2097
+ );
2098
+
2099
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
2100
+ }
2101
+
2102
+ Y_UNIT_TEST_F (TestChangeMessageVisibilityBatch, THttpProxyTestMock) {
2103
+ auto createQueueReq = CreateSqsCreateQueueRequest ();
2104
+ auto res = SendHttpRequest (" /Root" , " AmazonSQS.CreateQueue" , std::move (createQueueReq), FormAuthorizationStr (" ru-central1" ));
2105
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
2106
+ NJson::TJsonValue json;
2107
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
2108
+ TString resultQueueUrl = GetByPath<TString>(json, " QueueUrl" );
2109
+ UNIT_ASSERT (resultQueueUrl.EndsWith (" ExampleQueueName" ));
2110
+
2111
+ NJson::TJsonValue message0;
2112
+ message0[" Id" ] = " Id-0" ;
2113
+ message0[" MessageBody" ] = " MessageBody-0" ;
2114
+ message0[" MessageDeduplicationId" ] = " MessageDeduplicationId-0" ;
2115
+
2116
+ NJson::TJsonValue message1;
2117
+ message1[" Id" ] = " Id-1" ;
2118
+ message1[" MessageBody" ] = " MessageBody-1" ;
2119
+ message1[" MessageDeduplicationId" ] = " MessageDeduplicationId-1" ;
2120
+
2121
+ NJson::TJsonArray entries = {message0, message1};
2122
+
2123
+ NJson::TJsonValue sendMessageBatchReq;
2124
+ sendMessageBatchReq[" QueueUrl" ] = resultQueueUrl;
2125
+ sendMessageBatchReq[" Entries" ] = entries;
2126
+
2127
+ res = SendHttpRequest (" /Root" , " AmazonSQS.SendMessageBatch" , std::move (sendMessageBatchReq), FormAuthorizationStr (" ru-central1" ));
2128
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
2129
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
2130
+ UNIT_ASSERT (json[" Successful" ].GetArray ().size () == 2 );
2131
+
2132
+ TVector<NJson::TJsonValue> messages;
2133
+ for (int i = 0 ; i < 20 ; ++i) {
2134
+ NJson::TJsonValue receiveMessageReq;
2135
+ receiveMessageReq[" QueueUrl" ] = resultQueueUrl;
2136
+ res = SendHttpRequest (" /Root" , " AmazonSQS.ReceiveMessage" , std::move (receiveMessageReq), FormAuthorizationStr (" ru-central1" ));
2137
+ if (res.Body != TString (" {}" )) {
2138
+ NJson::ReadJsonTree (res.Body , &json);
2139
+ if (json[" Messages" ].GetArray ().size () == 2 ) {
2140
+ messages.push_back (json[" Messages" ][0 ]);
2141
+ messages.push_back (json[" Messages" ][1 ]);
2142
+ break ;
2143
+ }
2144
+ if (json[" Messages" ].GetArray ().size () == 1 ) {
2145
+ messages.push_back (json[" Messages" ][0 ]);
2146
+ if (messages.size () == 2 ) {
2147
+ break ;
2148
+ }
2149
+ }
2150
+ }
2151
+ std::this_thread::sleep_for (std::chrono::milliseconds (1000 ));
2152
+ }
2153
+
2154
+ UNIT_ASSERT_VALUES_EQUAL (messages.size (), 2 );
2155
+
2156
+ auto receiptHandle0 = messages[0 ][" ReceiptHandle" ].GetString ();
2157
+ UNIT_ASSERT (!receiptHandle0.Empty ());
2158
+ auto receiptHandle1 = messages[1 ][" ReceiptHandle" ].GetString ();
2159
+ UNIT_ASSERT (!receiptHandle1.Empty ());
2160
+
2161
+
2162
+ NJson::TJsonValue changeMessageVisibilityBatchReq;
2163
+ changeMessageVisibilityBatchReq[" QueueUrl" ] = resultQueueUrl;
2164
+
2165
+ NJson::TJsonValue entry0;
2166
+ entry0[" Id" ] = " Id-0" ;
2167
+ entry0[" ReceiptHandle" ] = receiptHandle0;
2168
+ entry0[" VisibilityTimeout" ] = 1 ;
2169
+
2170
+ NJson::TJsonValue entry1;
2171
+ entry1[" Id" ] = " Id-1" ;
2172
+ entry1[" ReceiptHandle" ] = receiptHandle1;
2173
+ entry1[" VisibilityTimeout" ] = 2 ;
2174
+
2175
+ NJson::TJsonArray changeVisibilityEntries = {entry0, entry1};
2176
+ changeMessageVisibilityBatchReq[" Entries" ] = changeVisibilityEntries;
2177
+
2178
+ res = SendHttpRequest (
2179
+ " /Root" , " AmazonSQS.ChangeMessageVisibilityBatch" ,
2180
+ std::move (changeMessageVisibilityBatchReq),
2181
+ FormAuthorizationStr (" ru-central1" )
2182
+ );
2183
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
2184
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
2185
+ UNIT_ASSERT_VALUES_EQUAL (json[" Successful" ].GetArray ().size (), 2 );
2186
+ UNIT_ASSERT_VALUES_EQUAL (json[" Successful" ][0 ][" Id" ], " Id-0" );
2187
+ UNIT_ASSERT_VALUES_EQUAL (json[" Successful" ][1 ][" Id" ], " Id-1" );
2188
+ }
2055
2189
} // Y_UNIT_TEST_SUITE(TestHttpProxy)
0 commit comments