summaryrefslogtreecommitdiff
path: root/tests/connection-test.c
diff options
context:
space:
mode:
authorDan Winship <danw@gnome.org>2014-11-23 17:20:50 -0500
committerDan Winship <danw@gnome.org>2014-11-23 17:23:53 -0500
commitc8ff05b7308818b914ab7738fdaf3dbf5fa11e16 (patch)
tree161c1ef2cd08683ecb9e265696ef42569b97737f /tests/connection-test.c
parentb24ef29be4ccd9b051d75b15b290448b5490bc53 (diff)
downloadlibsoup-c8ff05b7308818b914ab7738fdaf3dbf5fa11e16.tar.gz
SoupConnection: fix connection in TLS_HANDSHAKING event signal
SoupConnection was generating its own :event signals for TLS_HANDSHAKING/TLS_HANDSHAKED, since we don't use GSocketClient's TLS negotiation, and so just re-emitting the socket client signal won't cover that. However, it ended up emitting it before the SoupSocket had even created the GTlsClientConnection, and so was emitting it with the GTcpConnection, contrary to the documentation. Fix this by making the SoupSocket generate those event signals at the correct time, and having SoupConnection just re-emit them. Also, add code to connection-test to verify that each even is emitted with the expected kind of GIOStream. https://bugzilla.gnome.org/show_bug.cgi?id=739951
Diffstat (limited to 'tests/connection-test.c')
-rw-r--r--tests/connection-test.c39
1 files changed, 37 insertions, 2 deletions
diff --git a/tests/connection-test.c b/tests/connection-test.c
index d953a771..f4846c30 100644
--- a/tests/connection-test.c
+++ b/tests/connection-test.c
@@ -768,11 +768,46 @@ network_event (SoupMessage *msg, GSocketClientEvent event,
{
const char **events = user_data;
- debug_printf (2, " %s\n", event_name_from_abbrev (**events));
+ debug_printf (2, " %s\n", event_names[event]);
soup_test_assert (**events == event_abbrevs[event],
- "Unexpected event: %s (expected %s)\n",
+ "Unexpected event: %s (expected %s)",
event_names[event],
event_name_from_abbrev (**events));
+
+ if (**events == event_abbrevs[event]) {
+ if (event == G_SOCKET_CLIENT_RESOLVING ||
+ event == G_SOCKET_CLIENT_RESOLVED) {
+ soup_test_assert (connection == NULL,
+ "Unexpectedly got connection (%s) with '%s' event",
+ G_OBJECT_TYPE_NAME (connection),
+ event_names[event]);
+ } else if (event < G_SOCKET_CLIENT_TLS_HANDSHAKING) {
+ soup_test_assert (G_IS_SOCKET_CONNECTION (connection),
+ "Unexpectedly got %s with '%s' event",
+ G_OBJECT_TYPE_NAME (connection),
+ event_names[event]);
+ } else if (event == G_SOCKET_CLIENT_TLS_HANDSHAKING ||
+ event == G_SOCKET_CLIENT_TLS_HANDSHAKED) {
+ soup_test_assert (G_IS_TLS_CLIENT_CONNECTION (connection),
+ "Unexpectedly got %s with '%s' event",
+ G_OBJECT_TYPE_NAME (connection),
+ event_names[event]);
+ } else if (event == G_SOCKET_CLIENT_COMPLETE) {
+ /* See if the previous expected event was TLS_HANDSHAKED */
+ if ((*events)[-1] == 'T') {
+ soup_test_assert (G_IS_TLS_CLIENT_CONNECTION (connection),
+ "Unexpectedly got %s with '%s' event",
+ G_OBJECT_TYPE_NAME (connection),
+ event_names[event]);
+ } else {
+ soup_test_assert (G_IS_SOCKET_CONNECTION (connection),
+ "Unexpectedly got %s with '%s' event",
+ G_OBJECT_TYPE_NAME (connection),
+ event_names[event]);
+ }
+ }
+ }
+
*events = *events + 1;
}