mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-14 09:02:06 +00:00
* Add get_json_string_field helper Introduce get_json_string_field in OrcaCloudServiceAgent.cpp to safely extract string fields from JSON objects. * Add resolve_display_name helper Introduce resolve_display_name to normalize provider metadata labels for the UI. The helper returns the first non-empty value from display_name, nickname, full_name, name, falling back to username, resolving human-facing label across varying provider payloads. * Replace safe_str anonymous function Replace get_json_string_field for better readability. * Replace resolution flow for nickname with function Consolidate both flows into one function for easier maintenance and more consistency. * Update OrcaCloudServiceAgent.hpp * Add OrcaCloudServiceAgent display name tests Add unit tests verifying OrcaCloudServiceAgent resolves a user's display name from various session JSON shapes.
158 lines
4.1 KiB
C++
158 lines
4.1 KiB
C++
#include <catch2/catch_all.hpp>
|
|
|
|
#include "slic3r/Utils/Http.hpp"
|
|
#include "slic3r/Utils/OrcaCloudServiceAgent.hpp"
|
|
|
|
#include <wx/init.h>
|
|
|
|
namespace {
|
|
|
|
struct WxFixture {
|
|
WxFixture() { REQUIRE(initializer.IsOk()); }
|
|
|
|
wxInitializer initializer;
|
|
};
|
|
|
|
nlohmann::json flat_session_json(const nlohmann::json& fields)
|
|
{
|
|
nlohmann::json session = {
|
|
{"access_token", "test-token"},
|
|
{"user_id", "test-user-id"}
|
|
};
|
|
session.update(fields);
|
|
return session;
|
|
}
|
|
|
|
nlohmann::json nested_session_json(const nlohmann::json& metadata)
|
|
{
|
|
return {
|
|
{"access_token", "test-token"},
|
|
{"user", {
|
|
{"id", "test-user-id"},
|
|
{"user_metadata", metadata}
|
|
}}
|
|
};
|
|
}
|
|
|
|
std::string resolved_display_name(const nlohmann::json& session)
|
|
{
|
|
Slic3r::OrcaCloudServiceAgent agent("");
|
|
REQUIRE(agent.set_user_session(session, false));
|
|
return agent.get_user_nickname();
|
|
}
|
|
|
|
} // namespace
|
|
|
|
TEST_CASE("Check SSL certificates paths", "[Http][NotWorking]") {
|
|
|
|
Slic3r::Http g = Slic3r::Http::get("https://github.com/");
|
|
|
|
unsigned status = 0;
|
|
g.on_error([&status](std::string, std::string, unsigned http_status) {
|
|
status = http_status;
|
|
});
|
|
|
|
g.on_complete([&status](std::string /* body */, unsigned http_status){
|
|
status = http_status;
|
|
});
|
|
|
|
g.perform_sync();
|
|
|
|
REQUIRE(status == 200);
|
|
}
|
|
|
|
TEST_CASE_METHOD(WxFixture, "Orca cloud flat session resolves display name consistently", "[OrcaCloudServiceAgent]")
|
|
{
|
|
CHECK(resolved_display_name(flat_session_json({
|
|
{"username", "orca_username"},
|
|
{"display_name", "Display Name"},
|
|
{"nickname", "Nickname"}
|
|
})) == "Display Name");
|
|
|
|
CHECK(resolved_display_name(flat_session_json({
|
|
{"username", "orca_username"},
|
|
{"nickname", "Nickname"}
|
|
})) == "Nickname");
|
|
|
|
CHECK(resolved_display_name(flat_session_json({
|
|
{"username", "orca_username"},
|
|
{"full_name", "Full Name"}
|
|
})) == "Full Name");
|
|
|
|
CHECK(resolved_display_name(flat_session_json({
|
|
{"username", "orca_username"},
|
|
{"name", "Provider Name"}
|
|
})) == "Provider Name");
|
|
|
|
CHECK(resolved_display_name(flat_session_json({
|
|
{"username", "orca_username"}
|
|
})) == "orca_username");
|
|
}
|
|
|
|
TEST_CASE_METHOD(WxFixture, "Orca cloud nested session resolves display name consistently", "[OrcaCloudServiceAgent]")
|
|
{
|
|
CHECK(resolved_display_name(nested_session_json({
|
|
{"username", "orca_username"},
|
|
{"display_name", "Display Name"},
|
|
{"nickname", "Nickname"}
|
|
})) == "Display Name");
|
|
|
|
CHECK(resolved_display_name(nested_session_json({
|
|
{"username", "orca_username"},
|
|
{"nickname", "Nickname"}
|
|
})) == "Nickname");
|
|
|
|
CHECK(resolved_display_name(nested_session_json({
|
|
{"username", "orca_username"},
|
|
{"full_name", "Full Name"}
|
|
})) == "Full Name");
|
|
|
|
CHECK(resolved_display_name(nested_session_json({
|
|
{"username", "orca_username"},
|
|
{"name", "Provider Name"}
|
|
})) == "Provider Name");
|
|
|
|
CHECK(resolved_display_name(nested_session_json({
|
|
{"username", "orca_username"}
|
|
})) == "orca_username");
|
|
}
|
|
|
|
TEST_CASE("Http digest authentication", "[Http][NotWorking]") {
|
|
Slic3r::Http g = Slic3r::Http::get("https://httpbingo.org/digest-auth/auth/guest/guest");
|
|
|
|
g.auth_digest("guest", "guest");
|
|
|
|
unsigned status = 0;
|
|
g.on_error([&status](std::string, std::string, unsigned http_status) {
|
|
status = http_status;
|
|
});
|
|
|
|
g.on_complete([&status](std::string /* body */, unsigned http_status){
|
|
status = http_status;
|
|
});
|
|
|
|
g.perform_sync();
|
|
|
|
REQUIRE(status == 200);
|
|
}
|
|
|
|
TEST_CASE("Http basic authentication", "[Http][NotWorking]") {
|
|
Slic3r::Http g = Slic3r::Http::get("https://httpbingo.org/basic-auth/guest/guest");
|
|
|
|
g.auth_basic("guest", "guest");
|
|
|
|
unsigned status = 0;
|
|
g.on_error([&status](std::string, std::string, unsigned http_status) {
|
|
status = http_status;
|
|
});
|
|
|
|
g.on_complete([&status](std::string /* body */, unsigned http_status){
|
|
status = http_status;
|
|
});
|
|
|
|
g.perform_sync();
|
|
|
|
REQUIRE(status == 200);
|
|
}
|
|
|