From f78b4454b132736c7982a4cf2916a318ed24e3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ale=C5=A1=20Mat=C4=9Bj?= Date: Fri, 7 Jun 2019 13:26:41 +0200 Subject: [PATCH] Add tests for checking if package contains forbidden control chars --- tests/fixtures.h | 107 ++++++++++++++++++++++++++++++++++ tests/test_koji.c | 20 ------- tests/test_sqlite.c | 95 ------------------------------ tests/test_xml_dump.c | 81 ++++++++++++++++++++++++- tests/test_xml_dump_primary.c | 107 ---------------------------------- 5 files changed, 187 insertions(+), 223 deletions(-) diff --git a/tests/fixtures.h b/tests/fixtures.h index 594812b6..35d0844a 100644 --- a/tests/fixtures.h +++ b/tests/fixtures.h @@ -106,4 +106,111 @@ #define TEST_UPDATEINFO_02 TEST_UPDATEINFO_FILES_PATH"updateinfo_02.xml.xz" #define TEST_UPDATEINFO_03 TEST_UPDATEINFO_FILES_PATH"updateinfo_03.xml" +#include "createrepo/package.h" + +cr_Package * +get_package() +{ + cr_Package *p; + cr_Dependency *dep; + cr_PackageFile *file; + + p = cr_package_new(); + p->pkgId = "123456"; + p->name = "foo"; + p->arch = "x86_64"; + p->version = "1.2.3"; + p->epoch = "1"; + p->release = "2"; + p->summary = "foo package"; + p->description = "super cool package"; + p->url = "http://package.com"; + p->time_file = 123456; + p->time_build = 234567; + p->rpm_license = "GPL"; + p->rpm_vendor = NULL; + p->rpm_group = NULL; + p->rpm_buildhost = NULL; + p->rpm_sourcerpm = "foo.src.rpm"; + p->rpm_header_start = 20; + p->rpm_header_end = 120; + p->rpm_packager = NULL; + p->size_package = 123; + p->size_installed = 20; + p->size_archive = 30; + p->location_href = "foo.rpm"; + p->location_base = "/test/"; + p->checksum_type = "sha256"; + + dep = cr_dependency_new(); + dep->name = "foobar_provide"; + dep->flags = NULL; + dep->pre = FALSE; + p->provides = (g_slist_prepend(p->provides, dep)); + + dep = cr_dependency_new(); + dep->name = "foobar_dep"; + dep->flags = NULL; + dep->pre = FALSE; + dep->epoch = "3"; + p->requires = (g_slist_prepend(p->requires, dep)); + + dep = cr_dependency_new(); + dep->name = "foobar_pre_dep"; + dep->flags = "LE"; + dep->epoch = "3"; + dep->pre = TRUE; + p->requires = g_slist_prepend(p->requires, dep); + + file = cr_package_file_new(); + file->type = ""; + file->path = "/bin/"; + file->name = "foo"; + p->files = g_slist_prepend(p->files, file); + + file = cr_package_file_new(); + file->type = "dir"; + file->path = "/var/foo/"; + file->name = NULL; + p->files = g_slist_prepend(p->files, file); + + file = cr_package_file_new(); + file->type = "dir"; + file->path = "/var/foo/"; + file->name = "baz"; + p->files = g_slist_prepend(p->files, file); + return p; +} + +cr_Package * +get_empty_package() +{ + cr_Package *p; + cr_Dependency *dep; + cr_PackageFile *file; + + p = cr_package_new(); + p->name = "foo"; + + dep = cr_dependency_new(); + dep->name = NULL; + dep->flags = NULL; + dep->pre = FALSE; + p->requires = (g_slist_prepend(p->requires, dep)); + + dep = cr_dependency_new(); + dep->name = NULL; + dep->flags = NULL; + dep->pre = TRUE; + p->requires = g_slist_prepend(p->requires, dep); + + file = cr_package_file_new(); + file->type = NULL; + file->path = NULL; + file->name = NULL; + p->files = g_slist_prepend(p->files, file); + + return p; +} + #endif diff --git a/tests/test_koji.c b/tests/test_koji.c index 1aca6b6c..a3438188 100644 --- a/tests/test_koji.c +++ b/tests/test_koji.c @@ -23,26 +23,6 @@ #include "createrepo/koji.h" #include "createrepo/load_metadata.h" -cr_Package * -get_package() -{ - cr_Package *p; - cr_Dependency *dep; - cr_PackageFile *file; - - p = cr_package_new(); - p->pkgId = "123456"; - p->name = "foo"; - p->arch = "x86_64"; - p->version = "1.2.3"; - p->epoch = "1"; - p->release = "2"; - p->summary = "foo package"; - p->rpm_sourcerpm = "foo.src.rpm"; - - return p; -} - // Tests static void diff --git a/tests/test_sqlite.c b/tests/test_sqlite.c index dba115fc..921961af 100644 --- a/tests/test_sqlite.c +++ b/tests/test_sqlite.c @@ -44,101 +44,6 @@ typedef struct { } TestData; -cr_Package * -get_package() -{ - cr_Package *p; - cr_Dependency *dep; - cr_PackageFile *file; - - p = cr_package_new(); - p->pkgId = "123456"; - p->name = "foo"; - p->arch = "x86_64"; - p->version = "1.2.3"; - p->epoch = "1"; - p->release = "2"; - p->summary = "foo package"; - p->description = "super cool package"; - p->url = "http://package.com"; - p->time_file = 123456; - p->time_build = 234567; - p->rpm_license = "GPL"; - p->rpm_vendor = NULL; - p->rpm_group = NULL; - p->rpm_buildhost = NULL; - p->rpm_sourcerpm = "foo.src.rpm"; - p->rpm_header_start = 20; - p->rpm_header_end = 120; - p->rpm_packager = NULL; - p->size_package = 123; - p->size_installed = 20; - p->size_archive = 30; - p->location_href = "foo.rpm"; - p->location_base = NULL; - p->checksum_type = "sha256"; - - dep = cr_dependency_new(); - dep->name = "foobar_dep"; - dep->flags = NULL; - dep->pre = FALSE; - p->requires = (g_slist_prepend(p->requires, dep)); - - dep = cr_dependency_new(); - dep->name = "foobar_pre_dep"; - dep->flags = "LE"; - dep->pre = TRUE; - p->requires = g_slist_prepend(p->requires, dep); - - file = cr_package_file_new(); - file->type = ""; - file->path = "/bin/"; - file->name = "foo"; - p->files = g_slist_prepend(p->files, file); - - file = cr_package_file_new(); - file->type = "dir"; - file->path = "/var/foo/"; - file->name = NULL; - p->files = g_slist_prepend(p->files, file); - - return p; -} - - - -cr_Package * -get_empty_package() -{ - cr_Package *p; - cr_Dependency *dep; - cr_PackageFile *file; - - p = cr_package_new(); - p->name = "foo"; - - dep = cr_dependency_new(); - dep->name = NULL; - dep->flags = NULL; - dep->pre = FALSE; - p->requires = (g_slist_prepend(p->requires, dep)); - - dep = cr_dependency_new(); - dep->name = NULL; - dep->flags = NULL; - dep->pre = TRUE; - p->requires = g_slist_prepend(p->requires, dep); - - file = cr_package_file_new(); - file->type = NULL; - file->path = NULL; - file->name = NULL; - p->files = g_slist_prepend(p->files, file); - - return p; -} - - static void testdata_setup(TestData *testdata, G_GNUC_UNUSED gconstpointer test_data) diff --git a/tests/test_xml_dump.c b/tests/test_xml_dump.c index fdfcbf79..c31bb9f2 100644 --- a/tests/test_xml_dump.c +++ b/tests/test_xml_dump.c @@ -28,6 +28,71 @@ test_cr_prepend_protocol_01(void) g_free(prepended_url); } +static void +test_cr_Package_contains_forbidden_control_chars_01(void) +{ + cr_Package *p = get_package(); + g_assert(!cr_Package_contains_forbidden_control_chars(p)); +} + +static void +test_cr_Package_contains_forbidden_control_chars_02(void) +{ + cr_Package *p = get_package(); + p->name = "foo"; + + g_assert(cr_Package_contains_forbidden_control_chars(p)); +} + +static void +test_cr_Package_contains_forbidden_control_chars_03(void) +{ + cr_Package *p = get_package(); + p->summary = "foo"; + + g_assert(cr_Package_contains_forbidden_control_chars(p)); +} + +static void +test_cr_Package_contains_forbidden_control_chars_04(void) +{ + cr_Package *p = get_package(); + cr_Dependency *dep = p->requires->data; + dep->name = "foobar_dep"; + + g_assert(cr_Package_contains_forbidden_control_chars(p)); +} + +static void +test_cr_Package_contains_forbidden_control_chars_05(void) +{ + cr_Package *p = get_package(); + cr_PackageFile *file = p->files->data; + file->name = "obar_dep"; + + g_assert(cr_Package_contains_forbidden_control_chars(p)); +} + +static void +test_cr_GSList_of_cr_Dependency_contains_forbidden_control_chars_01(void) +{ + cr_Package *p = get_package(); + cr_Dependency *dep = p->requires->data; + dep->name = "foobar_dep"; + + g_assert(cr_GSList_of_cr_Dependency_contains_forbidden_control_chars(p->requires)); +} + +static void +test_cr_GSList_of_cr_Dependency_contains_forbidden_control_chars_02(void) +{ + cr_Package *p = get_package(); + cr_Dependency *dep = p->requires->data; + dep->name = "fo badep"; + + g_assert(!cr_GSList_of_cr_Dependency_contains_forbidden_control_chars(p->requires)); +} + int main(int argc, char *argv[]) { @@ -35,8 +100,22 @@ main(int argc, char *argv[]) g_test_add_func("/xml_dump/test_cr_prepend_protocol_00", test_cr_prepend_protocol_00); - g_test_add_func("/xml_dump/test_cr_prepend_protocol_01", test_cr_prepend_protocol_01); + + g_test_add_func("/xml_dump/test_cr_Package_contains_forbidden_control_chars_01", + test_cr_Package_contains_forbidden_control_chars_01); + g_test_add_func("/xml_dump/test_cr_Package_contains_forbidden_control_chars_02", + test_cr_Package_contains_forbidden_control_chars_02); + g_test_add_func("/xml_dump/test_cr_Package_contains_forbidden_control_chars_03", + test_cr_Package_contains_forbidden_control_chars_03); + g_test_add_func("/xml_dump/test_cr_Package_contains_forbidden_control_chars_04", + test_cr_Package_contains_forbidden_control_chars_04); + g_test_add_func("/xml_dump/test_cr_Package_contains_forbidden_control_chars_05", + test_cr_Package_contains_forbidden_control_chars_05); + g_test_add_func("/xml_dump/test_cr_GSList_of_cr_Dependency_contains_forbidden_control_chars_01", + test_cr_GSList_of_cr_Dependency_contains_forbidden_control_chars_01); + g_test_add_func("/xml_dump/test_cr_GSList_of_cr_Dependency_contains_forbidden_control_chars_02", + test_cr_GSList_of_cr_Dependency_contains_forbidden_control_chars_02); return g_test_run(); } diff --git a/tests/test_xml_dump_primary.c b/tests/test_xml_dump_primary.c index 9bfc4e1f..1e4d9b1b 100644 --- a/tests/test_xml_dump_primary.c +++ b/tests/test_xml_dump_primary.c @@ -4,118 +4,11 @@ #include "fixtures.h" #include "createrepo/error.h" #include "createrepo/load_metadata.h" -#include "createrepo/package.h" #include "createrepo/misc.h" #include "createrepo/xml_dump_primary.c" #define IF_NULL_EMPTY(x) (x) ? x : "" -cr_Package * -get_package() -{ - cr_Package *p; - cr_Dependency *dep; - cr_PackageFile *file; - - p = cr_package_new(); - p->pkgId = "123456"; - p->name = "foo"; - p->arch = "x86_64"; - p->version = "1.2.3"; - p->epoch = "1"; - p->release = "2"; - p->summary = "foo package"; - p->description = "super cool package"; - p->url = "http://package.com"; - p->time_file = 123456; - p->time_build = 234567; - p->rpm_license = "GPL"; - p->rpm_vendor = NULL; - p->rpm_group = NULL; - p->rpm_buildhost = NULL; - p->rpm_sourcerpm = "foo.src.rpm"; - p->rpm_header_start = 20; - p->rpm_header_end = 120; - p->rpm_packager = NULL; - p->size_package = 123; - p->size_installed = 20; - p->size_archive = 30; - p->location_href = "foo.rpm"; - p->location_base = "/test/"; - p->checksum_type = "sha256"; - - dep = cr_dependency_new(); - dep->name = "foobar_provide"; - dep->flags = NULL; - dep->pre = FALSE; - p->provides = (g_slist_prepend(p->provides, dep)); - - dep = cr_dependency_new(); - dep->name = "foobar_dep"; - dep->flags = NULL; - dep->pre = FALSE; - dep->epoch = "3"; - p->requires = (g_slist_prepend(p->requires, dep)); - - dep = cr_dependency_new(); - dep->name = "foobar_pre_dep"; - dep->flags = "LE"; - dep->epoch = "3"; - dep->pre = TRUE; - p->requires = g_slist_prepend(p->requires, dep); - - file = cr_package_file_new(); - file->type = ""; - file->path = "/bin/"; - file->name = "foo"; - p->files = g_slist_prepend(p->files, file); - - file = cr_package_file_new(); - file->type = "dir"; - file->path = "/var/foo/"; - file->name = NULL; - p->files = g_slist_prepend(p->files, file); - - file = cr_package_file_new(); - file->type = "dir"; - file->path = "/var/foo/"; - file->name = "baz"; - p->files = g_slist_prepend(p->files, file); - return p; -} - -cr_Package * -get_empty_package() -{ - cr_Package *p; - cr_Dependency *dep; - cr_PackageFile *file; - - p = cr_package_new(); - p->name = "foo"; - - dep = cr_dependency_new(); - dep->name = NULL; - dep->flags = NULL; - dep->pre = FALSE; - p->requires = (g_slist_prepend(p->requires, dep)); - - dep = cr_dependency_new(); - dep->name = NULL; - dep->flags = NULL; - dep->pre = TRUE; - p->requires = g_slist_prepend(p->requires, dep); - - file = cr_package_file_new(); - file->type = NULL; - file->path = NULL; - file->name = NULL; - p->files = g_slist_prepend(p->files, file); - - return p; -} - - xmlNodePtr cmp_package_files_and_xml(GSList *files, xmlNodePtr current, int only_primary_files) { if (!current || !files) {