// Disconnect EALREADY TEST_F(SSLClientServerConnectionTest, DisconnectEalready) { MockHandler ch; SSLContext context(SSLContext::TLSv1_1); context.SetCertificate(std::string(CLIENT_CERT)); context.SetPrivateKey(std::string(CLIENT_PKEY)); context.SetCAFile(std::string(CA_CERT)); context.SetCiphers(std::string(CIPHER_LIST)); context.SetVerifyMode(SSLContext::VERIFY_PEER); SSLClient cl(ch, context); SSLSocket cs = cl.CreateSocket(TEST_ADDR, TEST_PORT); EXPECT_CALL(ch, OnConnectMock(_)).Times(0); EXPECT_CALL(ch, OnDisconnectMock(_, _)).Times(0); Error e = cs.Disconnect(); ASSERT_EQ(LNR_EALREADY, e.Code()); msleep(WAIT_MSEC); }
// Cancel TEST_F(SSLClientServerConnectionTest, ConnectCancel) { MockHandler ch; SSLContext context(SSLContext::TLSv1_1); context.SetCertificate(std::string(CLIENT_CERT)); context.SetPrivateKey(std::string(CLIENT_PKEY)); context.SetCAFile(std::string(CA_CERT)); context.SetCiphers(std::string(CIPHER_LIST)); context.SetVerifyMode(SSLContext::VERIFY_PEER); SSLClient cl(ch, context); SSLSocket cs = cl.CreateSocket("127.0.0.2", TEST_PORT); EXPECT_CALL(ch, OnConnectMock(_)).Times(0); EXPECT_CALL(ch, OnDisconnectMock(_, _)).WillOnce(DoAll(Assign(&srv_finished, true), Assign(&cli_finished, true))); Error e = cs.Connect(); ASSERT_EQ(LNR_OK, e.Code()); e = cs.Disconnect(); WAIT_TO_FINISH_CALLBACK(); }
// Connect - Disconnect from Client in front thread TEST_F(SSLClientServerConnectionTest, DisconnectFromClientFT) { MockHandler ch; SSLContext context(SSLContext::TLSv1_1); context.SetCertificate(std::string(CLIENT_CERT)); context.SetPrivateKey(std::string(CLIENT_PKEY)); context.SetCAFile(std::string(CA_CERT)); context.SetCiphers(std::string(CIPHER_LIST)); context.SetVerifyMode(SSLContext::VERIFY_PEER); SSLClient cl(ch, context); MockHandler sh; SSLContext server_context(SSLContext::TLSv1_1); server_context.SetCertificate(std::string(SERVER_CERT)); server_context.SetPrivateKey(std::string(SERVER_PKEY)); server_context.SetCAFile(std::string(CA_CERT)); server_context.SetCiphers(std::string(CIPHER_LIST)); server_context.SetVerifyMode(SSLContext::VERIFY_PEER); SSLServer sv(sh, server_context); Error e = sv.Start(TEST_ADDR, TEST_PORT); ASSERT_EQ(LNR_OK, e.Code()); SSLSocket cs = cl.CreateSocket(TEST_ADDR, TEST_PORT); EXPECT_CALL(sh, OnConnectMock(_)).WillOnce(Assign(&srv_finished, true)); EXPECT_CALL(ch, OnConnectMock(cs)).WillOnce(Assign(&cli_finished, true)); e = cs.Connect(); ASSERT_EQ(LNR_OK, e.Code()); WAIT_TO_FINISH_CALLBACK(); EXPECT_CALL(sh, OnDisconnectMock(sh.s_, Error(LNR_EOF))).WillOnce(Assign(&srv_finished, true)); EXPECT_CALL(ch, OnDisconnectMock(cs, Error(LNR_OK))).WillOnce(Assign(&cli_finished, true)); e = cs.Disconnect(); ASSERT_EQ(LNR_OK, e.Code()); WAIT_TO_FINISH_CALLBACK(); }