Improve network error messages (#4704)

This commit is contained in:
nerix
2023-07-01 14:59:59 +02:00
committed by GitHub
parent d2f1516818
commit 22b290cb2d
15 changed files with 378 additions and 169 deletions
+1
View File
@@ -8,6 +8,7 @@ set(test_SOURCES
${CMAKE_CURRENT_LIST_DIR}/src/AccessGuard.cpp
${CMAKE_CURRENT_LIST_DIR}/src/NetworkCommon.cpp
${CMAKE_CURRENT_LIST_DIR}/src/NetworkRequest.cpp
${CMAKE_CURRENT_LIST_DIR}/src/NetworkResult.cpp
${CMAKE_CURRENT_LIST_DIR}/src/ChatterSet.cpp
${CMAKE_CURRENT_LIST_DIR}/src/HighlightPhrase.cpp
${CMAKE_CURRENT_LIST_DIR}/src/Emojis.cpp
+6 -2
View File
@@ -210,7 +210,9 @@ TEST(NetworkRequest, TimeoutTimingOut)
.onError([&waiter, url](const NetworkResult &result) {
qDebug() << QTime::currentTime().toString()
<< "timeout request finish error";
EXPECT_EQ(result.status(), NetworkResult::timedoutStatus);
EXPECT_EQ(result.error(),
NetworkResult::NetworkError::TimeoutError);
EXPECT_EQ(result.status(), std::nullopt);
waiter.requestDone();
})
@@ -267,7 +269,9 @@ TEST(NetworkRequest, FinallyCallbackOnTimeout)
})
.onError([&](const NetworkResult &result) {
onErrorCalled = true;
EXPECT_EQ(result.status(), NetworkResult::timedoutStatus);
EXPECT_EQ(result.error(),
NetworkResult::NetworkError::TimeoutError);
EXPECT_EQ(result.status(), std::nullopt);
})
.finally([&] {
finallyCalled = true;
+48
View File
@@ -0,0 +1,48 @@
#include "common/NetworkResult.hpp"
#include <gtest/gtest.h>
using namespace chatterino;
using Error = NetworkResult::NetworkError;
namespace {
void checkResult(const NetworkResult &res, Error error,
std::optional<int> status, const QString &formatted)
{
ASSERT_EQ(res.error(), error);
ASSERT_EQ(res.status(), status);
ASSERT_EQ(res.formatError(), formatted);
}
} // namespace
TEST(NetworkResult, NoError)
{
checkResult({Error::NoError, 200, {}}, Error::NoError, 200, "200");
checkResult({Error::NoError, 202, {}}, Error::NoError, 202, "202");
// no status code
checkResult({Error::NoError, {}, {}}, Error::NoError, std::nullopt,
"NoError");
}
TEST(NetworkResult, Errors)
{
checkResult({Error::TimeoutError, {}, {}}, Error::TimeoutError,
std::nullopt, "TimeoutError");
checkResult({Error::RemoteHostClosedError, {}, {}},
Error::RemoteHostClosedError, std::nullopt,
"RemoteHostClosedError");
// status code takes precedence
checkResult({Error::TimeoutError, 400, {}}, Error::TimeoutError, 400,
"400");
}
TEST(NetworkResult, InvalidError)
{
checkResult({static_cast<Error>(-1), {}, {}}, static_cast<Error>(-1),
std::nullopt, "unknown error (-1)");
}