|
Packit |
4b6dd7 |
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
|
|
Packit |
4b6dd7 |
/*
|
|
Packit |
4b6dd7 |
* GData Client
|
|
Packit |
4b6dd7 |
* Copyright (C) Philip Withnall 2008–2010, 2015 <philip@tecnocode.co.uk>
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* GData Client is free software; you can redistribute it and/or
|
|
Packit |
4b6dd7 |
* modify it under the terms of the GNU Lesser General Public
|
|
Packit |
4b6dd7 |
* License as published by the Free Software Foundation; either
|
|
Packit |
4b6dd7 |
* version 2.1 of the License, or (at your option) any later version.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* GData Client is distributed in the hope that it will be useful,
|
|
Packit |
4b6dd7 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
4b6dd7 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
4b6dd7 |
* Lesser General Public License for more details.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* You should have received a copy of the GNU Lesser General Public
|
|
Packit |
4b6dd7 |
* License along with GData Client. If not, see <http://www.gnu.org/licenses/>.
|
|
Packit |
4b6dd7 |
*/
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#include <glib.h>
|
|
Packit |
4b6dd7 |
#include <string.h>
|
|
Packit |
4b6dd7 |
#include <unistd.h>
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#include "gdata.h"
|
|
Packit |
4b6dd7 |
#include "common.h"
|
|
Packit |
4b6dd7 |
#include "gdata-dummy-authorizer.h"
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static UhmServer *mock_server = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#undef CLIENT_ID /* from common.h */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#define DEVELOPER_KEY "AI39si7Me3Q7zYs6hmkFvpRBD2nrkVjYYsUO5lh_3HdOkGRc9g6Z4nzxZatk_aAo2EsA21k7vrda0OO6oFg2rnhMedZXPyXoEw"
|
|
Packit |
4b6dd7 |
#define CLIENT_ID "352818697630-nqu2cmt5quqd6lr17ouoqmb684u84l1f.apps.googleusercontent.com"
|
|
Packit |
4b6dd7 |
#define CLIENT_SECRET "-fA4pHQJxR3zJ-FyAMPQsikg"
|
|
Packit |
4b6dd7 |
#define REDIRECT_URI "urn:ietf:wg:oauth:2.0:oob"
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Effectively gdata_test_mock_server_start_trace() but calling uhm_server_run() instead of uhm_server_start_trace(). */
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_run (UhmServer *server)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
const gchar *ip_address;
|
|
Packit |
4b6dd7 |
UhmResolver *resolver;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_run (server);
|
|
Packit |
4b6dd7 |
gdata_test_set_https_port (server);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (uhm_server_get_enable_online (server) == FALSE) {
|
|
Packit |
4b6dd7 |
/* Set up the expected domain names here. This should technically be split up between
|
|
Packit |
4b6dd7 |
* the different unit test suites, but that's too much effort. */
|
|
Packit |
4b6dd7 |
ip_address = uhm_server_get_address (server);
|
|
Packit |
4b6dd7 |
resolver = uhm_server_get_resolver (server);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_resolver_add_A (resolver, "www.google.com", ip_address);
|
|
Packit |
4b6dd7 |
uhm_resolver_add_A (resolver, "gdata.youtube.com", ip_address);
|
|
Packit |
4b6dd7 |
uhm_resolver_add_A (resolver, "uploads.gdata.youtube.com", ip_address);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_authentication (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataOAuth2Authorizer *authorizer = NULL; /* owned */
|
|
Packit |
4b6dd7 |
gchar *authentication_uri, *authorisation_code;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "authentication");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
authorizer = gdata_oauth2_authorizer_new (CLIENT_ID, CLIENT_SECRET,
|
|
Packit |
4b6dd7 |
REDIRECT_URI,
|
|
Packit |
4b6dd7 |
GDATA_TYPE_YOUTUBE_SERVICE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get an authentication URI. */
|
|
Packit |
4b6dd7 |
authentication_uri = gdata_oauth2_authorizer_build_authentication_uri (authorizer, NULL, FALSE);
|
|
Packit |
4b6dd7 |
g_assert (authentication_uri != NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation code off the user. */
|
|
Packit |
4b6dd7 |
if (uhm_server_get_enable_online (mock_server)) {
|
|
Packit |
4b6dd7 |
authorisation_code = gdata_test_query_user_for_verifier (authentication_uri);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
/* Hard coded, extracted from the trace file. */
|
|
Packit |
4b6dd7 |
authorisation_code = g_strdup ("4/9qV_LanNEOUOL4sftMwUp4cfa_yeF"
|
|
Packit |
4b6dd7 |
"assB6-ys5EkA5o.4rgOzrZMXgcboiIB"
|
|
Packit |
4b6dd7 |
"eO6P2m-GWLMXmgI");
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (authentication_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (authorisation_code == NULL) {
|
|
Packit |
4b6dd7 |
/* Skip tests. */
|
|
Packit |
4b6dd7 |
goto skip_test;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Authorise the token */
|
|
Packit |
4b6dd7 |
g_assert (gdata_oauth2_authorizer_request_authorization (authorizer, authorisation_code, NULL, NULL) == TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check all is as it should be */
|
|
Packit |
4b6dd7 |
g_assert (gdata_authorizer_is_authorized_for_domain (GDATA_AUTHORIZER (authorizer),
|
|
Packit |
4b6dd7 |
gdata_youtube_service_get_primary_authorization_domain ()) == TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
skip_test:
|
|
Packit |
4b6dd7 |
g_free (authorisation_code);
|
|
Packit |
4b6dd7 |
g_object_unref (authorizer);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_service_properties (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataService *service;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Create a service */
|
|
Packit |
4b6dd7 |
service = GDATA_SERVICE (gdata_youtube_service_new (DEVELOPER_KEY, NULL));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (service != NULL);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_SERVICE (service));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_service_get_developer_key (GDATA_YOUTUBE_SERVICE (service)), ==, DEVELOPER_KEY);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (service);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_standard_feeds (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
guint i;
|
|
Packit |
4b6dd7 |
gulong filter_id;
|
|
Packit |
4b6dd7 |
GDataYouTubeStandardFeedType feeds[] = {
|
|
Packit |
4b6dd7 |
/* This must be kept up-to-date with GDataYouTubeStandardFeedType. */
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_TOP_RATED_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_TOP_FAVORITES_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_MOST_VIEWED_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_MOST_POPULAR_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_MOST_RECENT_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_MOST_DISCUSSED_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_MOST_LINKED_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_MOST_RESPONDED_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_RECENTLY_FEATURED_FEED,
|
|
Packit |
4b6dd7 |
GDATA_YOUTUBE_WATCH_ON_MOBILE_FEED,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
const gchar *ignore_query_param_values[] = {
|
|
Packit |
4b6dd7 |
"publishedAfter",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
filter_id = uhm_server_filter_ignore_parameter_values (mock_server,
|
|
Packit |
4b6dd7 |
ignore_query_param_values);
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "query-standard-feeds");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
for (i = 0; i < G_N_ELEMENTS (feeds); i++) {
|
|
Packit |
4b6dd7 |
feed = gdata_youtube_service_query_standard_feed (GDATA_YOUTUBE_SERVICE (service), feeds[i], NULL, NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_FEED (feed));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_list_length (gdata_feed_get_entries (feed)), >, 0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (feed);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
uhm_server_compare_messages_remove_filter (mock_server, filter_id);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_standard_feed (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
gulong filter_id;
|
|
Packit |
4b6dd7 |
const gchar *ignore_query_param_values[] = {
|
|
Packit |
4b6dd7 |
"publishedAfter",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
filter_id = uhm_server_filter_ignore_parameter_values (mock_server,
|
|
Packit |
4b6dd7 |
ignore_query_param_values);
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "query-standard-feed");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
feed = gdata_youtube_service_query_standard_feed (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, NULL, NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_FEED (feed));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_list_length (gdata_feed_get_entries (feed)), >, 0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (feed);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
uhm_server_compare_messages_remove_filter (mock_server, filter_id);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_standard_feed_with_query (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeQuery *query;
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
gulong filter_id;
|
|
Packit |
4b6dd7 |
const gchar *ignore_query_param_values[] = {
|
|
Packit |
4b6dd7 |
"publishedAfter",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
filter_id = uhm_server_filter_ignore_parameter_values (mock_server,
|
|
Packit |
4b6dd7 |
ignore_query_param_values);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "query-standard-feed-with-query");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
query = gdata_youtube_query_new (NULL);
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_language (query, "fr");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
feed = gdata_youtube_service_query_standard_feed (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, GDATA_QUERY (query), NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_FEED (feed));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_list_length (gdata_feed_get_entries (feed)), >, 0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (query);
|
|
Packit |
4b6dd7 |
g_object_unref (feed);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
uhm_server_compare_messages_remove_filter (mock_server, filter_id);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* HTTP message responses and the expected associated GData error domain/code. */
|
|
Packit |
4b6dd7 |
static const GDataTestRequestErrorData query_standard_feed_errors[] = {
|
|
Packit |
4b6dd7 |
/* Generic network errors. */
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_BAD_REQUEST, "Bad Request", "Invalid parameter ‘foobar’.",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_NOT_FOUND, "Not Found", "Login page wasn't found for no good reason at all.",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_NOT_FOUND },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_PRECONDITION_FAILED, "Precondition Failed", "Not allowed to log in at this time, possibly.",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_CONFLICT },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_INTERNAL_SERVER_ERROR, "Internal Server Error", "Whoops.",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
#if 0
|
|
Packit |
4b6dd7 |
FIXME
|
|
Packit |
4b6dd7 |
/* Specific query errors. */
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "Too Many Calls",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:quota</domain>too_many_recent_calls </error></errors>",
|
|
Packit |
4b6dd7 |
gdata_youtube_service_error_quark, GDATA_YOUTUBE_SERVICE_ERROR_API_QUOTA_EXCEEDED },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "Too Many Entries",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:quota</domain>too_many_entries </error></errors>",
|
|
Packit |
4b6dd7 |
gdata_youtube_service_error_quark, GDATA_YOUTUBE_SERVICE_ERROR_ENTRY_QUOTA_EXCEEDED },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_SERVICE_UNAVAILABLE, "Maintenance",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:service</domain>disabled_in_maintenance_mode </error></errors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_UNAVAILABLE },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "YouTube Signup Required",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:service</domain>youtube_signup_required </error></errors>",
|
|
Packit |
4b6dd7 |
gdata_youtube_service_error_quark, GDATA_YOUTUBE_SERVICE_ERROR_CHANNEL_REQUIRED },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "Forbidden",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:authentication</domain>TokenExpired "
|
|
Packit |
4b6dd7 |
"<location type='header'>Authorization: GoogleLogin</location></error></errors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_AUTHENTICATION_REQUIRED },
|
|
Packit |
4b6dd7 |
/* Malformed YouTube errors to test parser error handling. */
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_INTERNAL_SERVER_ERROR, "Malformed XML",
|
|
Packit |
4b6dd7 |
"<errors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "Empty Response", "",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_AUTHENTICATION_REQUIRED },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_INTERNAL_SERVER_ERROR, "Unknown Element",
|
|
Packit |
4b6dd7 |
"<errors> <error> <foobar /> </error> </errors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_INTERNAL_SERVER_ERROR, "Wrong Top-Level Element",
|
|
Packit |
4b6dd7 |
"<nonerrors></nonerrors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "Unknown Error Code (Service)",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:service</domain>UnknownCode </error></errors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "Unknown Error Code (Quota)",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:quota</domain>UnknownCode </error></errors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
{ SOUP_STATUS_FORBIDDEN, "Unknown Error Domain",
|
|
Packit |
4b6dd7 |
"<errors><error><domain>yt:foobaz</domain>TokenExpired </error></errors>",
|
|
Packit |
4b6dd7 |
gdata_service_error_quark, GDATA_SERVICE_ERROR_PROTOCOL_ERROR },
|
|
Packit |
4b6dd7 |
#endif
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_standard_feed_error (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
gulong handler_id, filter_id;
|
|
Packit |
4b6dd7 |
guint i;
|
|
Packit |
4b6dd7 |
const gchar *ignore_query_param_values[] = {
|
|
Packit |
4b6dd7 |
"publishedAfter",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (uhm_server_get_enable_logging (mock_server) == TRUE) {
|
|
Packit |
4b6dd7 |
g_test_message ("Ignoring test due to logging being enabled.");
|
|
Packit |
4b6dd7 |
return;
|
|
Packit |
4b6dd7 |
} else if (uhm_server_get_enable_online (mock_server) == TRUE) {
|
|
Packit |
4b6dd7 |
g_test_message ("Ignoring test due to running online and test not being reproducible.");
|
|
Packit |
4b6dd7 |
return;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
filter_id = uhm_server_filter_ignore_parameter_values (mock_server,
|
|
Packit |
4b6dd7 |
ignore_query_param_values);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
for (i = 0; i < G_N_ELEMENTS (query_standard_feed_errors); i++) {
|
|
Packit |
4b6dd7 |
const GDataTestRequestErrorData *data = &query_standard_feed_errors[i];
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
handler_id = g_signal_connect (mock_server, "handle-message", (GCallback) gdata_test_mock_server_handle_message_error, (gpointer) data);
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_run (mock_server);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Query the feed. */
|
|
Packit |
4b6dd7 |
feed = gdata_youtube_service_query_standard_feed (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, NULL, NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_error (error, data->error_domain_func (), data->error_code);
|
|
Packit |
4b6dd7 |
g_assert (feed == NULL);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_stop (mock_server);
|
|
Packit |
4b6dd7 |
g_signal_handler_disconnect (mock_server, handler_id);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_compare_messages_remove_filter (mock_server, filter_id);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_standard_feed_timeout (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
gulong handler_id, filter_id;
|
|
Packit |
4b6dd7 |
const gchar *ignore_query_param_values[] = {
|
|
Packit |
4b6dd7 |
"publishedAfter",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (uhm_server_get_enable_logging (mock_server) == TRUE) {
|
|
Packit |
4b6dd7 |
g_test_message ("Ignoring test due to logging being enabled.");
|
|
Packit |
4b6dd7 |
return;
|
|
Packit |
4b6dd7 |
} else if (uhm_server_get_enable_online (mock_server) == TRUE) {
|
|
Packit |
4b6dd7 |
g_test_message ("Ignoring test due to running online and test not being reproducible.");
|
|
Packit |
4b6dd7 |
return;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
filter_id = uhm_server_filter_ignore_parameter_values (mock_server,
|
|
Packit |
4b6dd7 |
ignore_query_param_values);
|
|
Packit |
4b6dd7 |
handler_id = g_signal_connect (mock_server, "handle-message", (GCallback) gdata_test_mock_server_handle_message_timeout, NULL);
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_run (mock_server);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set the service's timeout as low as possible (1 second). */
|
|
Packit |
4b6dd7 |
gdata_service_set_timeout (GDATA_SERVICE (service), 1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Query the feed. */
|
|
Packit |
4b6dd7 |
feed = gdata_youtube_service_query_standard_feed (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, NULL, NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_error (error, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_NETWORK_ERROR);
|
|
Packit |
4b6dd7 |
g_assert (feed == NULL);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_stop (mock_server);
|
|
Packit |
4b6dd7 |
g_signal_handler_disconnect (mock_server, handler_id);
|
|
Packit |
4b6dd7 |
uhm_server_compare_messages_remove_filter (mock_server, filter_id);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
typedef struct {
|
|
Packit |
4b6dd7 |
GDataAsyncTestData async_data;
|
|
Packit |
4b6dd7 |
gulong filter_id;
|
|
Packit |
4b6dd7 |
} StandardFeedData;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
set_up_standard_feed_async (StandardFeedData *standard_feed_data,
|
|
Packit |
4b6dd7 |
gconstpointer test_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
const gchar *ignore_query_param_values[] = {
|
|
Packit |
4b6dd7 |
"publishedAfter",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_set_up_async_test_data (&standard_feed_data->async_data,
|
|
Packit |
4b6dd7 |
test_data);
|
|
Packit |
4b6dd7 |
standard_feed_data->filter_id =
|
|
Packit |
4b6dd7 |
uhm_server_filter_ignore_parameter_values (mock_server,
|
|
Packit |
4b6dd7 |
ignore_query_param_values);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
tear_down_standard_feed_async (StandardFeedData *standard_feed_data,
|
|
Packit |
4b6dd7 |
gconstpointer test_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
uhm_server_compare_messages_remove_filter (mock_server,
|
|
Packit |
4b6dd7 |
standard_feed_data->filter_id);
|
|
Packit |
4b6dd7 |
gdata_tear_down_async_test_data (&standard_feed_data->async_data,
|
|
Packit |
4b6dd7 |
test_data);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (query_standard_feed, void,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
gdata_youtube_service_query_standard_feed_async (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, NULL, cancellable,
|
|
Packit |
4b6dd7 |
NULL, NULL, NULL, async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
feed = gdata_service_query_finish (GDATA_SERVICE (obj), async_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error == NULL) {
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_FEED (feed));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_list_length (gdata_feed_get_entries (feed)), >, 0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (feed);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert (feed == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_standard_feed_async_progress_closure (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataAsyncProgressClosure *data = g_slice_new0 (GDataAsyncProgressClosure);
|
|
Packit |
4b6dd7 |
gulong filter_id;
|
|
Packit |
4b6dd7 |
const gchar *ignore_query_param_values[] = {
|
|
Packit |
4b6dd7 |
"publishedAfter",
|
|
Packit |
4b6dd7 |
NULL,
|
|
Packit |
4b6dd7 |
};
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (service != NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
filter_id = uhm_server_filter_ignore_parameter_values (mock_server,
|
|
Packit |
4b6dd7 |
ignore_query_param_values);
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "query-standard-feed-async-progress-closure");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
data->main_loop = g_main_loop_new (NULL, TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_service_query_standard_feed_async (GDATA_YOUTUBE_SERVICE (service), GDATA_YOUTUBE_TOP_RATED_FEED, NULL, NULL,
|
|
Packit |
4b6dd7 |
(GDataQueryProgressCallback) gdata_test_async_progress_callback,
|
|
Packit |
4b6dd7 |
data, (GDestroyNotify) gdata_test_async_progress_closure_free,
|
|
Packit |
4b6dd7 |
(GAsyncReadyCallback) gdata_test_async_progress_finish_callback, data);
|
|
Packit |
4b6dd7 |
g_main_loop_run (data->main_loop);
|
|
Packit |
4b6dd7 |
g_main_loop_unref (data->main_loop);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check that both callbacks were called exactly once */
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (data->progress_destroy_notify_count, ==, 1);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (data->async_ready_notify_count, ==, 1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_slice_free (GDataAsyncProgressClosure, data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
uhm_server_compare_messages_remove_filter (mock_server, filter_id);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static GDataYouTubeVideo *
|
|
Packit |
4b6dd7 |
get_video_for_related (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_json (GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'q1UPMEmCqZo'"
|
|
Packit |
4b6dd7 |
"}", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return video;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_related (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "query-related");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = get_video_for_related ();
|
|
Packit |
4b6dd7 |
feed = gdata_youtube_service_query_related (GDATA_YOUTUBE_SERVICE (service), video, NULL, NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_FEED (feed));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* TODO: check entries and feed properties */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
g_object_unref (feed);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (query_related, void,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = get_video_for_related ();
|
|
Packit |
4b6dd7 |
gdata_youtube_service_query_related_async (GDATA_YOUTUBE_SERVICE (service), video, NULL, cancellable, NULL,
|
|
Packit |
4b6dd7 |
NULL, NULL, async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataFeed *feed;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
feed = gdata_service_query_finish (GDATA_SERVICE (obj), async_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error == NULL) {
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_FEED (feed));
|
|
Packit |
4b6dd7 |
/* TODO: Tests? */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (feed);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert (feed == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_related_async_progress_closure (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataAsyncProgressClosure *data = g_slice_new0 (GDataAsyncProgressClosure);
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (service != NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "query-related-async-progress-closure");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
data->main_loop = g_main_loop_new (NULL, TRUE);
|
|
Packit |
4b6dd7 |
video = get_video_for_related ();
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_service_query_related_async (GDATA_YOUTUBE_SERVICE (service), video, NULL, NULL,
|
|
Packit |
4b6dd7 |
(GDataQueryProgressCallback) gdata_test_async_progress_callback,
|
|
Packit |
4b6dd7 |
data, (GDestroyNotify) gdata_test_async_progress_closure_free,
|
|
Packit |
4b6dd7 |
(GAsyncReadyCallback) gdata_test_async_progress_finish_callback, data);
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_main_loop_run (data->main_loop);
|
|
Packit |
4b6dd7 |
g_main_loop_unref (data->main_loop);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check that both callbacks were called exactly once */
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (data->progress_destroy_notify_count, ==, 1);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (data->async_ready_notify_count, ==, 1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_slice_free (GDataAsyncProgressClosure, data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
typedef struct {
|
|
Packit |
4b6dd7 |
GDataYouTubeService *service;
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *updated_video;
|
|
Packit |
4b6dd7 |
GFile *video_file;
|
|
Packit |
4b6dd7 |
gchar *slug;
|
|
Packit |
4b6dd7 |
gchar *content_type;
|
|
Packit |
4b6dd7 |
} UploadData;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
set_up_upload (UploadData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataMediaCategory *category;
|
|
Packit |
4b6dd7 |
GFileInfo *file_info;
|
|
Packit |
4b6dd7 |
const gchar * const tags[] = { "toast", "wedding", NULL };
|
|
Packit |
4b6dd7 |
gchar *path = NULL;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
data->service = g_object_ref ((gpointer) service);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Create the metadata for the video being uploaded */
|
|
Packit |
4b6dd7 |
data->video = gdata_youtube_video_new (NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_entry_set_title (GDATA_ENTRY (data->video), "Bad Wedding Toast");
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_description (data->video, "I gave a bad toast at my friend's wedding.");
|
|
Packit |
4b6dd7 |
category = gdata_media_category_new ("22", NULL, NULL);
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_category (data->video, category);
|
|
Packit |
4b6dd7 |
g_object_unref (category);
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_keywords (data->video, tags);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get a file to upload */
|
|
Packit |
4b6dd7 |
/* TODO: fix the path */
|
|
Packit |
4b6dd7 |
path = g_test_build_filename (G_TEST_DIST, "sample.ogg", NULL);
|
|
Packit |
4b6dd7 |
data->video_file = g_file_new_for_path (path);
|
|
Packit |
4b6dd7 |
g_free (path);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the file's info */
|
|
Packit |
4b6dd7 |
file_info = g_file_query_info (data->video_file, G_FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME "," G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
|
|
Packit |
4b6dd7 |
G_FILE_QUERY_INFO_NONE, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (G_IS_FILE_INFO (file_info));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
data->slug = g_strdup (g_file_info_get_display_name (file_info));
|
|
Packit |
4b6dd7 |
data->content_type = g_strdup (g_file_info_get_content_type (file_info));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (file_info);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
tear_down_upload (UploadData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "teardown-upload");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Delete the uploaded video, if possible */
|
|
Packit |
4b6dd7 |
if (data->updated_video != NULL) {
|
|
Packit |
4b6dd7 |
gdata_service_delete_entry (GDATA_SERVICE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
GDATA_ENTRY (data->updated_video), NULL, NULL);
|
|
Packit |
4b6dd7 |
g_object_unref (data->updated_video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (data->video);
|
|
Packit |
4b6dd7 |
g_object_unref (data->video_file);
|
|
Packit |
4b6dd7 |
g_free (data->slug);
|
|
Packit |
4b6dd7 |
g_free (data->content_type);
|
|
Packit |
4b6dd7 |
g_object_unref (data->service);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_upload_simple (UploadData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataUploadStream *upload_stream;
|
|
Packit |
4b6dd7 |
GFileInputStream *file_stream;
|
|
Packit |
4b6dd7 |
const gchar * const *tags, * const *tags2;
|
|
Packit |
4b6dd7 |
gssize transfer_size;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "upload-simple");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Prepare the upload stream */
|
|
Packit |
4b6dd7 |
upload_stream = gdata_youtube_service_upload_video (GDATA_YOUTUBE_SERVICE (service), data->video, data->slug, data->content_type, NULL,
|
|
Packit |
4b6dd7 |
&error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_UPLOAD_STREAM (upload_stream));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get an input stream for the file */
|
|
Packit |
4b6dd7 |
file_stream = g_file_read (data->video_file, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (G_IS_FILE_INPUT_STREAM (file_stream));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Upload the video */
|
|
Packit |
4b6dd7 |
transfer_size = g_output_stream_splice (G_OUTPUT_STREAM (upload_stream), G_INPUT_STREAM (file_stream),
|
|
Packit |
4b6dd7 |
G_OUTPUT_STREAM_SPLICE_CLOSE_SOURCE | G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (transfer_size, >, 0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Finish off the upload */
|
|
Packit |
4b6dd7 |
data->updated_video = gdata_youtube_service_finish_video_upload (GDATA_YOUTUBE_SERVICE (service), upload_stream, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (data->updated_video));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (file_stream);
|
|
Packit |
4b6dd7 |
g_object_unref (upload_stream);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the video's properties */
|
|
Packit |
4b6dd7 |
g_assert (gdata_entry_is_inserted (GDATA_ENTRY (data->updated_video)));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_entry_get_title (GDATA_ENTRY (data->updated_video)), ==, gdata_entry_get_title (GDATA_ENTRY (data->video)));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_description (data->updated_video), ==, gdata_youtube_video_get_description (data->video));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_media_category_get_category (gdata_youtube_video_get_category (data->updated_video)), ==,
|
|
Packit |
4b6dd7 |
gdata_media_category_get_category (gdata_youtube_video_get_category (data->video)));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
tags = gdata_youtube_video_get_keywords (data->video);
|
|
Packit |
4b6dd7 |
tags2 = gdata_youtube_video_get_keywords (data->updated_video);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_strv_length ((gchar**) tags2), ==, g_strv_length ((gchar**) tags));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (tags2[0], ==, tags[0]);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (tags2[1], ==, tags[1]);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (tags2[2], ==, tags[2]);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_CLOSURE_FUNCTIONS (upload, UploadData);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (upload, UploadData,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataUploadStream *upload_stream;
|
|
Packit |
4b6dd7 |
GFileInputStream *file_stream;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Prepare the upload stream */
|
|
Packit |
4b6dd7 |
upload_stream = gdata_youtube_service_upload_video (GDATA_YOUTUBE_SERVICE (service), data->video, data->slug,
|
|
Packit |
4b6dd7 |
data->content_type, cancellable, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_UPLOAD_STREAM (upload_stream));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get an input stream for the file */
|
|
Packit |
4b6dd7 |
file_stream = g_file_read (data->video_file, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (G_IS_FILE_INPUT_STREAM (file_stream));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Upload the video asynchronously */
|
|
Packit |
4b6dd7 |
g_output_stream_splice_async (G_OUTPUT_STREAM (upload_stream), G_INPUT_STREAM (file_stream),
|
|
Packit |
4b6dd7 |
G_OUTPUT_STREAM_SPLICE_CLOSE_TARGET, G_PRIORITY_DEFAULT, NULL,
|
|
Packit |
4b6dd7 |
async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (file_stream);
|
|
Packit |
4b6dd7 |
g_object_unref (upload_stream);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GOutputStream *stream = G_OUTPUT_STREAM (obj);
|
|
Packit |
4b6dd7 |
const gchar * const *tags;
|
|
Packit |
4b6dd7 |
const gchar * const *tags2;
|
|
Packit |
4b6dd7 |
gssize transfer_size;
|
|
Packit |
4b6dd7 |
GError *upload_error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Finish off the transfer */
|
|
Packit |
4b6dd7 |
transfer_size = g_output_stream_splice_finish (stream, async_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error == NULL) {
|
|
Packit |
4b6dd7 |
g_assert_cmpint (transfer_size, >, 0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Finish off the upload */
|
|
Packit |
4b6dd7 |
data->updated_video = gdata_youtube_service_finish_video_upload (data->service, GDATA_UPLOAD_STREAM (stream), &upload_error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (upload_error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (data->updated_video));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the video's properties */
|
|
Packit |
4b6dd7 |
g_assert (gdata_entry_is_inserted (GDATA_ENTRY (data->updated_video)));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_entry_get_title (GDATA_ENTRY (data->updated_video)), ==, gdata_entry_get_title (GDATA_ENTRY (data->video)));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_description (data->updated_video), ==, gdata_youtube_video_get_description (data->video));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_media_category_get_category (gdata_youtube_video_get_category (data->updated_video)), ==,
|
|
Packit |
4b6dd7 |
gdata_media_category_get_category (gdata_youtube_video_get_category (data->video)));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
tags = gdata_youtube_video_get_keywords (data->video);
|
|
Packit |
4b6dd7 |
tags2 = gdata_youtube_video_get_keywords (data->updated_video);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_strv_length ((gchar**) tags2), ==, g_strv_length ((gchar**) tags));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (tags2[0], ==, tags[0]);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (tags2[1], ==, tags[1]);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (tags2[2], ==, tags[2]);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert_cmpint (transfer_size, ==, -1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Finish off the upload */
|
|
Packit |
4b6dd7 |
data->updated_video = gdata_youtube_service_finish_video_upload (data->service, GDATA_UPLOAD_STREAM (stream), &upload_error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (upload_error);
|
|
Packit |
4b6dd7 |
g_assert (data->updated_video == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_clear_error (&upload_error);
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_parsing_app_control (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
GDataYouTubeState *state;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_json (GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'etag': '\"tbWC5XrSXxe1WOAx6MK9z4hHSU8/X_byq2BdOVgHzCA-ScpZbTWmgfQ\"',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'snippet': {"
|
|
Packit |
4b6dd7 |
"'publishedAt': '2006-05-16T14:06:37.000Z',"
|
|
Packit |
4b6dd7 |
"'channelId': 'UCCS6UQvicRHyn1whEUDEMUQ',"
|
|
Packit |
4b6dd7 |
"'title': 'Judas Priest - Painkiller',"
|
|
Packit |
4b6dd7 |
"'description': 'Videoclip de Judas Priest',"
|
|
Packit |
4b6dd7 |
"'thumbnails': {"
|
|
Packit |
4b6dd7 |
"'default': {"
|
|
Packit |
4b6dd7 |
"'url': 'https://i.ytimg.com/vi/JAagedeKdcQ/default.jpg',"
|
|
Packit |
4b6dd7 |
"'width': 120,"
|
|
Packit |
4b6dd7 |
"'height': 90"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'medium': {"
|
|
Packit |
4b6dd7 |
"'url': 'https://i.ytimg.com/vi/JAagedeKdcQ/mqdefault.jpg',"
|
|
Packit |
4b6dd7 |
"'width': 320,"
|
|
Packit |
4b6dd7 |
"'height': 180"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'high': {"
|
|
Packit |
4b6dd7 |
"'url': 'https://i.ytimg.com/vi/JAagedeKdcQ/hqdefault.jpg',"
|
|
Packit |
4b6dd7 |
"'width': 480,"
|
|
Packit |
4b6dd7 |
"'height': 360"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'channelTitle': 'eluves',"
|
|
Packit |
4b6dd7 |
"'categoryId': '10',"
|
|
Packit |
4b6dd7 |
"'liveBroadcastContent': 'none',"
|
|
Packit |
4b6dd7 |
"'localized': {"
|
|
Packit |
4b6dd7 |
"'title': 'Judas Priest - Painkiller',"
|
|
Packit |
4b6dd7 |
"'description': 'Videoclip de Judas Priest'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'contentDetails': {"
|
|
Packit |
4b6dd7 |
"'duration': 'PT6M',"
|
|
Packit |
4b6dd7 |
"'dimension': '2d',"
|
|
Packit |
4b6dd7 |
"'definition': 'sd',"
|
|
Packit |
4b6dd7 |
"'caption': 'false',"
|
|
Packit |
4b6dd7 |
"'licensedContent': false,"
|
|
Packit |
4b6dd7 |
"'regionRestriction': {"
|
|
Packit |
4b6dd7 |
"'blocked': ["
|
|
Packit |
4b6dd7 |
"'RU',"
|
|
Packit |
4b6dd7 |
"'RW',"
|
|
Packit |
4b6dd7 |
"'RS',"
|
|
Packit |
4b6dd7 |
"'RO',"
|
|
Packit |
4b6dd7 |
"'RE',"
|
|
Packit |
4b6dd7 |
"'BL',"
|
|
Packit |
4b6dd7 |
"'BM',"
|
|
Packit |
4b6dd7 |
"'BN',"
|
|
Packit |
4b6dd7 |
"'BO',"
|
|
Packit |
4b6dd7 |
"'JP',"
|
|
Packit |
4b6dd7 |
"'BI',"
|
|
Packit |
4b6dd7 |
"'BJ',"
|
|
Packit |
4b6dd7 |
"'BD',"
|
|
Packit |
4b6dd7 |
"'BE',"
|
|
Packit |
4b6dd7 |
"'BF',"
|
|
Packit |
4b6dd7 |
"'BG',"
|
|
Packit |
4b6dd7 |
"'YT',"
|
|
Packit |
4b6dd7 |
"'BB',"
|
|
Packit |
4b6dd7 |
"'CX',"
|
|
Packit |
4b6dd7 |
"'JE',"
|
|
Packit |
4b6dd7 |
"'BY',"
|
|
Packit |
4b6dd7 |
"'BZ',"
|
|
Packit |
4b6dd7 |
"'BT',"
|
|
Packit |
4b6dd7 |
"'JM',"
|
|
Packit |
4b6dd7 |
"'BV',"
|
|
Packit |
4b6dd7 |
"'BW',"
|
|
Packit |
4b6dd7 |
"'YE',"
|
|
Packit |
4b6dd7 |
"'BQ',"
|
|
Packit |
4b6dd7 |
"'BR',"
|
|
Packit |
4b6dd7 |
"'BS',"
|
|
Packit |
4b6dd7 |
"'IM',"
|
|
Packit |
4b6dd7 |
"'IL',"
|
|
Packit |
4b6dd7 |
"'IO',"
|
|
Packit |
4b6dd7 |
"'IN',"
|
|
Packit |
4b6dd7 |
"'IE',"
|
|
Packit |
4b6dd7 |
"'ID',"
|
|
Packit |
4b6dd7 |
"'QA',"
|
|
Packit |
4b6dd7 |
"'TM',"
|
|
Packit |
4b6dd7 |
"'IQ',"
|
|
Packit |
4b6dd7 |
"'IS',"
|
|
Packit |
4b6dd7 |
"'IR',"
|
|
Packit |
4b6dd7 |
"'IT',"
|
|
Packit |
4b6dd7 |
"'TK',"
|
|
Packit |
4b6dd7 |
"'AE',"
|
|
Packit |
4b6dd7 |
"'AD',"
|
|
Packit |
4b6dd7 |
"'AG',"
|
|
Packit |
4b6dd7 |
"'AF',"
|
|
Packit |
4b6dd7 |
"'AI',"
|
|
Packit |
4b6dd7 |
"'AM',"
|
|
Packit |
4b6dd7 |
"'AL',"
|
|
Packit |
4b6dd7 |
"'AO',"
|
|
Packit |
4b6dd7 |
"'AQ',"
|
|
Packit |
4b6dd7 |
"'AS',"
|
|
Packit |
4b6dd7 |
"'AR',"
|
|
Packit |
4b6dd7 |
"'AU',"
|
|
Packit |
4b6dd7 |
"'AT',"
|
|
Packit |
4b6dd7 |
"'AW',"
|
|
Packit |
4b6dd7 |
"'TG',"
|
|
Packit |
4b6dd7 |
"'AX',"
|
|
Packit |
4b6dd7 |
"'AZ',"
|
|
Packit |
4b6dd7 |
"'PR',"
|
|
Packit |
4b6dd7 |
"'HK',"
|
|
Packit |
4b6dd7 |
"'HN',"
|
|
Packit |
4b6dd7 |
"'PW',"
|
|
Packit |
4b6dd7 |
"'PT',"
|
|
Packit |
4b6dd7 |
"'HM',"
|
|
Packit |
4b6dd7 |
"'PY',"
|
|
Packit |
4b6dd7 |
"'PA',"
|
|
Packit |
4b6dd7 |
"'PF',"
|
|
Packit |
4b6dd7 |
"'PG',"
|
|
Packit |
4b6dd7 |
"'PE',"
|
|
Packit |
4b6dd7 |
"'HR',"
|
|
Packit |
4b6dd7 |
"'PK',"
|
|
Packit |
4b6dd7 |
"'PH',"
|
|
Packit |
4b6dd7 |
"'PN',"
|
|
Packit |
4b6dd7 |
"'HT',"
|
|
Packit |
4b6dd7 |
"'HU',"
|
|
Packit |
4b6dd7 |
"'OM',"
|
|
Packit |
4b6dd7 |
"'WS',"
|
|
Packit |
4b6dd7 |
"'WF',"
|
|
Packit |
4b6dd7 |
"'BH',"
|
|
Packit |
4b6dd7 |
"'KP',"
|
|
Packit |
4b6dd7 |
"'TT',"
|
|
Packit |
4b6dd7 |
"'GG',"
|
|
Packit |
4b6dd7 |
"'GF',"
|
|
Packit |
4b6dd7 |
"'GE',"
|
|
Packit |
4b6dd7 |
"'GD',"
|
|
Packit |
4b6dd7 |
"'GB',"
|
|
Packit |
4b6dd7 |
"'VN',"
|
|
Packit |
4b6dd7 |
"'VA',"
|
|
Packit |
4b6dd7 |
"'GM',"
|
|
Packit |
4b6dd7 |
"'VC',"
|
|
Packit |
4b6dd7 |
"'VE',"
|
|
Packit |
4b6dd7 |
"'GI',"
|
|
Packit |
4b6dd7 |
"'VG',"
|
|
Packit |
4b6dd7 |
"'GW',"
|
|
Packit |
4b6dd7 |
"'GU',"
|
|
Packit |
4b6dd7 |
"'GT',"
|
|
Packit |
4b6dd7 |
"'GS',"
|
|
Packit |
4b6dd7 |
"'GR',"
|
|
Packit |
4b6dd7 |
"'GQ',"
|
|
Packit |
4b6dd7 |
"'GP',"
|
|
Packit |
4b6dd7 |
"'VU',"
|
|
Packit |
4b6dd7 |
"'GY',"
|
|
Packit |
4b6dd7 |
"'NA',"
|
|
Packit |
4b6dd7 |
"'NC',"
|
|
Packit |
4b6dd7 |
"'NE',"
|
|
Packit |
4b6dd7 |
"'NF',"
|
|
Packit |
4b6dd7 |
"'NG',"
|
|
Packit |
4b6dd7 |
"'NI',"
|
|
Packit |
4b6dd7 |
"'NL',"
|
|
Packit |
4b6dd7 |
"'BA',"
|
|
Packit |
4b6dd7 |
"'NO',"
|
|
Packit |
4b6dd7 |
"'NP',"
|
|
Packit |
4b6dd7 |
"'NR',"
|
|
Packit |
4b6dd7 |
"'NU',"
|
|
Packit |
4b6dd7 |
"'NZ',"
|
|
Packit |
4b6dd7 |
"'PM',"
|
|
Packit |
4b6dd7 |
"'UM',"
|
|
Packit |
4b6dd7 |
"'TV',"
|
|
Packit |
4b6dd7 |
"'UG',"
|
|
Packit |
4b6dd7 |
"'UA',"
|
|
Packit |
4b6dd7 |
"'FI',"
|
|
Packit |
4b6dd7 |
"'FJ',"
|
|
Packit |
4b6dd7 |
"'FK',"
|
|
Packit |
4b6dd7 |
"'UY',"
|
|
Packit |
4b6dd7 |
"'FM',"
|
|
Packit |
4b6dd7 |
"'CN',"
|
|
Packit |
4b6dd7 |
"'UZ',"
|
|
Packit |
4b6dd7 |
"'US',"
|
|
Packit |
4b6dd7 |
"'ME',"
|
|
Packit |
4b6dd7 |
"'MD',"
|
|
Packit |
4b6dd7 |
"'MG',"
|
|
Packit |
4b6dd7 |
"'MF',"
|
|
Packit |
4b6dd7 |
"'MA',"
|
|
Packit |
4b6dd7 |
"'MC',"
|
|
Packit |
4b6dd7 |
"'VI',"
|
|
Packit |
4b6dd7 |
"'MM',"
|
|
Packit |
4b6dd7 |
"'ML',"
|
|
Packit |
4b6dd7 |
"'MO',"
|
|
Packit |
4b6dd7 |
"'FO',"
|
|
Packit |
4b6dd7 |
"'MH',"
|
|
Packit |
4b6dd7 |
"'MK',"
|
|
Packit |
4b6dd7 |
"'MU',"
|
|
Packit |
4b6dd7 |
"'MT',"
|
|
Packit |
4b6dd7 |
"'MW',"
|
|
Packit |
4b6dd7 |
"'MV',"
|
|
Packit |
4b6dd7 |
"'MQ',"
|
|
Packit |
4b6dd7 |
"'MP',"
|
|
Packit |
4b6dd7 |
"'MS',"
|
|
Packit |
4b6dd7 |
"'MR',"
|
|
Packit |
4b6dd7 |
"'CO',"
|
|
Packit |
4b6dd7 |
"'CV',"
|
|
Packit |
4b6dd7 |
"'MY',"
|
|
Packit |
4b6dd7 |
"'MX',"
|
|
Packit |
4b6dd7 |
"'MZ',"
|
|
Packit |
4b6dd7 |
"'TN',"
|
|
Packit |
4b6dd7 |
"'TO',"
|
|
Packit |
4b6dd7 |
"'TL',"
|
|
Packit |
4b6dd7 |
"'JO',"
|
|
Packit |
4b6dd7 |
"'TJ',"
|
|
Packit |
4b6dd7 |
"'GA',"
|
|
Packit |
4b6dd7 |
"'TH',"
|
|
Packit |
4b6dd7 |
"'TF',"
|
|
Packit |
4b6dd7 |
"'ET',"
|
|
Packit |
4b6dd7 |
"'TD',"
|
|
Packit |
4b6dd7 |
"'TC',"
|
|
Packit |
4b6dd7 |
"'ES',"
|
|
Packit |
4b6dd7 |
"'ER',"
|
|
Packit |
4b6dd7 |
"'TZ',"
|
|
Packit |
4b6dd7 |
"'EH',"
|
|
Packit |
4b6dd7 |
"'GN',"
|
|
Packit |
4b6dd7 |
"'EE',"
|
|
Packit |
4b6dd7 |
"'TW',"
|
|
Packit |
4b6dd7 |
"'EG',"
|
|
Packit |
4b6dd7 |
"'TR',"
|
|
Packit |
4b6dd7 |
"'CA',"
|
|
Packit |
4b6dd7 |
"'EC',"
|
|
Packit |
4b6dd7 |
"'GL',"
|
|
Packit |
4b6dd7 |
"'LB',"
|
|
Packit |
4b6dd7 |
"'LC',"
|
|
Packit |
4b6dd7 |
"'LA',"
|
|
Packit |
4b6dd7 |
"'MN',"
|
|
Packit |
4b6dd7 |
"'LK',"
|
|
Packit |
4b6dd7 |
"'LI',"
|
|
Packit |
4b6dd7 |
"'LV',"
|
|
Packit |
4b6dd7 |
"'LT',"
|
|
Packit |
4b6dd7 |
"'LU',"
|
|
Packit |
4b6dd7 |
"'LR',"
|
|
Packit |
4b6dd7 |
"'LS',"
|
|
Packit |
4b6dd7 |
"'PS',"
|
|
Packit |
4b6dd7 |
"'KZ',"
|
|
Packit |
4b6dd7 |
"'GH',"
|
|
Packit |
4b6dd7 |
"'LY',"
|
|
Packit |
4b6dd7 |
"'DZ',"
|
|
Packit |
4b6dd7 |
"'DO',"
|
|
Packit |
4b6dd7 |
"'DM',"
|
|
Packit |
4b6dd7 |
"'DJ',"
|
|
Packit |
4b6dd7 |
"'PL',"
|
|
Packit |
4b6dd7 |
"'DK',"
|
|
Packit |
4b6dd7 |
"'DE',"
|
|
Packit |
4b6dd7 |
"'SZ',"
|
|
Packit |
4b6dd7 |
"'SY',"
|
|
Packit |
4b6dd7 |
"'SX',"
|
|
Packit |
4b6dd7 |
"'SS',"
|
|
Packit |
4b6dd7 |
"'SR',"
|
|
Packit |
4b6dd7 |
"'SV',"
|
|
Packit |
4b6dd7 |
"'ST',"
|
|
Packit |
4b6dd7 |
"'SK',"
|
|
Packit |
4b6dd7 |
"'SJ',"
|
|
Packit |
4b6dd7 |
"'SI',"
|
|
Packit |
4b6dd7 |
"'SH',"
|
|
Packit |
4b6dd7 |
"'SO',"
|
|
Packit |
4b6dd7 |
"'SN',"
|
|
Packit |
4b6dd7 |
"'SM',"
|
|
Packit |
4b6dd7 |
"'SL',"
|
|
Packit |
4b6dd7 |
"'SC',"
|
|
Packit |
4b6dd7 |
"'SB',"
|
|
Packit |
4b6dd7 |
"'SA',"
|
|
Packit |
4b6dd7 |
"'FR',"
|
|
Packit |
4b6dd7 |
"'SG',"
|
|
Packit |
4b6dd7 |
"'SE',"
|
|
Packit |
4b6dd7 |
"'SD',"
|
|
Packit |
4b6dd7 |
"'CK',"
|
|
Packit |
4b6dd7 |
"'KR',"
|
|
Packit |
4b6dd7 |
"'CI',"
|
|
Packit |
4b6dd7 |
"'CH',"
|
|
Packit |
4b6dd7 |
"'KW',"
|
|
Packit |
4b6dd7 |
"'ZA',"
|
|
Packit |
4b6dd7 |
"'CM',"
|
|
Packit |
4b6dd7 |
"'CL',"
|
|
Packit |
4b6dd7 |
"'CC',"
|
|
Packit |
4b6dd7 |
"'ZM',"
|
|
Packit |
4b6dd7 |
"'KY',"
|
|
Packit |
4b6dd7 |
"'CG',"
|
|
Packit |
4b6dd7 |
"'CF',"
|
|
Packit |
4b6dd7 |
"'CD',"
|
|
Packit |
4b6dd7 |
"'CZ',"
|
|
Packit |
4b6dd7 |
"'CY',"
|
|
Packit |
4b6dd7 |
"'ZW',"
|
|
Packit |
4b6dd7 |
"'KG',"
|
|
Packit |
4b6dd7 |
"'CU',"
|
|
Packit |
4b6dd7 |
"'KE',"
|
|
Packit |
4b6dd7 |
"'CR',"
|
|
Packit |
4b6dd7 |
"'KI',"
|
|
Packit |
4b6dd7 |
"'KH',"
|
|
Packit |
4b6dd7 |
"'CW',"
|
|
Packit |
4b6dd7 |
"'KN',"
|
|
Packit |
4b6dd7 |
"'KM'"
|
|
Packit |
4b6dd7 |
"]"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'uploadStatus': 'processed',"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'private',"
|
|
Packit |
4b6dd7 |
"'license': 'youtube',"
|
|
Packit |
4b6dd7 |
"'embeddable': true,"
|
|
Packit |
4b6dd7 |
"'publicStatsViewable': true"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'statistics': {"
|
|
Packit |
4b6dd7 |
"'viewCount': '4369107',"
|
|
Packit |
4b6dd7 |
"'likeCount': '13619',"
|
|
Packit |
4b6dd7 |
"'dislikeCount': '440',"
|
|
Packit |
4b6dd7 |
"'favoriteCount': '0',"
|
|
Packit |
4b6dd7 |
"'commentCount': '11181'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test the app:control values */
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_video_is_draft (video) == TRUE);
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
state = gdata_youtube_video_get_state (video);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_state_get_name (state), ==, NULL);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_state_get_message (state), ==, NULL);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_state_get_reason_code (state) == NULL);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_state_get_help_uri (state) == NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* TODO: more tests on entry properties */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_parsing_yt_recorded (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
gint64 recorded;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_json (GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'etag': '\"tbWC5XrSXxe1WOAx6MK9z4hHSU8/X_byq2BdOVgHzCA-ScpZbTWmgfQ\"',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'snippet': {"
|
|
Packit |
4b6dd7 |
"'publishedAt': '2006-05-16T14:06:37.000Z',"
|
|
Packit |
4b6dd7 |
"'channelId': 'UCCS6UQvicRHyn1whEUDEMUQ',"
|
|
Packit |
4b6dd7 |
"'title': 'Judas Priest - Painkiller',"
|
|
Packit |
4b6dd7 |
"'description': 'Videoclip de Judas Priest',"
|
|
Packit |
4b6dd7 |
"'channelTitle': 'eluves',"
|
|
Packit |
4b6dd7 |
"'categoryId': '10',"
|
|
Packit |
4b6dd7 |
"'liveBroadcastContent': 'none',"
|
|
Packit |
4b6dd7 |
"'localized': {"
|
|
Packit |
4b6dd7 |
"'title': 'Judas Priest - Painkiller',"
|
|
Packit |
4b6dd7 |
"'description': 'Videoclip de Judas Priest'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {"
|
|
Packit |
4b6dd7 |
"'recordingDate': '2003-08-03'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test the recorded date */
|
|
Packit |
4b6dd7 |
recorded = gdata_youtube_video_get_recorded (video);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (recorded, ==, 1059868800);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Update the state and see if the XML's written out OK */
|
|
Packit |
4b6dd7 |
recorded = 1128229200;
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_recorded (video, recorded);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the XML */
|
|
Packit |
4b6dd7 |
gdata_test_assert_json (video,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'etag': '\"tbWC5XrSXxe1WOAx6MK9z4hHSU8/X_byq2BdOVgHzCA-ScpZbTWmgfQ\"',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'selfLink': 'https://www.googleapis.com/youtube/v3/videos?id=JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'title': 'Judas Priest - Painkiller',"
|
|
Packit |
4b6dd7 |
"'description': 'Videoclip de Judas Priest',"
|
|
Packit |
4b6dd7 |
"'snippet': {"
|
|
Packit |
4b6dd7 |
"'title': 'Judas Priest - Painkiller',"
|
|
Packit |
4b6dd7 |
"'description': 'Videoclip de Judas Priest',"
|
|
Packit |
4b6dd7 |
"'categoryId': '10'"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'public'"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {"
|
|
Packit |
4b6dd7 |
"'recordingDate': '2005-10-02'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* TODO: more tests on entry properties */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_parsing_yt_access_control (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_json (GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'public',"
|
|
Packit |
4b6dd7 |
"'embeddable': false"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test the access controls */
|
|
Packit |
4b6dd7 |
g_assert_cmpint (gdata_youtube_video_get_access_control (video, GDATA_YOUTUBE_ACTION_RATE), ==, GDATA_YOUTUBE_PERMISSION_DENIED);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (gdata_youtube_video_get_access_control (video, GDATA_YOUTUBE_ACTION_COMMENT), ==, GDATA_YOUTUBE_PERMISSION_DENIED);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (gdata_youtube_video_get_access_control (video, GDATA_YOUTUBE_ACTION_COMMENT_VOTE), ==, GDATA_YOUTUBE_PERMISSION_DENIED);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (gdata_youtube_video_get_access_control (video, GDATA_YOUTUBE_ACTION_VIDEO_RESPOND), ==, GDATA_YOUTUBE_PERMISSION_DENIED);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (gdata_youtube_video_get_access_control (video, GDATA_YOUTUBE_ACTION_EMBED), ==, GDATA_YOUTUBE_PERMISSION_DENIED);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (gdata_youtube_video_get_access_control (video, GDATA_YOUTUBE_ACTION_SYNDICATE), ==, GDATA_YOUTUBE_PERMISSION_DENIED);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (gdata_youtube_video_get_access_control (video, "list"), ==, GDATA_YOUTUBE_PERMISSION_ALLOWED);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Update some of them and see if the JSON’s written out OK */
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_access_control (video, "list", GDATA_YOUTUBE_PERMISSION_DENIED);
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_access_control (video, GDATA_YOUTUBE_ACTION_EMBED, GDATA_YOUTUBE_PERMISSION_ALLOWED);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the JSON */
|
|
Packit |
4b6dd7 |
gdata_test_assert_json (video,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'selfLink': 'https://www.googleapis.com/youtube/v3/videos?id=JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'title': null,"
|
|
Packit |
4b6dd7 |
"'snippet': {},"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'unlisted',"
|
|
Packit |
4b6dd7 |
"'embeddable': true"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {}"
|
|
Packit |
4b6dd7 |
"}");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_parsing_yt_category (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeCategory *category;
|
|
Packit |
4b6dd7 |
gboolean assignable, deprecated;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test a non-deprecated category */
|
|
Packit |
4b6dd7 |
category = GDATA_YOUTUBE_CATEGORY (gdata_parsable_new_from_xml (GDATA_TYPE_YOUTUBE_CATEGORY,
|
|
Packit |
4b6dd7 |
"
|
|
Packit |
4b6dd7 |
"scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'>"
|
|
Packit |
4b6dd7 |
"<yt:assignable/>"
|
|
Packit |
4b6dd7 |
"<yt:browsable regions='CZ AU HK'/>"
|
|
Packit |
4b6dd7 |
"</category>", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_CATEGORY (category));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test the category's properties */
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_assignable (category) == TRUE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "CZ") == TRUE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "AU") == TRUE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "HK") == TRUE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "GB") == FALSE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_deprecated (category) == FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test the properties the other way */
|
|
Packit |
4b6dd7 |
g_object_get (category, "is-assignable", &assignable, "is-deprecated", &deprecated, NULL);
|
|
Packit |
4b6dd7 |
g_assert (assignable == TRUE);
|
|
Packit |
4b6dd7 |
g_assert (deprecated == FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (category);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test a deprecated category */
|
|
Packit |
4b6dd7 |
category = GDATA_YOUTUBE_CATEGORY (gdata_parsable_new_from_xml (GDATA_TYPE_YOUTUBE_CATEGORY,
|
|
Packit |
4b6dd7 |
"
|
|
Packit |
4b6dd7 |
"scheme='http://schemas.google.com/g/2005#kind' term='http://gdata.youtube.com/schemas/2007#video'>"
|
|
Packit |
4b6dd7 |
"<yt:deprecated/>"
|
|
Packit |
4b6dd7 |
"</category>", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_CATEGORY (category));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test the category's properties */
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_assignable (category) == FALSE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "CZ") == FALSE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "AU") == FALSE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "HK") == FALSE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_browsable (category, "GB") == FALSE);
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_category_is_deprecated (category) == TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (category);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_parsing_georss_where (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
gdouble latitude, longitude;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_json (GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {"
|
|
Packit |
4b6dd7 |
"'location': {"
|
|
Packit |
4b6dd7 |
"'latitude': 41.14556884765625,"
|
|
Packit |
4b6dd7 |
"'longitude': -8.63525390625"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test the coordinates */
|
|
Packit |
4b6dd7 |
gdata_youtube_video_get_coordinates (video, &latitude, &longitude);
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (latitude, ==, 41.14556884765625);
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (longitude, ==, -8.63525390625);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Update them and see if they're set OK and the JSON’s written out OK */
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_coordinates (video, 5.5, 6.5);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_get (G_OBJECT (video),
|
|
Packit |
4b6dd7 |
"latitude", &latitude,
|
|
Packit |
4b6dd7 |
"longitude", &longitude,
|
|
Packit |
4b6dd7 |
NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (latitude, ==, 5.5);
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (longitude, ==, 6.5);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the JSON */
|
|
Packit |
4b6dd7 |
gdata_test_assert_json (video,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'selfLink': 'https://www.googleapis.com/youtube/v3/videos?id=JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'title': null,"
|
|
Packit |
4b6dd7 |
"'snippet': {},"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'public'"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {"
|
|
Packit |
4b6dd7 |
"'location': {"
|
|
Packit |
4b6dd7 |
"'latitude': 5.5,"
|
|
Packit |
4b6dd7 |
"'longitude': 6.5"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Unset the properties and ensure they’re removed from the JSON */
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_coordinates (video, G_MAXDOUBLE, G_MAXDOUBLE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_video_get_coordinates (video, &latitude, &longitude);
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (latitude, ==, G_MAXDOUBLE);
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (longitude, ==, G_MAXDOUBLE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the JSON */
|
|
Packit |
4b6dd7 |
gdata_test_assert_json (video,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'selfLink': 'https://www.googleapis.com/youtube/v3/videos?id=JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'title': null,"
|
|
Packit |
4b6dd7 |
"'snippet': {},"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'public'"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {}"
|
|
Packit |
4b6dd7 |
"}");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_parsing_ratings (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Parse all ratings */
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_json (GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'contentDetails': {"
|
|
Packit |
4b6dd7 |
"'contentRating': {"
|
|
Packit |
4b6dd7 |
"'mpaaRating': 'mpaaPg',"
|
|
Packit |
4b6dd7 |
"'tvpgRating': 'tvpgPg'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the ratings, and check that we haven't ended up with a country restriction */
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_media_rating (video, GDATA_YOUTUBE_RATING_TYPE_MPAA), ==, "pg");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_media_rating (video, GDATA_YOUTUBE_RATING_TYPE_V_CHIP), ==, "tv-pg");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_video_is_restricted_in_country (video, "US") == FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Parse a video with one rating missing and see what happens */
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_parsable_new_from_json (GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'id': 'JAagedeKdcQ',"
|
|
Packit |
4b6dd7 |
"'contentDetails': {"
|
|
Packit |
4b6dd7 |
"'contentRating': {"
|
|
Packit |
4b6dd7 |
"'tvpgRating': 'tvpgY7Fv'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}", -1, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the ratings again */
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_media_rating (video, GDATA_YOUTUBE_RATING_TYPE_MPAA), ==, NULL);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_media_rating (video, GDATA_YOUTUBE_RATING_TYPE_V_CHIP), ==, "tv-y7-fv");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check that calling with an arbitrary rating type returns NULL.
|
|
Packit |
4b6dd7 |
* %GDATA_YOUTUBE_RATING_TYPE_SIMPLE is no longer supported. */
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_media_rating (video, "fooish bar"), ==, NULL);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_media_rating (video, GDATA_YOUTUBE_RATING_TYPE_SIMPLE), ==, NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_video_escaping (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
const gchar * const keywords[] = { "<keyword1>", "keyword2 & stuff, things", NULL };
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = gdata_youtube_video_new (NULL);
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_location (video, "\"Here\" & 'there'");
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_access_control (video, "<action>", GDATA_YOUTUBE_PERMISSION_ALLOWED);
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_keywords (video, keywords);
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_description (video, "Description & 'stuff'.");
|
|
Packit |
4b6dd7 |
gdata_youtube_video_set_aspect_ratio (video, "4 & 3");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the outputted JSON is escaped properly */
|
|
Packit |
4b6dd7 |
gdata_test_assert_json (video,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'title': null,"
|
|
Packit |
4b6dd7 |
"'description': \"Description & 'stuff'.\","
|
|
Packit |
4b6dd7 |
"'snippet': {"
|
|
Packit |
4b6dd7 |
"'description': \"Description & 'stuff'.\","
|
|
Packit |
4b6dd7 |
"'tags': ["
|
|
Packit |
4b6dd7 |
"'<keyword1>',"
|
|
Packit |
4b6dd7 |
"'keyword2 & stuff, things'"
|
|
Packit |
4b6dd7 |
"]"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'public'"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {"
|
|
Packit |
4b6dd7 |
"'locationDescription': \"\\\"Here\\\" & 'there'\""
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}");
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check that a newly-constructed video does not output a location in its
|
|
Packit |
4b6dd7 |
* JSON or properties. */
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_video_location (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
gdouble latitude, longitude;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = gdata_youtube_video_new (NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_null (gdata_youtube_video_get_location (video));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Latitude and longitude should be outside the valid ranges. */
|
|
Packit |
4b6dd7 |
gdata_youtube_video_get_coordinates (video, &latitude, &longitude);
|
|
Packit |
4b6dd7 |
g_assert (latitude < -90.0 || latitude > 90.0);
|
|
Packit |
4b6dd7 |
g_assert (longitude < -180.0 || longitude > 180.0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the outputted JSON is escaped properly */
|
|
Packit |
4b6dd7 |
gdata_test_assert_json (video,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'title': null,"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#video',"
|
|
Packit |
4b6dd7 |
"'snippet': {},"
|
|
Packit |
4b6dd7 |
"'status': {"
|
|
Packit |
4b6dd7 |
"'privacyStatus': 'public'"
|
|
Packit |
4b6dd7 |
"},"
|
|
Packit |
4b6dd7 |
"'recordingDetails': {}"
|
|
Packit |
4b6dd7 |
"}");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_comment_get_json (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeComment *comment_;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
comment_ = gdata_youtube_comment_new (NULL);
|
|
Packit |
4b6dd7 |
gdata_entry_set_content (GDATA_ENTRY (comment_),
|
|
Packit |
4b6dd7 |
"This is a comment with <markup> & 'stüff'.");
|
|
Packit |
4b6dd7 |
gdata_youtube_comment_set_parent_comment_uri (comment_,
|
|
Packit |
4b6dd7 |
"http://example.com/?foo=bar&baz=shizzle");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the outputted JSON is OK */
|
|
Packit |
4b6dd7 |
gdata_test_assert_json (comment_,
|
|
Packit |
4b6dd7 |
"{"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#commentThread',"
|
|
Packit |
4b6dd7 |
"'snippet' : {"
|
|
Packit |
4b6dd7 |
"'topLevelComment': {"
|
|
Packit |
4b6dd7 |
"'kind': 'youtube#comment',"
|
|
Packit |
4b6dd7 |
"'snippet': {"
|
|
Packit |
4b6dd7 |
"'textOriginal': \"This is a comment with <markup> & 'stüff'.\","
|
|
Packit |
4b6dd7 |
"'parentId': 'http://example.com/?foo=bar&baz=shizzle'"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}"
|
|
Packit |
4b6dd7 |
"}");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (comment_);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
notify_cb (GDataYouTubeComment *comment_, GParamSpec *pspec, guint *notification_count)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
*notification_count = *notification_count + 1;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_comment_properties_parent_comment_uri (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeComment *comment_;
|
|
Packit |
4b6dd7 |
guint notification_count = 0;
|
|
Packit |
4b6dd7 |
gchar *parent_comment_uri;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
comment_ = gdata_youtube_comment_new (NULL);
|
|
Packit |
4b6dd7 |
g_signal_connect (comment_, "notify::parent-comment-uri", (GCallback) notify_cb, ¬ification_count);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Default. */
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_comment_get_parent_comment_uri (comment_) == NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set the property. */
|
|
Packit |
4b6dd7 |
gdata_youtube_comment_set_parent_comment_uri (comment_, "foo");
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (notification_count, ==, 1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_comment_get_parent_comment_uri (comment_), ==, "foo");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the property a different way. */
|
|
Packit |
4b6dd7 |
g_object_get (G_OBJECT (comment_),
|
|
Packit |
4b6dd7 |
"parent-comment-uri", &parent_comment_uri,
|
|
Packit |
4b6dd7 |
NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (parent_comment_uri, ==, "foo");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (parent_comment_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set the property a different way. */
|
|
Packit |
4b6dd7 |
g_object_set (G_OBJECT (comment_),
|
|
Packit |
4b6dd7 |
"parent-comment-uri", "bar",
|
|
Packit |
4b6dd7 |
NULL);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (notification_count, ==, 2);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set the property to the same value. */
|
|
Packit |
4b6dd7 |
gdata_youtube_comment_set_parent_comment_uri (comment_, "bar");
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (notification_count, ==, 2);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set the property back to NULL. */
|
|
Packit |
4b6dd7 |
gdata_youtube_comment_set_parent_comment_uri (comment_, NULL);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (notification_count, ==, 3);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (gdata_youtube_comment_get_parent_comment_uri (comment_) == NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (comment_);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static gchar *
|
|
Packit |
4b6dd7 |
build_this_week_date_str (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GTimeVal tv;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_get_current_time (&tv;;
|
|
Packit |
4b6dd7 |
tv.tv_sec -= 7 * 24 * 60 * 60; /* this week */
|
|
Packit |
4b6dd7 |
tv.tv_usec = 0; /* pointless accuracy */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return g_time_val_to_iso8601 (&tv;;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_uri (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gdouble latitude, longitude, radius;
|
|
Packit |
4b6dd7 |
gboolean has_location;
|
|
Packit |
4b6dd7 |
gchar *query_uri;
|
|
Packit |
4b6dd7 |
GDataYouTubeQuery *query = gdata_youtube_query_new ("q");
|
|
Packit |
4b6dd7 |
gchar *this_week_date_str, *expected_uri;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* This should not appear in the query because it is deprecated. */
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_format (query, GDATA_YOUTUBE_FORMAT_RTSP_H263_AMR);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (gdata_youtube_query_get_format (query), ==, 1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Location */
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_location (query, 45.01364, -97.12356, 112.5, TRUE);
|
|
Packit |
4b6dd7 |
gdata_youtube_query_get_location (query, &latitude, &longitude, &radius, &has_location);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (latitude, ==, 45.01364);
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (longitude, ==, -97.12356);
|
|
Packit |
4b6dd7 |
g_assert_cmpfloat (radius, ==, 112.5);
|
|
Packit |
4b6dd7 |
g_assert (has_location == TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&safeSearch=none&location=45.013640000000002,-97.123559999999998&locationRadius=112.5m");
|
|
Packit |
4b6dd7 |
g_free (query_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* This used to set the has-location parameter in the query, but that’s
|
|
Packit |
4b6dd7 |
* no longer supported by Google, so it should be the same as the
|
|
Packit |
4b6dd7 |
* following query. */
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_location (query, G_MAXDOUBLE, 0.6672, 52.8, TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&safeSearch=none");
|
|
Packit |
4b6dd7 |
g_free (query_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_location (query, G_MAXDOUBLE, G_MAXDOUBLE, 0.0, FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&safeSearch=none");
|
|
Packit |
4b6dd7 |
g_free (query_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Language; this should not appear in the query as it is no longer
|
|
Packit |
4b6dd7 |
* supported. */
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_language (query, "fr");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_query_get_language (query), ==, "fr");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_order_by (query, "relevance_lang_fr");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_query_get_order_by (query), ==, "relevance_lang_fr");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_restriction (query, "192.168.0.1");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_query_get_restriction (query), ==, "192.168.0.1");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&safeSearch=none&order=relevance®ionCode=192.168.0.1");
|
|
Packit |
4b6dd7 |
g_free (query_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_safe_search (query, GDATA_YOUTUBE_SAFE_SEARCH_STRICT);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (gdata_youtube_query_get_safe_search (query), ==, GDATA_YOUTUBE_SAFE_SEARCH_STRICT);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (query_uri, ==, "http://example.com?q=q&safeSearch=strict&order=relevance®ionCode=192.168.0.1");
|
|
Packit |
4b6dd7 |
g_free (query_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Deprecated and unused: */
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_sort_order (query, GDATA_YOUTUBE_SORT_ASCENDING);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (gdata_youtube_query_get_sort_order (query), ==, GDATA_YOUTUBE_SORT_ASCENDING);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_age (query, GDATA_YOUTUBE_AGE_THIS_WEEK);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (gdata_youtube_query_get_age (query), ==, GDATA_YOUTUBE_AGE_THIS_WEEK);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Deprecated and unused: */
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_uploader (query, GDATA_YOUTUBE_UPLOADER_PARTNER);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (gdata_youtube_query_get_uploader (query), ==, GDATA_YOUTUBE_UPLOADER_PARTNER);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_youtube_query_set_license (query, GDATA_YOUTUBE_LICENSE_CC);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_query_get_license (query), ==, GDATA_YOUTUBE_LICENSE_CC);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the built URI with a normal feed URI */
|
|
Packit |
4b6dd7 |
query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com");
|
|
Packit |
4b6dd7 |
this_week_date_str = build_this_week_date_str ();
|
|
Packit |
4b6dd7 |
expected_uri = g_strdup_printf ("http://example.com?q=q&publishedAfter=%s&safeSearch=strict&order=relevance®ionCode=192.168.0.1&videoLicense=creativeCommon", this_week_date_str);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (query_uri, ==, expected_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (this_week_date_str);
|
|
Packit |
4b6dd7 |
g_free (expected_uri);
|
|
Packit |
4b6dd7 |
g_free (query_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* …and with a feed URI with pre-existing arguments */
|
|
Packit |
4b6dd7 |
query_uri = gdata_query_get_query_uri (GDATA_QUERY (query), "http://example.com?foobar=shizzle");
|
|
Packit |
4b6dd7 |
this_week_date_str = build_this_week_date_str ();
|
|
Packit |
4b6dd7 |
expected_uri = g_strdup_printf ("http://example.com?foobar=shizzle&q=q&publishedAfter=%s&safeSearch=strict&order=relevance®ionCode=192.168.0.1&videoLicense=creativeCommon", this_week_date_str);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (query_uri, ==, expected_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (this_week_date_str);
|
|
Packit |
4b6dd7 |
g_free (expected_uri);
|
|
Packit |
4b6dd7 |
g_free (query_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (query);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_etag (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeQuery *query = gdata_youtube_query_new (NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test that setting any property will unset the ETag */
|
|
Packit |
4b6dd7 |
g_test_bug ("613529");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#define CHECK_ETAG(C) \
|
|
Packit |
4b6dd7 |
gdata_query_set_etag (GDATA_QUERY (query), "foobar"); \
|
|
Packit |
4b6dd7 |
(C); \
|
|
Packit |
4b6dd7 |
g_assert (gdata_query_get_etag (GDATA_QUERY (query)) == NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_format (query, GDATA_YOUTUBE_FORMAT_RTSP_H263_AMR))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_location (query, 0.0, 65.0, 15.0, TRUE))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_language (query, "British English"))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_order_by (query, "shizzle"))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_restriction (query, "restriction"))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_safe_search (query, GDATA_YOUTUBE_SAFE_SEARCH_MODERATE))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_sort_order (query, GDATA_YOUTUBE_SORT_DESCENDING))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_age (query, GDATA_YOUTUBE_AGE_THIS_WEEK))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_uploader (query, GDATA_YOUTUBE_UPLOADER_PARTNER))
|
|
Packit |
4b6dd7 |
CHECK_ETAG (gdata_youtube_query_set_license (query, GDATA_YOUTUBE_LICENSE_STANDARD))
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
#undef CHECK_ETAG
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (query);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_query_single (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "query-single");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_service_query_single_entry (GDATA_SERVICE (service),
|
|
Packit |
4b6dd7 |
gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"tag:youtube.com,2008:video:_LeQuMpwbW4", NULL,
|
|
Packit |
4b6dd7 |
GDATA_TYPE_YOUTUBE_VIDEO, NULL, &error));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (video != NULL);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_video_id (video), ==, "_LeQuMpwbW4");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_entry_get_id (GDATA_ENTRY (video)), ==, "_LeQuMpwbW4");
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (query_single, void,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
gdata_service_query_single_entry_async (GDATA_SERVICE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"tag:youtube.com,2008:video:_LeQuMpwbW4", NULL, GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
cancellable, async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = GDATA_YOUTUBE_VIDEO (gdata_service_query_single_entry_finish (GDATA_SERVICE (obj), async_result, &error));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error == NULL) {
|
|
Packit |
4b6dd7 |
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_video_get_video_id (video), ==, "_LeQuMpwbW4");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_entry_get_id (GDATA_ENTRY (video)), ==, "_LeQuMpwbW4");
|
|
Packit |
4b6dd7 |
G_GNUC_END_IGNORE_DEPRECATIONS
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (video);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert (video == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
typedef struct {
|
|
Packit |
4b6dd7 |
GDataYouTubeVideo *video;
|
|
Packit |
4b6dd7 |
} CommentData;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
set_up_comment (CommentData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "setup-comment");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get a video known to have comments on it. */
|
|
Packit |
4b6dd7 |
data->video = GDATA_YOUTUBE_VIDEO (gdata_service_query_single_entry (GDATA_SERVICE (service),
|
|
Packit |
4b6dd7 |
gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"tag:youtube.com,2008:video:RzR2k8yo4NY", NULL,
|
|
Packit |
4b6dd7 |
GDATA_TYPE_YOUTUBE_VIDEO, NULL, NULL));
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (data->video));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
tear_down_comment (CommentData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_object_unref (data->video);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
assert_comments_feed (GDataFeed *comments_feed)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GList *comments;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_FEED (comments_feed));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
for (comments = gdata_feed_get_entries (comments_feed); comments != NULL; comments = comments->next) {
|
|
Packit |
4b6dd7 |
GList *authors;
|
|
Packit |
4b6dd7 |
GDataYouTubeComment *comment_ = GDATA_YOUTUBE_COMMENT (comments->data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* We can't do much more than this, since we can't reasonably add test comments to public videos, and can't upload a new video
|
|
Packit |
4b6dd7 |
* for each test since it has to go through moderation. */
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_entry_get_content (GDATA_ENTRY (comment_)), !=, NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_list_length (gdata_entry_get_authors (GDATA_ENTRY (comment_))), >, 0);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
for (authors = gdata_entry_get_authors (GDATA_ENTRY (comment_)); authors != NULL; authors = authors->next) {
|
|
Packit |
4b6dd7 |
GDataAuthor *author = GDATA_AUTHOR (authors->data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Again, we can't test these much. */
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_author_get_name (author), !=, NULL);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_author_get_uri (author), !=, NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_comment_query (CommentData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataFeed *comments_feed;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "comment-query");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the comments feed for the video */
|
|
Packit |
4b6dd7 |
comments_feed = gdata_commentable_query_comments (GDATA_COMMENTABLE (data->video), GDATA_SERVICE (service), NULL, NULL, NULL, NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
assert_comments_feed (comments_feed);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (comments_feed);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_CLOSURE_FUNCTIONS (comment, CommentData);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (comment_query, CommentData,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
gdata_commentable_query_comments_async (GDATA_COMMENTABLE (data->video), GDATA_SERVICE (service), NULL, cancellable, NULL, NULL, NULL,
|
|
Packit |
4b6dd7 |
async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataFeed *comments_feed;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
comments_feed = gdata_commentable_query_comments_finish (GDATA_COMMENTABLE (obj), async_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error == NULL) {
|
|
Packit |
4b6dd7 |
assert_comments_feed (comments_feed);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (comments_feed);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert (comments_feed == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test that the progress callbacks from gdata_commentable_query_comments_async() are called correctly.
|
|
Packit |
4b6dd7 |
* We take a CommentData so that we can guarantee the video exists, but we don't use it much as we don't actually care about the specific
|
|
Packit |
4b6dd7 |
* video. */
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_comment_query_async_progress_closure (CommentData *query_data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataAsyncProgressClosure *data = g_slice_new0 (GDataAsyncProgressClosure);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "comment-query-async-progress-closure");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
data->main_loop = g_main_loop_new (NULL, TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_commentable_query_comments_async (GDATA_COMMENTABLE (query_data->video), GDATA_SERVICE (service), NULL, NULL,
|
|
Packit |
4b6dd7 |
(GDataQueryProgressCallback) gdata_test_async_progress_callback,
|
|
Packit |
4b6dd7 |
data, (GDestroyNotify) gdata_test_async_progress_closure_free,
|
|
Packit |
4b6dd7 |
(GAsyncReadyCallback) gdata_test_async_progress_finish_callback, data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_main_loop_run (data->main_loop);
|
|
Packit |
4b6dd7 |
g_main_loop_unref (data->main_loop);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check that both callbacks were called exactly once */
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (data->progress_destroy_notify_count, ==, 1);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (data->async_ready_notify_count, ==, 1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_slice_free (GDataAsyncProgressClosure, data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
typedef struct {
|
|
Packit |
4b6dd7 |
CommentData parent;
|
|
Packit |
4b6dd7 |
GDataYouTubeComment *comment;
|
|
Packit |
4b6dd7 |
} InsertCommentData;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
set_up_insert_comment (InsertCommentData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
set_up_comment ((CommentData*) data, service);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "setup-insert-comment");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Create a test comment to be inserted. */
|
|
Packit |
4b6dd7 |
data->comment = gdata_youtube_comment_new (NULL);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_COMMENT (data->comment));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_entry_set_content (GDATA_ENTRY (data->comment), "This is a test comment.");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
tear_down_insert_comment (InsertCommentData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "teardown-insert-comment");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (data->comment != NULL) {
|
|
Packit |
4b6dd7 |
g_object_unref (data->comment);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
tear_down_comment ((CommentData*) data, service);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
assert_comments_equal (GDataComment *new_comment,
|
|
Packit |
4b6dd7 |
GDataYouTubeComment *original_comment,
|
|
Packit |
4b6dd7 |
gboolean allow_empty)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GList *authors;
|
|
Packit |
4b6dd7 |
GDataAuthor *author;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_COMMENT (new_comment));
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_COMMENT (original_comment));
|
|
Packit |
4b6dd7 |
g_assert (GDATA_YOUTUBE_COMMENT (new_comment) != original_comment);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Comments can be "" if they’ve just been inserted and are pending
|
|
Packit |
4b6dd7 |
* moderation. Not much we can do about that without waiting a few
|
|
Packit |
4b6dd7 |
* minutes, which would suck in a unit test. */
|
|
Packit |
4b6dd7 |
if (g_strcmp0 (gdata_entry_get_content (GDATA_ENTRY (new_comment)), "") != 0) {
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_entry_get_content (GDATA_ENTRY (new_comment)), ==,
|
|
Packit |
4b6dd7 |
gdata_entry_get_content (GDATA_ENTRY (original_comment)));
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert (allow_empty);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_youtube_comment_get_parent_comment_uri (GDATA_YOUTUBE_COMMENT (new_comment)), ==,
|
|
Packit |
4b6dd7 |
gdata_youtube_comment_get_parent_comment_uri (original_comment));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the author of the new comment. */
|
|
Packit |
4b6dd7 |
authors = gdata_entry_get_authors (GDATA_ENTRY (new_comment));
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (g_list_length (authors), ==, 1);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
author = GDATA_AUTHOR (authors->data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_author_get_name (author), ==, "GDataTest");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_author_get_uri (author), ==, "http://www.youtube.com/user/GDataTest");
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_comment_insert (InsertCommentData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataComment *new_comment;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "comment-insert");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
new_comment = gdata_commentable_insert_comment (GDATA_COMMENTABLE (data->parent.video), GDATA_SERVICE (service), GDATA_COMMENT (data->comment),
|
|
Packit |
4b6dd7 |
NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
assert_comments_equal (new_comment, data->comment, TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (new_comment);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_CLOSURE_FUNCTIONS (insert_comment, InsertCommentData);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (comment_insert, InsertCommentData,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
gdata_commentable_insert_comment_async (GDATA_COMMENTABLE (data->parent.video), GDATA_SERVICE (service),
|
|
Packit |
4b6dd7 |
GDATA_COMMENT (data->comment), cancellable, async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataComment *new_comment;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
new_comment = gdata_commentable_insert_comment_finish (GDATA_COMMENTABLE (obj), async_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error == NULL) {
|
|
Packit |
4b6dd7 |
assert_comments_equal (new_comment, data->comment, TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (new_comment);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert (new_comment == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_comment_delete (InsertCommentData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gboolean success;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "comment-delete");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* We attempt to delete a comment which hasn't been inserted here, but that doesn't matter as the function should always immediately
|
|
Packit |
4b6dd7 |
* return an error because deleting YouTube comments isn't allowed. */
|
|
Packit |
4b6dd7 |
success = gdata_commentable_delete_comment (GDATA_COMMENTABLE (data->parent.video), GDATA_SERVICE (service), GDATA_COMMENT (data->comment),
|
|
Packit |
4b6dd7 |
NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_error (error, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN);
|
|
Packit |
4b6dd7 |
g_assert (success == FALSE);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (comment_delete, InsertCommentData,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
gdata_commentable_delete_comment_async (GDATA_COMMENTABLE (data->parent.video), GDATA_SERVICE (service),
|
|
Packit |
4b6dd7 |
GDATA_COMMENT (data->comment), cancellable, async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
gboolean success;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
success = gdata_commentable_delete_comment_finish (GDATA_COMMENTABLE (obj), async_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (error != NULL);
|
|
Packit |
4b6dd7 |
g_assert (success == FALSE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* See the note above in test_comment_delete(). */
|
|
Packit |
4b6dd7 |
if (g_error_matches (error, GDATA_SERVICE_ERROR, GDATA_SERVICE_ERROR_FORBIDDEN) == TRUE) {
|
|
Packit |
4b6dd7 |
/* Pretend no error happened so that the test succeeds. */
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
async_data->cancellation_timeout = 13;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_parsing_video_id_from_uri (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gchar *video_id;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://www.youtube.com/watch?v=BH_vwsyCrTc&feature=featured");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (video_id, ==, "BH_vwsyCrTc");
|
|
Packit |
4b6dd7 |
g_free (video_id);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://www.youtube.es/watch?v=foo");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (video_id, ==, "foo");
|
|
Packit |
4b6dd7 |
g_free (video_id);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://foobar.com/watch?v=foo");
|
|
Packit |
4b6dd7 |
g_assert (video_id == NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://foobar.com/not/real");
|
|
Packit |
4b6dd7 |
g_assert (video_id == NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://www.youtube.com/watch#!v=ylLzyHk54Z0");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (video_id, ==, "ylLzyHk54Z0");
|
|
Packit |
4b6dd7 |
g_free (video_id);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://www.youtube.com/watch#!foo=bar!v=ylLzyHk54Z0");
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (video_id, ==, "ylLzyHk54Z0");
|
|
Packit |
4b6dd7 |
g_free (video_id);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://www.youtube.com/watch#!foo=bar");
|
|
Packit |
4b6dd7 |
g_assert (video_id == NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video_id = gdata_youtube_video_get_video_id_from_uri ("http://www.youtube.com/watch#random-fragment");
|
|
Packit |
4b6dd7 |
g_assert (video_id == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_categories (gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataAPPCategories *app_categories;
|
|
Packit |
4b6dd7 |
GList *categories;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
gchar *old_locale;
|
|
Packit |
4b6dd7 |
guint old_n_results;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "categories");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
app_categories = gdata_youtube_service_get_categories (GDATA_YOUTUBE_SERVICE (service), NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_APP_CATEGORIES (app_categories));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
categories = gdata_app_categories_get_categories (app_categories);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (g_list_length (categories), >, 0);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_CATEGORY (categories->data));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Save the number of results for comparison against a different locale */
|
|
Packit |
4b6dd7 |
old_n_results = g_list_length (categories);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (app_categories);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Test with a different locale */
|
|
Packit |
4b6dd7 |
old_locale = g_strdup (gdata_service_get_locale (GDATA_SERVICE (service)));
|
|
Packit |
4b6dd7 |
gdata_service_set_locale (GDATA_SERVICE (service), "TR");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
app_categories = gdata_youtube_service_get_categories (GDATA_YOUTUBE_SERVICE (service), NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_APP_CATEGORIES (app_categories));
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
categories = gdata_app_categories_get_categories (app_categories);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (g_list_length (categories), >, 0);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_CATEGORY (categories->data));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Compare the number of results */
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (old_n_results, !=, g_list_length (categories));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (app_categories);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Reset the locale */
|
|
Packit |
4b6dd7 |
gdata_service_set_locale (GDATA_SERVICE (service), old_locale);
|
|
Packit |
4b6dd7 |
g_free (old_locale);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
GDATA_ASYNC_TEST_FUNCTIONS (categories, void,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
gdata_youtube_service_get_categories_async (GDATA_YOUTUBE_SERVICE (service), cancellable, async_ready_callback, async_data);
|
|
Packit |
4b6dd7 |
} G_STMT_END,
|
|
Packit |
4b6dd7 |
G_STMT_START {
|
|
Packit |
4b6dd7 |
GDataAPPCategories *app_categories;
|
|
Packit |
4b6dd7 |
GList *categories;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
app_categories = gdata_youtube_service_get_categories_finish (GDATA_YOUTUBE_SERVICE (obj), async_result, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (error == NULL) {
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_APP_CATEGORIES (app_categories));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
categories = gdata_app_categories_get_categories (app_categories);
|
|
Packit |
4b6dd7 |
g_assert_cmpint (g_list_length (categories), >, 0);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_CATEGORY (categories->data));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (app_categories);
|
|
Packit |
4b6dd7 |
} else {
|
|
Packit |
4b6dd7 |
g_assert (app_categories == NULL);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
} G_STMT_END);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
typedef struct {
|
|
Packit |
4b6dd7 |
GDataEntry *new_video;
|
|
Packit |
4b6dd7 |
GDataEntry *new_video2;
|
|
Packit |
4b6dd7 |
} BatchData;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
setup_batch (BatchData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataEntry *video;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "setup-batch");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* We can't insert new videos as they'd just hit the moderation queue and cause tests to fail. Instead, we rely on two videos already existing
|
|
Packit |
4b6dd7 |
* on the server with the given IDs. */
|
|
Packit |
4b6dd7 |
video = gdata_service_query_single_entry (GDATA_SERVICE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"tag:youtube.com,2008:video:RzR2k8yo4NY", NULL, GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
data->new_video = video;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
video = gdata_service_query_single_entry (GDATA_SERVICE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"tag:youtube.com,2008:video:VppEcVz8qaI", NULL, GDATA_TYPE_YOUTUBE_VIDEO,
|
|
Packit |
4b6dd7 |
NULL, &error);
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
g_assert (GDATA_IS_YOUTUBE_VIDEO (video));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
data->new_video2 = video;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_batch (BatchData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataBatchOperation *operation;
|
|
Packit |
4b6dd7 |
GDataService *service2;
|
|
Packit |
4b6dd7 |
gchar *feed_uri;
|
|
Packit |
4b6dd7 |
guint op_id, op_id2;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "batch");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Here we hardcode the feed URI, but it should really be extracted from a video feed, as the GDATA_LINK_BATCH link.
|
|
Packit |
4b6dd7 |
* It looks like this feed is read-only, so we can only test querying. */
|
|
Packit |
4b6dd7 |
operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"https://gdata.youtube.com/feeds/api/videos/batch");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Check the properties of the operation */
|
|
Packit |
4b6dd7 |
g_assert (gdata_batch_operation_get_service (operation) == service);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (gdata_batch_operation_get_feed_uri (operation), ==, "https://gdata.youtube.com/feeds/api/videos/batch");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_get (operation,
|
|
Packit |
4b6dd7 |
"service", &service2,
|
|
Packit |
4b6dd7 |
"feed-uri", &feed_uri,
|
|
Packit |
4b6dd7 |
NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (service2 == service);
|
|
Packit |
4b6dd7 |
g_assert_cmpstr (feed_uri, ==, "https://gdata.youtube.com/feeds/api/videos/batch");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_object_unref (service2);
|
|
Packit |
4b6dd7 |
g_free (feed_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Run a singleton batch operation to query one of the entries. This
|
|
Packit |
4b6dd7 |
* should now always fail, as batch operations were deprecated by v3
|
|
Packit |
4b6dd7 |
* of the YouTube API. */
|
|
Packit |
4b6dd7 |
gdata_test_batch_operation_query (operation, gdata_entry_get_id (data->new_video), GDATA_TYPE_YOUTUBE_VIDEO, data->new_video, NULL, NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (!gdata_batch_operation_run (operation, NULL, &error));
|
|
Packit |
4b6dd7 |
g_assert_error (error, GDATA_SERVICE_ERROR,
|
|
Packit |
4b6dd7 |
GDATA_SERVICE_ERROR_WITH_BATCH_OPERATION);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
g_object_unref (operation);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Run another batch operation to query the two entries */
|
|
Packit |
4b6dd7 |
operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"https://gdata.youtube.com/feeds/api/videos/batch");
|
|
Packit |
4b6dd7 |
op_id = gdata_test_batch_operation_query (operation, gdata_entry_get_id (data->new_video), GDATA_TYPE_YOUTUBE_VIDEO, data->new_video, NULL,
|
|
Packit |
4b6dd7 |
NULL);
|
|
Packit |
4b6dd7 |
op_id2 = gdata_test_batch_operation_query (operation, gdata_entry_get_id (data->new_video2), GDATA_TYPE_YOUTUBE_VIDEO, data->new_video2, NULL,
|
|
Packit |
4b6dd7 |
NULL);
|
|
Packit |
4b6dd7 |
g_assert_cmpuint (op_id, !=, op_id2);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (!gdata_batch_operation_run (operation, NULL, &error));
|
|
Packit |
4b6dd7 |
g_assert_error (error, GDATA_SERVICE_ERROR,
|
|
Packit |
4b6dd7 |
GDATA_SERVICE_ERROR_WITH_BATCH_OPERATION);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
g_object_unref (operation);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_batch_async_cb (GDataBatchOperation *operation, GAsyncResult *async_result, GMainLoop *main_loop)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (!gdata_batch_operation_run_finish (operation, async_result, &error));
|
|
Packit |
4b6dd7 |
g_assert_error (error, GDATA_SERVICE_ERROR,
|
|
Packit |
4b6dd7 |
GDATA_SERVICE_ERROR_WITH_BATCH_OPERATION);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_main_loop_quit (main_loop);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_batch_async (BatchData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataBatchOperation *operation;
|
|
Packit |
4b6dd7 |
GMainLoop *main_loop;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "batch-async");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Run an async query operation on the video */
|
|
Packit |
4b6dd7 |
operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"https://gdata.youtube.com/feeds/api/videos/batch");
|
|
Packit |
4b6dd7 |
gdata_test_batch_operation_query (operation, gdata_entry_get_id (data->new_video), GDATA_TYPE_YOUTUBE_VIDEO, data->new_video, NULL, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
main_loop = g_main_loop_new (NULL, TRUE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_batch_operation_run_async (operation, NULL, (GAsyncReadyCallback) test_batch_async_cb, main_loop);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_main_loop_run (main_loop);
|
|
Packit |
4b6dd7 |
g_main_loop_unref (main_loop);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_error (error, GDATA_SERVICE_ERROR,
|
|
Packit |
4b6dd7 |
GDATA_SERVICE_ERROR_WITH_BATCH_OPERATION);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_batch_async_cancellation_cb (GDataBatchOperation *operation, GAsyncResult *async_result, GMainLoop *main_loop)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert (gdata_batch_operation_run_finish (operation, async_result, &error) == FALSE);
|
|
Packit |
4b6dd7 |
g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_main_loop_quit (main_loop);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
test_batch_async_cancellation (BatchData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataBatchOperation *operation;
|
|
Packit |
4b6dd7 |
GMainLoop *main_loop;
|
|
Packit |
4b6dd7 |
GCancellable *cancellable;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "batch-async-cancellation");
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Run an async query operation on the video */
|
|
Packit |
4b6dd7 |
operation = gdata_batchable_create_operation (GDATA_BATCHABLE (service), gdata_youtube_service_get_primary_authorization_domain (),
|
|
Packit |
4b6dd7 |
"https://gdata.youtube.com/feeds/api/videos/batch");
|
|
Packit |
4b6dd7 |
gdata_test_batch_operation_query (operation, gdata_entry_get_id (data->new_video), GDATA_TYPE_YOUTUBE_VIDEO, data->new_video, NULL, &error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
main_loop = g_main_loop_new (NULL, TRUE);
|
|
Packit |
4b6dd7 |
cancellable = g_cancellable_new ();
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_batch_operation_run_async (operation, cancellable, (GAsyncReadyCallback) test_batch_async_cancellation_cb, main_loop);
|
|
Packit |
4b6dd7 |
g_cancellable_cancel (cancellable); /* this should cancel the operation before it even starts, as we haven't run the main loop yet */
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_main_loop_run (main_loop);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_assert_error (error, G_IO_ERROR, G_IO_ERROR_CANCELLED);
|
|
Packit |
4b6dd7 |
g_clear_error (&error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_main_loop_unref (main_loop);
|
|
Packit |
4b6dd7 |
g_object_unref (cancellable);
|
|
Packit |
4b6dd7 |
g_object_unref (operation);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
teardown_batch (BatchData *data, gconstpointer service)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
g_object_unref (data->new_video);
|
|
Packit |
4b6dd7 |
g_object_unref (data->new_video2);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
static void
|
|
Packit |
4b6dd7 |
mock_server_notify_resolver_cb (GObject *object, GParamSpec *pspec, gpointer user_data)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
UhmServer *server;
|
|
Packit |
4b6dd7 |
UhmResolver *resolver;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
server = UHM_SERVER (object);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set up the expected domain names here. This should technically be split up between
|
|
Packit |
4b6dd7 |
* the different unit test suites, but that's too much effort. */
|
|
Packit |
4b6dd7 |
resolver = uhm_server_get_resolver (server);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (resolver != NULL) {
|
|
Packit |
4b6dd7 |
const gchar *ip_address = uhm_server_get_address (server);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_resolver_add_A (resolver, "www.google.com", ip_address);
|
|
Packit |
4b6dd7 |
uhm_resolver_add_A (resolver, "www.googleapis.com", ip_address);
|
|
Packit |
4b6dd7 |
uhm_resolver_add_A (resolver, "accounts.google.com",
|
|
Packit |
4b6dd7 |
ip_address);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Set up a global GDataAuthorizer to be used for all the tests. Unfortunately,
|
|
Packit |
4b6dd7 |
* the YouTube API is limited to OAuth2 authorisation, so this requires user
|
|
Packit |
4b6dd7 |
* interaction when online.
|
|
Packit |
4b6dd7 |
*
|
|
Packit |
4b6dd7 |
* If not online, use a dummy authoriser. */
|
|
Packit |
4b6dd7 |
static GDataAuthorizer *
|
|
Packit |
4b6dd7 |
create_global_authorizer (void)
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
GDataOAuth2Authorizer *authorizer = NULL; /* owned */
|
|
Packit |
4b6dd7 |
gchar *authentication_uri, *authorisation_code;
|
|
Packit |
4b6dd7 |
GError *error = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* If not online, just return a dummy authoriser. */
|
|
Packit |
4b6dd7 |
if (!uhm_server_get_enable_online (mock_server)) {
|
|
Packit |
4b6dd7 |
return GDATA_AUTHORIZER (gdata_dummy_authorizer_new (GDATA_TYPE_YOUTUBE_SERVICE));
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Otherwise, go through the interactive OAuth dance. */
|
|
Packit |
4b6dd7 |
gdata_test_mock_server_start_trace (mock_server, "global-authentication");
|
|
Packit |
4b6dd7 |
authorizer = gdata_oauth2_authorizer_new (CLIENT_ID, CLIENT_SECRET,
|
|
Packit |
4b6dd7 |
REDIRECT_URI,
|
|
Packit |
4b6dd7 |
GDATA_TYPE_YOUTUBE_SERVICE);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get an authentication URI */
|
|
Packit |
4b6dd7 |
authentication_uri = gdata_oauth2_authorizer_build_authentication_uri (authorizer, NULL, FALSE);
|
|
Packit |
4b6dd7 |
g_assert (authentication_uri != NULL);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Get the authorisation code off the user. */
|
|
Packit |
4b6dd7 |
authorisation_code = gdata_test_query_user_for_verifier (authentication_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_free (authentication_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
if (authorisation_code == NULL) {
|
|
Packit |
4b6dd7 |
/* Skip tests. */
|
|
Packit |
4b6dd7 |
g_object_unref (authorizer);
|
|
Packit |
4b6dd7 |
authorizer = NULL;
|
|
Packit |
4b6dd7 |
goto skip_test;
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
/* Authorise the token */
|
|
Packit |
4b6dd7 |
g_assert (gdata_oauth2_authorizer_request_authorization (authorizer,
|
|
Packit |
4b6dd7 |
authorisation_code,
|
|
Packit |
4b6dd7 |
NULL, &error));
|
|
Packit |
4b6dd7 |
g_assert_no_error (error);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
skip_test:
|
|
Packit |
4b6dd7 |
g_free (authorisation_code);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
uhm_server_end_trace (mock_server);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return GDATA_AUTHORIZER (authorizer);
|
|
Packit |
4b6dd7 |
}
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
int
|
|
Packit |
4b6dd7 |
main (int argc, char *argv[])
|
|
Packit |
4b6dd7 |
{
|
|
Packit |
4b6dd7 |
gint retval;
|
|
Packit |
4b6dd7 |
GDataAuthorizer *authorizer = NULL; /* owned */
|
|
Packit |
4b6dd7 |
GDataService *service = NULL; /* owned */
|
|
Packit |
4b6dd7 |
GFile *trace_directory = NULL; /* owned */
|
|
Packit |
4b6dd7 |
gchar *path = NULL;
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
gdata_test_init (argc, argv);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
mock_server = gdata_test_get_mock_server ();
|
|
Packit |
4b6dd7 |
g_signal_connect (G_OBJECT (mock_server), "notify::resolver",
|
|
Packit |
4b6dd7 |
(GCallback) mock_server_notify_resolver_cb, NULL);
|
|
Packit |
4b6dd7 |
path = g_test_build_filename (G_TEST_DIST, "traces/youtube", NULL);
|
|
Packit |
4b6dd7 |
trace_directory = g_file_new_for_path (path);
|
|
Packit |
4b6dd7 |
g_free (path);
|
|
Packit |
4b6dd7 |
uhm_server_set_trace_directory (mock_server, trace_directory);
|
|
Packit |
4b6dd7 |
g_object_unref (trace_directory);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
authorizer = create_global_authorizer ();
|
|
Packit |
4b6dd7 |
service = GDATA_SERVICE (gdata_youtube_service_new (DEVELOPER_KEY,
|
|
Packit |
4b6dd7 |
authorizer));
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/authentication", test_authentication);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/standard_feeds", service, test_query_standard_feeds);
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/standard_feed", service, test_query_standard_feed);
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/standard_feed/with_query", service, test_query_standard_feed_with_query);
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/standard_feed/error", service, test_query_standard_feed_error);
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/standard_feed/timeout", service, test_query_standard_feed_timeout);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/query/standard_feed/async", StandardFeedData,
|
|
Packit |
4b6dd7 |
service, set_up_standard_feed_async,
|
|
Packit |
4b6dd7 |
(void (*)(StandardFeedData *, const void *)) test_query_standard_feed_async,
|
|
Packit |
4b6dd7 |
tear_down_standard_feed_async);
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/standard_feed/async/progress_closure", service, test_query_standard_feed_async_progress_closure);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/query/standard_feed/async/cancellation",
|
|
Packit |
4b6dd7 |
StandardFeedData, service, set_up_standard_feed_async,
|
|
Packit |
4b6dd7 |
(void (*)(StandardFeedData *, const void *)) test_query_standard_feed_async_cancellation,
|
|
Packit |
4b6dd7 |
tear_down_standard_feed_async);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/related", service, test_query_related);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/query/related/async", GDataAsyncTestData, service, gdata_set_up_async_test_data, test_query_related_async,
|
|
Packit |
4b6dd7 |
gdata_tear_down_async_test_data);
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/related/async/progress_closure", service, test_query_related_async_progress_closure);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/query/related/async/cancellation", GDataAsyncTestData, service, gdata_set_up_async_test_data,
|
|
Packit |
4b6dd7 |
test_query_related_async_cancellation, gdata_tear_down_async_test_data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/upload/simple", UploadData, service, set_up_upload, test_upload_simple, tear_down_upload);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/upload/async", GDataAsyncTestData, service, set_up_upload_async, test_upload_async, tear_down_upload_async);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/upload/async/cancellation", GDataAsyncTestData, service, set_up_upload_async, test_upload_async_cancellation,
|
|
Packit |
4b6dd7 |
tear_down_upload_async);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/query/single", service, test_query_single);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/query/single/async", GDataAsyncTestData, service, gdata_set_up_async_test_data, test_query_single_async,
|
|
Packit |
4b6dd7 |
gdata_tear_down_async_test_data);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/query/single/async/cancellation", GDataAsyncTestData, service, gdata_set_up_async_test_data,
|
|
Packit |
4b6dd7 |
test_query_single_async_cancellation, gdata_tear_down_async_test_data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/query", CommentData, service, set_up_comment, test_comment_query, tear_down_comment);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/query/async", GDataAsyncTestData, service, set_up_comment_async, test_comment_query_async,
|
|
Packit |
4b6dd7 |
tear_down_comment_async);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/query/async/cancellation", GDataAsyncTestData, service, set_up_comment_async,
|
|
Packit |
4b6dd7 |
test_comment_query_async_cancellation, tear_down_comment_async);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/query/async/progress_closure", CommentData, service, set_up_comment,
|
|
Packit |
4b6dd7 |
test_comment_query_async_progress_closure, tear_down_comment);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/insert", InsertCommentData, service, set_up_insert_comment, test_comment_insert,
|
|
Packit |
4b6dd7 |
tear_down_insert_comment);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/insert/async", GDataAsyncTestData, service, set_up_insert_comment_async, test_comment_insert_async,
|
|
Packit |
4b6dd7 |
tear_down_insert_comment_async);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/insert/async/cancellation", GDataAsyncTestData, service, set_up_insert_comment_async,
|
|
Packit |
4b6dd7 |
test_comment_insert_async_cancellation, tear_down_insert_comment_async);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/delete", InsertCommentData, service, set_up_insert_comment, test_comment_delete,
|
|
Packit |
4b6dd7 |
tear_down_insert_comment);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/delete/async", GDataAsyncTestData, service, set_up_insert_comment_async, test_comment_delete_async,
|
|
Packit |
4b6dd7 |
tear_down_insert_comment_async);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/comment/delete/async/cancellation", GDataAsyncTestData, service, set_up_insert_comment_async,
|
|
Packit |
4b6dd7 |
test_comment_delete_async_cancellation, tear_down_insert_comment_async);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_data_func ("/youtube/categories", service, test_categories);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/categories/async", GDataAsyncTestData, service, gdata_set_up_async_test_data, test_categories_async,
|
|
Packit |
4b6dd7 |
gdata_tear_down_async_test_data);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/categories/async/cancellation", GDataAsyncTestData, service, gdata_set_up_async_test_data,
|
|
Packit |
4b6dd7 |
test_categories_async_cancellation, gdata_tear_down_async_test_data);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/batch", BatchData, service, setup_batch, test_batch, teardown_batch);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/batch/async", BatchData, service, setup_batch, test_batch_async, teardown_batch);
|
|
Packit |
4b6dd7 |
g_test_add ("/youtube/batch/async/cancellation", BatchData, service, setup_batch, test_batch_async_cancellation, teardown_batch);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/service/properties", test_service_properties);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/parsing/app:control", test_parsing_app_control);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/parsing/yt:recorded", test_parsing_yt_recorded);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/parsing/yt:accessControl", test_parsing_yt_access_control);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/parsing/yt:category", test_parsing_yt_category);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/parsing/video_id_from_uri", test_parsing_video_id_from_uri);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/parsing/georss:where", test_parsing_georss_where);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/parsing/ratings", test_parsing_ratings);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/video/escaping", test_video_escaping);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/video/location", test_video_location);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/comment/get_json", test_comment_get_json);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/comment/properties/parent-comment-id", test_comment_properties_parent_comment_uri);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/query/uri", test_query_uri);
|
|
Packit |
4b6dd7 |
g_test_add_func ("/youtube/query/etag", test_query_etag);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
retval = g_test_run ();
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
g_clear_object (&service);
|
|
Packit |
4b6dd7 |
g_clear_object (&authorizer);
|
|
Packit |
4b6dd7 |
|
|
Packit |
4b6dd7 |
return retval;
|
|
Packit |
4b6dd7 |
}
|