diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 6a82b1cf..a96787c7 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -18,15 +18,25 @@ include_directories( ${PROJECT_SOURCE_DIR}/Catch2/single_include ) -add_executable(ixwebsocket_unittest +# Shared sources +set (SOURCES test_runner.cpp - cmd_websocket_chat.cpp - IXWebSocketServerTest.cpp - IXSocketTest.cpp + IXDNSLookupTest.cpp IXTest.cpp msgpack11.cpp ) +# Some unittest don't work on windows yet +if (NOT WIN32) + list(APPEND SOURCES + IXWebSocketServerTest.cpp + cmd_websocket_chat.cpp + IXSocketTest.cpp + ) +endif() + +add_executable(ixwebsocket_unittest ${SOURCES}) + if (APPLE AND USE_TLS) target_link_libraries(ixwebsocket_unittest "-framework foundation" "-framework security") endif() diff --git a/test/IXDNSLookupTest.cpp b/test/IXDNSLookupTest.cpp new file mode 100644 index 00000000..0c3617d0 --- /dev/null +++ b/test/IXDNSLookupTest.cpp @@ -0,0 +1,50 @@ +/* + * IXDNSLookupTest.cpp + * Author: Benjamin Sergeant + * Copyright (c) 2018 Machine Zone. All rights reserved. + */ + +#include "catch.hpp" + +#include "IXTest.h" +#include +#include + +using namespace ix; + + +TEST_CASE("dns", "[net]") +{ + SECTION("Test resolving a known hostname") + { + DNSLookup dnsLookup("www.google.com", 80); + + std::string errMsg; + struct addrinfo* res; + + res = dnsLookup.resolve(errMsg, [] { return false; }); + std::cerr << "Error message: " << errMsg << std::endl; + REQUIRE(res != nullptr); + } + + SECTION("Test resolving a non-existing hostname") + { + DNSLookup dnsLookup("wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww", 80); + + std::string errMsg; + struct addrinfo* res = dnsLookup.resolve(errMsg, [] { return false; }); + std::cerr << "Error message: " << errMsg << std::endl; + REQUIRE(res == nullptr); + } + + SECTION("Test resolving a good hostname, with cancellation") + { + DNSLookup dnsLookup("www.google.com", 80, 1); + + std::string errMsg; + // The callback returning true means we are requesting cancellation + struct addrinfo* res = dnsLookup.resolve(errMsg, [] { return true; }); + std::cerr << "Error message: " << errMsg << std::endl; + REQUIRE(res == nullptr); + } +} diff --git a/test/run.py b/test/run.py index 07b69a4f..edfcbefc 100644 --- a/test/run.py +++ b/test/run.py @@ -57,7 +57,5 @@ shutil.copy(os.path.join( 'bin', 'zlib.dll'), '.') -# unittest broken on Windows -if osName != 'Windows': - testCommand = '{} {}'.format(testBinary, os.getenv('TEST', '')) - os.system(testCommand) +testCommand = '{} {}'.format(testBinary, os.getenv('TEST', '')) +os.system(testCommand)