@@ -1838,4 +1838,162 @@ Y_UNIT_TEST_SUITE(TestHttpProxy) {
1838
1838
UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1839
1839
UNIT_ASSERT_VALUES_EQUAL (GetByPath<TString>(json, " __type" ), " AWS.SimpleQueueService.NonExistentQueue" );
1840
1840
}
1841
+
1842
+ Y_UNIT_TEST_F (TestSetQueueAttributes, THttpProxyTestMock) {
1843
+ auto createQueueReq = CreateSqsCreateQueueRequest ();
1844
+ NJson::TJsonValue attributes;
1845
+ attributes[" DelaySeconds" ] = " 1" ;
1846
+ createQueueReq[" Attributes" ] = attributes;
1847
+ auto res = SendHttpRequest (" /Root" , " AmazonSQS.CreateQueue" , std::move (createQueueReq), FormAuthorizationStr (" ru-central1" ));
1848
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1849
+ NJson::TJsonValue json;
1850
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1851
+
1852
+ TString resultQueueUrl = GetByPath<TString>(json, " QueueUrl" );
1853
+
1854
+ NJson::TJsonValue setQueueAttributes;
1855
+ setQueueAttributes[" QueueUrl" ] = resultQueueUrl;
1856
+ attributes = {};
1857
+ attributes[" DelaySeconds" ] = " 2" ;
1858
+ setQueueAttributes[" Attributes" ] = attributes;
1859
+
1860
+ res = SendHttpRequest (" /Root" , " AmazonSQS.SetQueueAttributes" , std::move (setQueueAttributes), FormAuthorizationStr (" ru-central1" ));
1861
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1862
+
1863
+ NJson::TJsonValue getQueueAttributes;
1864
+ getQueueAttributes[" QueueUrl" ] = resultQueueUrl;
1865
+ NJson::TJsonArray attributeNames = {" DelaySeconds" };
1866
+ getQueueAttributes[" AttributeNames" ] = attributeNames;
1867
+
1868
+ res = SendHttpRequest (" /Root" , " AmazonSQS.GetQueueAttributes" , std::move (getQueueAttributes), FormAuthorizationStr (" ru-central1" ));
1869
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1870
+ NJson::TJsonValue resultJson;
1871
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &resultJson));
1872
+ UNIT_ASSERT_VALUES_EQUAL (resultJson[" Attributes" ][" DelaySeconds" ], " 2" );
1873
+ }
1874
+
1875
+ Y_UNIT_TEST_F (TestSendMessageBatch, THttpProxyTestMock) {
1876
+ auto createQueueReq = CreateSqsCreateQueueRequest ();
1877
+ auto res = SendHttpRequest (" /Root" , " AmazonSQS.CreateQueue" , std::move (createQueueReq), FormAuthorizationStr (" ru-central1" ));
1878
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1879
+ NJson::TJsonValue json;
1880
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1881
+ TString resultQueueUrl = GetByPath<TString>(json, " QueueUrl" );
1882
+ UNIT_ASSERT (resultQueueUrl.EndsWith (" ExampleQueueName" ));
1883
+
1884
+ NJson::TJsonValue message0;
1885
+ message0[" Id" ] = " Id-0" ;
1886
+ message0[" MessageBody" ] = " MessageBody-0" ;
1887
+ message0[" MessageDeduplicationId" ] = " MessageDeduplicationId-0" ;
1888
+
1889
+ NJson::TJsonValue message1;
1890
+ message1[" Id" ] = " Id-1" ;
1891
+ message1[" MessageBody" ] = " MessageBody-1" ;
1892
+ message1[" MessageDeduplicationId" ] = " MessageDeduplicationId-1" ;
1893
+
1894
+ NJson::TJsonArray entries = {message0, message1};
1895
+
1896
+ NJson::TJsonValue sendMessageBatchReq;
1897
+ sendMessageBatchReq[" QueueUrl" ] = resultQueueUrl;
1898
+ sendMessageBatchReq[" Entries" ] = entries;
1899
+
1900
+ res = SendHttpRequest (" /Root" , " AmazonSQS.SendMessageBatch" , std::move (sendMessageBatchReq), FormAuthorizationStr (" ru-central1" ));
1901
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1902
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1903
+ UNIT_ASSERT (json[" Successful" ].GetArray ().size () == 2 );
1904
+ auto succesful0 = json[" Successful" ][0 ];
1905
+ UNIT_ASSERT (succesful0[" Id" ] == " Id-0" );
1906
+ UNIT_ASSERT (!GetByPath<TString>(succesful0, " Md5OfMessageBody" ).empty ());
1907
+ UNIT_ASSERT (!GetByPath<TString>(succesful0, " MessageId" ).empty ());
1908
+ }
1909
+
1910
+ Y_UNIT_TEST_F (TestDeleteMessageBatch, THttpProxyTestMock) {
1911
+ auto createQueueReq = CreateSqsCreateQueueRequest ();
1912
+ auto res = SendHttpRequest (" /Root" , " AmazonSQS.CreateQueue" , std::move (createQueueReq), FormAuthorizationStr (" ru-central1" ));
1913
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1914
+ NJson::TJsonValue json;
1915
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1916
+ TString resultQueueUrl = GetByPath<TString>(json, " QueueUrl" );
1917
+ UNIT_ASSERT (resultQueueUrl.EndsWith (" ExampleQueueName" ));
1918
+
1919
+ NJson::TJsonValue message0;
1920
+ message0[" Id" ] = " Id-0" ;
1921
+ message0[" MessageBody" ] = " MessageBody-0" ;
1922
+ message0[" MessageDeduplicationId" ] = " MessageDeduplicationId-0" ;
1923
+
1924
+ NJson::TJsonValue message1;
1925
+ message1[" Id" ] = " Id-1" ;
1926
+ message1[" MessageBody" ] = " MessageBody-1" ;
1927
+ message1[" MessageDeduplicationId" ] = " MessageDeduplicationId-1" ;
1928
+
1929
+ NJson::TJsonArray entries = {message0, message1};
1930
+
1931
+ NJson::TJsonValue sendMessageBatchReq;
1932
+ sendMessageBatchReq[" QueueUrl" ] = resultQueueUrl;
1933
+ sendMessageBatchReq[" Entries" ] = entries;
1934
+
1935
+ res = SendHttpRequest (" /Root" , " AmazonSQS.SendMessageBatch" , std::move (sendMessageBatchReq), FormAuthorizationStr (" ru-central1" ));
1936
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1937
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1938
+ UNIT_ASSERT (json[" Successful" ].GetArray ().size () == 2 );
1939
+
1940
+ TVector<NJson::TJsonValue> messages;
1941
+ for (int i = 0 ; i < 20 ; ++i) {
1942
+ NJson::TJsonValue receiveMessageReq;
1943
+ receiveMessageReq[" QueueUrl" ] = resultQueueUrl;
1944
+ res = SendHttpRequest (" /Root" , " AmazonSQS.ReceiveMessage" , std::move (receiveMessageReq), FormAuthorizationStr (" ru-central1" ));
1945
+ if (res.Body != TString (" {}" )) {
1946
+ NJson::ReadJsonTree (res.Body , &json);
1947
+ if (json[" Messages" ].GetArray ().size () == 2 ) {
1948
+ messages.push_back (json[" Messages" ][0 ]);
1949
+ messages.push_back (json[" Messages" ][1 ]);
1950
+ break ;
1951
+ }
1952
+ if (json[" Messages" ].GetArray ().size () == 1 ) {
1953
+ messages.push_back (json[" Messages" ][0 ]);
1954
+ if (messages.size () == 2 ) {
1955
+ break ;
1956
+ }
1957
+ }
1958
+ }
1959
+ std::this_thread::sleep_for (std::chrono::milliseconds (1000 ));
1960
+ }
1961
+
1962
+ UNIT_ASSERT_VALUES_EQUAL (messages.size (), 2 );
1963
+
1964
+ auto receiptHandle0 = messages[0 ][" ReceiptHandle" ].GetString ();
1965
+ UNIT_ASSERT (!receiptHandle0.Empty ());
1966
+ auto receiptHandle1 = messages[1 ][" ReceiptHandle" ].GetString ();
1967
+ UNIT_ASSERT (!receiptHandle1.Empty ());
1968
+
1969
+ NJson::TJsonValue deleteMessageBatchReq;
1970
+ deleteMessageBatchReq[" QueueUrl" ] = resultQueueUrl;
1971
+
1972
+ NJson::TJsonValue entry0;
1973
+ entry0[" Id" ] = " Id-0" ;
1974
+ entry0[" ReceiptHandle" ] = receiptHandle0;
1975
+
1976
+ NJson::TJsonValue entry1;
1977
+ entry1[" Id" ] = " Id-1" ;
1978
+ entry1[" ReceiptHandle" ] = receiptHandle1;
1979
+
1980
+ NJson::TJsonArray deleteEntries = {entry0, entry1};
1981
+ deleteMessageBatchReq[" Entries" ] = deleteEntries;
1982
+
1983
+ res = SendHttpRequest (" /Root" , " AmazonSQS.DeleteMessageBatch" , std::move (deleteMessageBatchReq), FormAuthorizationStr (" ru-central1" ));
1984
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1985
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1986
+ UNIT_ASSERT_VALUES_EQUAL (json[" Successful" ].GetArray ().size (), 2 );
1987
+ UNIT_ASSERT_VALUES_EQUAL (json[" Successful" ][0 ][" Id" ], " Id-0" );
1988
+ UNIT_ASSERT_VALUES_EQUAL (json[" Successful" ][1 ][" Id" ], " Id-1" );
1989
+
1990
+ NJson::TJsonValue receiveMessageReq;
1991
+ receiveMessageReq[" QueueUrl" ] = resultQueueUrl;
1992
+ res = SendHttpRequest (" /Root" , " AmazonSQS.ReceiveMessage" , std::move (receiveMessageReq), FormAuthorizationStr (" ru-central1" ));
1993
+ UNIT_ASSERT (NJson::ReadJsonTree (res.Body , &json));
1994
+ UNIT_ASSERT_VALUES_EQUAL (res.HttpCode , 200 );
1995
+ UNIT_ASSERT_VALUES_EQUAL (json[" Messages" ].GetArray ().size (), 0 );
1996
+
1997
+ }
1998
+
1841
1999
} // Y_UNIT_TEST_SUITE(TestHttpProxy)
0 commit comments