--- tests/session.c | 126 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 124 insertions(+), 2 deletions(-) diff --git a/tests/session.c b/tests/session.c index 74d32f2..494e92f 100644 --- a/tests/session.c +++ b/tests/session.c @@ -1,6 +1,127 @@ #include <spice-client.h> -static void test_session_uri(void) +static void test_session_uri_bad(void) +{ + SpiceSession *s; + guint i; + const struct { + const gchar *uri; + struct { + const GLogLevelFlags log_level; + const gchar *message; + } messages[2]; + } uris[] = { + { + "scheme://host?port", + { + { + G_LOG_LEVEL_WARNING, + "Expected a URI scheme of 'spice://'*", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + },{ + "spice://[ipv6-host:42", + { + { + G_LOG_LEVEL_WARNING, + "Missing closing ']' in authority for URI*", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + },{ + "spice://host??", + { + { + G_LOG_LEVEL_WARNING, + "Failed to parse key in URI '?'", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + },{ + "spice://host:5900?unknown=value", + { + { + G_LOG_LEVEL_WARNING, + "unknown key in spice URI parsing: 'unknown'", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + },{ + "spice://hostname", + { + { + G_LOG_LEVEL_WARNING, + "Missing port or tls-port in spice URI*", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + },{ + "spice://hostname?port=1234&port=3456", + { + { + G_LOG_LEVEL_WARNING, + "Double set of 'port' in URI*", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + },{ + "spice://hostname?tls-port=1234&port=3456&tls-port=5678", + { + { + G_LOG_LEVEL_WARNING, + "Double set of 'tls-port' in URI*", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + },{ + "spice://hostname:5900?tls-port=1234&port=3456", + { + { + G_LOG_LEVEL_WARNING, + "Double set of 'port' in URI*", + },{ + G_LOG_LEVEL_CRITICAL, + "*assertion 's->port != NULL || s->tls_port != NULL' failed", + }, + } + }, + }; + + s = spice_session_new(); + + for (i = 0; i < G_N_ELEMENTS(uris); i++) { + gchar *uri = NULL; + guint j; + for (j = 0; j < G_N_ELEMENTS(uris[i].messages) && uris[i].messages[j].message != NULL; j++) + g_test_expect_message(G_LOG_DOMAIN, + uris[i].messages[j].log_level, + uris[i].messages[j].message); + g_object_set(s, "uri", uris[i].uri, NULL); + g_object_get(s, "uri", &uri, NULL); + g_test_assert_expected_messages(); + g_assert_cmpstr(uri, ==, NULL); + g_free(uri); + } + + g_object_unref(s); +} + +static void test_session_uri_good(void) { SpiceSession *s; guint i; @@ -109,7 +230,8 @@ int main(int argc, char* argv[]) { g_test_init(&argc, &argv, NULL); - g_test_add_func("/session/uri", test_session_uri); + g_test_add_func("/session/bad-uri", test_session_uri_bad); + g_test_add_func("/session/good-uri", test_session_uri_good); return g_test_run(); } -- 2.10.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel