52 lines
1.5 KiB
C++
52 lines
1.5 KiB
C++
/*
|
|
* IXSocketConnectTest.cpp
|
|
* Author: Benjamin Sergeant
|
|
* Copyright (c) 2018 Machine Zone. All rights reserved.
|
|
*/
|
|
|
|
#include "catch.hpp"
|
|
|
|
#include "IXTest.h"
|
|
#include <ixwebsocket/IXSocketConnect.h>
|
|
#include <iostream>
|
|
|
|
using namespace ix;
|
|
|
|
|
|
TEST_CASE("socket_connect", "[net]")
|
|
{
|
|
SECTION("Test connecting to a known hostname")
|
|
{
|
|
int port = getFreePort();
|
|
ix::WebSocketServer server(port);
|
|
REQUIRE(startWebSocketEchoServer(server));
|
|
|
|
std::string errMsg;
|
|
int fd = SocketConnect::connect("127.0.0.1", port, errMsg, [] { return false; });
|
|
std::cerr << "Error message: " << errMsg << std::endl;
|
|
REQUIRE(fd != -1);
|
|
}
|
|
|
|
SECTION("Test connecting to a non-existing hostname")
|
|
{
|
|
std::string errMsg;
|
|
std::string hostname("12313lhjlkjhopiupoijlkasdckljqwehrlkqjwehraospidcuaposidcasdc");
|
|
int fd = SocketConnect::connect(hostname, 80, errMsg, [] { return false; });
|
|
std::cerr << "Error message: " << errMsg << std::endl;
|
|
REQUIRE(fd == -1);
|
|
}
|
|
|
|
SECTION("Test connecting to a good hostname, with cancellation")
|
|
{
|
|
int port = getFreePort();
|
|
ix::WebSocketServer server(port);
|
|
REQUIRE(startWebSocketEchoServer(server));
|
|
|
|
std::string errMsg;
|
|
// The callback returning true means we are requesting cancellation
|
|
int fd = SocketConnect::connect("127.0.0.1", port, errMsg, [] { return true; });
|
|
std::cerr << "Error message: " << errMsg << std::endl;
|
|
REQUIRE(fd == -1);
|
|
}
|
|
}
|