| 1691 | { |
| 1692 | AsyncEventLoop loop; |
| 1693 | SC_TEST_EXPECT(loop.create()); |
| 1694 | |
| 1695 | ClientConnection clientStorage; |
| 1696 | HttpAsyncClient client; |
| 1697 | SC_TEST_EXPECT(client.init(clientStorage)); |
| 1698 | |
| 1699 | uint32_t connectorCalls = 0; |
| 1700 | uint32_t errorCallbacks = 0; |
| 1701 | uint32_t transportCloses = 0; |
| 1702 | bool transportOwned = false; |
| 1703 | client.setExternalConnector({[&connectorCalls, &transportOwned](HttpAsyncClientExternalConnection&) -> Result |
| 1704 | { |
| 1705 | connectorCalls++; |
| 1706 | transportOwned = true; |
| 1707 | return Result::Error("external connector rejected request"); |
| 1708 | }}); |
| 1709 | client.setTransportClose({[&transportCloses, &transportOwned] |
| 1710 | { |
| 1711 | if (transportOwned) |
| 1712 | { |
| 1713 | transportCloses++; |
| 1714 | transportOwned = false; |
| 1715 | } |
| 1716 | }}); |
| 1717 | client.onError = [&errorCallbacks](Result) { errorCallbacks++; }; |
| 1718 | |
| 1719 | const Result first = client.get(loop, "http://example.invalid/first"); |
| 1720 | SC_TEST_EXPECT(resultMessageEquals(first, "external connector rejected request")); |
| 1721 | SC_TEST_EXPECT(not transportOwned); |
| 1722 | SC_TEST_EXPECT(transportCloses == 1); |
| 1723 | |
| 1724 | const Result second = client.get(loop, "http://example.invalid/second"); |
| 1725 | SC_TEST_EXPECT(resultMessageEquals(second, "external connector rejected request")); |
| 1726 | SC_TEST_EXPECT(connectorCalls == 2); |
| 1727 | SC_TEST_EXPECT(not transportOwned); |
| 1728 | SC_TEST_EXPECT(transportCloses == 2); |
| 1729 | SC_TEST_EXPECT(errorCallbacks == 0); |
| 1730 | |
| 1731 | SC_TEST_EXPECT(client.close()); |
| 1732 | SC_TEST_EXPECT(loop.close()); |
| 1733 | } |
| 1734 | |
| 1735 | void SC::HttpAsyncClientTest::httpsTransportSetupHookDispatch() |
| 1736 | { |
| 1737 | AsyncEventLoop loop; |
| 1738 | SC_TEST_EXPECT(loop.create()); |
| 1739 | |
| 1740 | ServerConnection connections[1]; |
| 1741 | HttpAsyncServer httpServer; |
| 1742 | const uint16_t port = report.mapPort(26125); |
| 1743 | SC_TEST_EXPECT(httpServer.init(Span<ServerConnection>(connections))); |
| 1744 | SC_TEST_EXPECT(httpServer.start(loop, "127.0.0.1", port)); |
| 1745 | |
| 1746 | ClientConnection clientStorage; |
| 1747 | HttpAsyncClient client; |
| 1748 | ResponseCollector collector; |
| 1749 | TimeoutGuard timeout; |
| 1750 |
nothing calls this directly
no test coverage detected