mirror of
https://github.com/LizardByte/Sunshine.git
synced 2026-10-23 03:28:06 +09:00
43 lines
1.4 KiB
C++
43 lines
1.4 KiB
C++
/**
|
|
* @file tests/unit/test_upnp.cpp
|
|
* @brief Test src/upnp.*
|
|
*/
|
|
|
|
// test includes
|
|
#include "../tests_common.h"
|
|
|
|
// local includes
|
|
#include <src/upnp.h>
|
|
|
|
TEST(UpnpIsValidIgdTest, RejectsNoIgd) {
|
|
ASSERT_FALSE(upnp::is_valid_igd(upnp::igd_status_e::none));
|
|
}
|
|
|
|
TEST(UpnpIsValidIgdTest, AcceptsConnectedIgd) {
|
|
ASSERT_TRUE(upnp::is_valid_igd(upnp::igd_status_e::connected));
|
|
}
|
|
|
|
#if (MINIUPNPC_API_VERSION >= 18)
|
|
TEST(UpnpIsValidIgdTest, AcceptsPrivateIpIgd) {
|
|
// MiniUPnPc 2.2.8+ reports a valid connected IGD with a private IP address as igd_status_e::private_ip.
|
|
ASSERT_TRUE(upnp::is_valid_igd(upnp::igd_status_e::private_ip));
|
|
}
|
|
#endif
|
|
|
|
TEST(UpnpIsValidIgdTest, AcceptsDisconnectedIgd) {
|
|
// Regression test for #5462: MiniUPnPc 2.2.8+ reports a valid but disconnected IGD as
|
|
// igd_status_e::disconnected. The old check (status == 1 || status == 2) rejected it, so UPnP port
|
|
// mapping silently failed for routers advertising a valid IGD with NewConnectionStatus=Disconnected.
|
|
ASSERT_TRUE(upnp::is_valid_igd(upnp::igd_status_e::disconnected));
|
|
}
|
|
|
|
TEST(UpnpIsValidIgdTest, RejectsUnknownDevice) {
|
|
ASSERT_FALSE(upnp::is_valid_igd(upnp::igd_status_e::unknown_device));
|
|
}
|
|
|
|
TEST(UpnpIsValidIgdTest, RejectsOutOfRange) {
|
|
ASSERT_FALSE(upnp::is_valid_igd(static_cast<upnp::igd_status_e>(-1)));
|
|
ASSERT_FALSE(upnp::is_valid_igd(static_cast<upnp::igd_status_e>(5)));
|
|
ASSERT_FALSE(upnp::is_valid_igd(static_cast<upnp::igd_status_e>(100)));
|
|
}
|