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