Fix up the implementation details of the RequestFailedException ctor. (#2536)
This commit is contained in:
parent
a2f027f0df
commit
731d07c2cc
@ -147,7 +147,7 @@ namespace Azure { namespace Core {
|
||||
~RequestFailedException() = default;
|
||||
|
||||
private:
|
||||
std::string getRawResponseField(
|
||||
std::string GetRawResponseField(
|
||||
std::unique_ptr<Azure::Core::Http::RawResponse>& rawResponse,
|
||||
std::string fieldName);
|
||||
};
|
||||
|
||||
@ -32,20 +32,20 @@ namespace Azure { namespace Core {
|
||||
|
||||
RequestFailedException::RequestFailedException(
|
||||
std::unique_ptr<Azure::Core::Http::RawResponse>& rawResponse)
|
||||
: std::runtime_error(getRawResponseField(rawResponse, "message"))
|
||||
: std::runtime_error(GetRawResponseField(rawResponse, "message"))
|
||||
{
|
||||
auto& headers = rawResponse->GetHeaders();
|
||||
|
||||
StatusCode = rawResponse->GetStatusCode();
|
||||
ErrorCode = getRawResponseField(rawResponse, "code");
|
||||
StatusCode = rawResponse->GetStatusCode();
|
||||
ErrorCode = GetRawResponseField(rawResponse, "code");
|
||||
ReasonPhrase = rawResponse->GetReasonPhrase();
|
||||
RequestId = HttpShared::GetHeaderOrEmptyString(headers, HttpShared::MsRequestId);
|
||||
ClientRequestId = HttpShared::GetHeaderOrEmptyString(headers, HttpShared::MsClientRequestId);
|
||||
Message = this->what();
|
||||
RawResponse = std::move(rawResponse);
|
||||
}
|
||||
|
||||
std::string RequestFailedException::getRawResponseField(
|
||||
std::string RequestFailedException::GetRawResponseField(
|
||||
std::unique_ptr<Azure::Core::Http::RawResponse>& rawResponse,
|
||||
std::string fieldName)
|
||||
{
|
||||
@ -62,14 +62,6 @@ namespace Azure { namespace Core {
|
||||
{
|
||||
result = error.value()[fieldName].get<std::string>();
|
||||
}
|
||||
else if (fieldName == "message")
|
||||
{
|
||||
result = std::string(bodyBuffer.begin(), bodyBuffer.end());
|
||||
}
|
||||
}
|
||||
else if (fieldName == "message")
|
||||
{
|
||||
result = std::string(bodyBuffer.begin(), bodyBuffer.end());
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@ -101,7 +101,7 @@ target_link_libraries(azure-core-test PRIVATE azure-core gtest gmock)
|
||||
add_executable (
|
||||
azure-core-global-context-test
|
||||
global_context_test.cpp
|
||||
)
|
||||
)
|
||||
if (MSVC)
|
||||
# Disable gtest warnings for MSVC
|
||||
target_compile_options(azure-core-global-context-test PUBLIC /wd26495 /wd26812 /wd6326 /wd28204 /wd28020 /wd6330 /wd4389)
|
||||
@ -123,7 +123,7 @@ if(BUILD_TRANSPORT_CURL)
|
||||
add_executable (
|
||||
azure-core-libcurl-test
|
||||
azure_libcurl_core_main_test.cpp
|
||||
)
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
# warning C4389: '==': signed/unsigned mismatch
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
#include <azure/core/exception.hpp>
|
||||
#include <azure/core/http/http.hpp>
|
||||
#include <gtest/gtest.h>
|
||||
@ -50,30 +51,8 @@ TEST(RequestFailedException, JSONErrorNoError)
|
||||
auto exception = Azure::Core::RequestFailedException(response);
|
||||
|
||||
EXPECT_EQ(exception.StatusCode, Azure::Core::Http::HttpStatusCode::ServiceUnavailable);
|
||||
EXPECT_EQ(exception.Message, "{\"text\" :\"some text\"}");
|
||||
EXPECT_EQ(exception.Message, "");
|
||||
EXPECT_EQ(exception.ErrorCode, "");
|
||||
EXPECT_EQ(exception.RequestId, "1");
|
||||
EXPECT_EQ(exception.ClientRequestId, "2");
|
||||
}
|
||||
|
||||
TEST(RequestFailedException, NonJSONError)
|
||||
{
|
||||
auto response = std::make_unique<Azure::Core::Http::RawResponse>(
|
||||
1, 1, Azure::Core::Http::HttpStatusCode::ServiceUnavailable, "reason");
|
||||
static constexpr uint8_t const responseBody[] = "NJT";
|
||||
static constexpr uint8_t const responseBodyStream[] = "NJT";
|
||||
|
||||
response->SetHeader(HttpShared::ContentType, "application/text");
|
||||
response->SetHeader(HttpShared::MsRequestId, "1");
|
||||
response->SetHeader(HttpShared::MsClientRequestId, "2");
|
||||
response->SetBody(std::vector<uint8_t>(responseBody, responseBody + sizeof(responseBody)));
|
||||
response->SetBodyStream(std::make_unique<Azure::Core::IO::MemoryBodyStream>(
|
||||
responseBodyStream, sizeof(responseBodyStream) - 1));
|
||||
|
||||
auto exception = Azure::Core::RequestFailedException(response);
|
||||
|
||||
EXPECT_EQ(exception.StatusCode, Azure::Core::Http::HttpStatusCode::ServiceUnavailable);
|
||||
EXPECT_EQ(exception.Message, "NJT");
|
||||
EXPECT_EQ(exception.RequestId, "1");
|
||||
EXPECT_EQ(exception.ClientRequestId, "2");
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user