Fix up the implementation details of the RequestFailedException ctor. (#2536)

This commit is contained in:
Ahson Khan 2021-07-01 14:08:05 -07:00 committed by GitHub
parent a2f027f0df
commit 731d07c2cc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 38 deletions

View File

@ -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);
};

View File

@ -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;

View File

@ -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

View File

@ -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");
}