All pastes #1851326 Raw Edit

diego

public text v1 · immutable
#1851326 ·published 2010-03-24 10:32 UTC
rendered paste body
From 547bf35d435a6c40710bbf68d53b26f483cd9597 Mon Sep 17 00:00:00 2001From: Diego Escalante Urrelo <descalante@igalia.com>Date: Tue, 23 Mar 2010 23:48:37 -0500Subject: [PATCH] tests: add test for ephy-http-server--- tests/Makefile.am          |    7 ++ tests/testephyhttpserver.c |  176 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 183 insertions(+), 0 deletions(-) create mode 100644 tests/testephyhttpserver.cdiff --git a/tests/Makefile.am b/tests/Makefile.amindex 5e93db7..eaf9f73 100644--- a/tests/Makefile.am+++ b/tests/Makefile.am@@ -1,5 +1,6 @@ noinst_PROGRAMS = \ 	testephyembedpersist \+	testephyhttpserver \ 	testephysearchentry \ 	testephylocationentry \ 	testephyzoomcontrol@@ -48,6 +49,12 @@ libephyhttpserver_la_SOURCES = \ testephyembedpersist_SOURCES = \ 	testephyembedpersist.c +testephyhttpserver_SOURCES = \+	testephyhttpserver.c+testephyhttpserver_LDADD = \+	$(LDADD) \+	libephyhttpserver.la+ testephysearchentry_SOURCES = \ 	testephysearchentry.c diff --git a/tests/testephyhttpserver.c b/tests/testephyhttpserver.cnew file mode 100644index 0000000..e23b0db--- /dev/null+++ b/tests/testephyhttpserver.c@@ -0,0 +1,176 @@+/* vim: set sw=2 ts=2 sts=2 et: */+/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */+/*+ * ephy-http-server.c+ * This file is part of Epiphany+ *+ * Copyright © 2010 - Igalia S.L.+ *+ * Epiphany is free software; you can redistribute it and/or modify+ * it under the terms of the GNU General Public License as published by+ * the Free Software Foundation; either version 2 of the License, or+ * (at your option) any later version.+ *+ * Epiphany is distributed in the hope that it will be useful,+ * but WITHOUT ANY WARRANTY; without even the implied warranty of+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+ * GNU General Public License for more details.+ *+ * You should have received a copy of the GNU General Public License+ * along with Epiphany; if not, write to the Free Software+ * Foundation, Inc., 51 Franklin St, Fifth Floor,+ * Boston, MA  02110-1301  USA+ */++#include "config.h"+#include "ephy-http-server.h"+#include "ephy-debug.h"++typedef struct {+  GMainLoop *loop;+  SoupSession *session;+  EphyHttpServer *server;+} EphyHttpServerFixture;++static void+test_ephy_http_server_fixture_setup (EphyHttpServerFixture *fixture,+                                     gconstpointer data)+{+  GMainContext *context;++  fixture->loop = g_main_loop_new (NULL, FALSE);+  context = g_main_loop_get_context (fixture->loop);+  fixture->server = ephy_http_server_new ();+  fixture->session = soup_session_async_new ();+}++static void+test_ephy_http_server_fixture_teardown (EphyHttpServerFixture *fixture,+                                        gconstpointer data)+{+  g_object_unref (fixture->server);+  g_object_unref (fixture->session);+  g_main_loop_unref (fixture->loop);+}++static void+test_ephy_http_server_new (EphyHttpServerFixture *fixture,+                           gconstpointer data)+{+  g_assert (EPHY_IS_HTTP_SERVER (fixture->server));+}++static void+test_ephy_http_server_get_uri_for_path (EphyHttpServerFixture *fixture,+                                        gconstpointer data)+{+  SoupURI *uri;+  char *uri_string;++  uri_string = ephy_http_server_get_uri_for_path (fixture->server, "/test/");+  uri = soup_uri_new (uri_string);++  /* The default is to be at 127.0.0.1, so... */+  g_assert_cmpstr (uri->host, ==, "127.0.0.1");+  /* Ports should match. */+  g_assert_cmpuint (uri->port, ==,+                    soup_server_get_port (SOUP_SERVER (fixture->server)));+  g_assert_cmpstr (uri->path, ==, "/test/");++  soup_uri_free (uri);+  g_free (uri_string);+}++static void+test_ephy_http_server_add_response (EphyHttpServerFixture *fixture,+                                    gconstpointer data)+{+  g_assert (ephy_http_server_remove_response (fixture->server, "/") == FALSE);++  ephy_http_server_add_response (fixture->server,+                                 "/", "HELLO!",+                                 SOUP_STATUS_OK);++  g_assert (ephy_http_server_remove_response (fixture->server, "/") == TRUE);++  g_assert (ephy_http_server_remove_response (fixture->server, "/") == FALSE);+}++static gboolean+kill_loop (EphyHttpServerFixture *fixture)+{+  SoupMessage *msg;+  guint status;+  char *uri;++  uri = ephy_http_server_get_uri_for_path (fixture->server, "/quit");++  msg = soup_message_new ("GET", uri);+  status = soup_session_send_message (fixture->session, msg);++  g_free (uri);++  if (status == SOUP_STATUS_OK) {+    ephy_http_server_remove_response (fixture->server, "/quit");+    return TRUE;+  } else if (status == SOUP_STATUS_NOT_FOUND) {+    g_main_loop_quit (fixture->loop);+    return FALSE;+  } else {+    g_assert_not_reached ();+  }+}++static void+test_ephy_http_server_run (EphyHttpServerFixture *fixture,+                           gconstpointer data)+{+  ephy_http_server_add_response (fixture->server,+                                 "/quit", "HELLO!",+                                 SOUP_STATUS_OK);++  ephy_http_server_run (fixture->server);++  g_idle_add ((GSourceFunc) kill_loop, fixture);+  g_main_loop_run (fixture->loop);+}++int+main (int argc, char *argv[])+{+  int ret;++  g_test_init (&argc, &argv, NULL);+  g_type_init ();+  g_thread_init (NULL);++  ephy_debug_init ();++  g_test_add ("/tests/ephy-http-server/new",+              EphyHttpServerFixture, NULL,+              test_ephy_http_server_fixture_setup,+              test_ephy_http_server_new,+              test_ephy_http_server_fixture_teardown);++  g_test_add ("/tests/ephy-http-server/get_uri_for_path",+              EphyHttpServerFixture, NULL,+              test_ephy_http_server_fixture_setup,+              test_ephy_http_server_get_uri_for_path,+              test_ephy_http_server_fixture_teardown);++  g_test_add ("/tests/ephy-http-server/add_response",+              EphyHttpServerFixture, NULL,+              test_ephy_http_server_fixture_setup,+              test_ephy_http_server_add_response,+              test_ephy_http_server_fixture_teardown);++  g_test_add ("/tests/ephy-http-server/run",+              EphyHttpServerFixture, NULL,+              test_ephy_http_server_fixture_setup,+              test_ephy_http_server_run,+              test_ephy_http_server_fixture_teardown);++  ret = g_test_run ();++  return ret;+}-- 1.7.0.2