From add7aec03abe17fb13e3c3e77f4a97765006ccb4 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Wed, 24 Aug 2022 17:07:45 +0000 Subject: [PATCH] tests: Add tests for digest Signed-off-by: Michael Tremer --- .gitignore | 1 + Makefile.am | 15 ++++++ tests/data/digest/random | Bin 0 -> 65536 bytes tests/libpakfire/digest.c | 93 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 tests/data/digest/random create mode 100644 tests/libpakfire/digest.c diff --git a/.gitignore b/.gitignore index 62da71d58..949a9b680 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ /tests/libpakfire/config /tests/libpakfire/db /tests/libpakfire/dependencies +/tests/libpakfire/digest /tests/libpakfire/downloader /tests/libpakfire/execute /tests/libpakfire/file diff --git a/Makefile.am b/Makefile.am index ac558803a..e1a5f89f2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -382,6 +382,7 @@ check_PROGRAMS += \ tests/libpakfire/config \ tests/libpakfire/db \ tests/libpakfire/dependencies \ + tests/libpakfire/digest \ tests/libpakfire/downloader \ tests/libpakfire/file \ tests/libpakfire/jail \ @@ -503,6 +504,18 @@ tests_libpakfire_dependencies_CFLAGS = \ tests_libpakfire_dependencies_LDADD = \ $(TESTSUITE_LDADD) +dist_tests_libpakfire_digest_SOURCES = \ + tests/libpakfire/digest.c + +tests_libpakfire_digest_CPPFLAGS = \ + $(TESTSUITE_CPPFLAGS) + +tests_libpakfire_digest_CFLAGS = \ + $(TESTSUITE_CFLAGS) + +tests_libpakfire_digest_LDADD = \ + $(TESTSUITE_LDADD) + dist_tests_libpakfire_downloader_SOURCES = \ tests/libpakfire/downloader.c @@ -878,6 +891,8 @@ EXTRA_DIST += \ tests/data/compress/data.xz \ tests/data/compress/data.zst \ \ + tests/data/digest/random \ + \ tests/data/packages/dummy/dummy.nm \ \ tests/data/parser/test-comments.txt \ diff --git a/tests/data/digest/random b/tests/data/digest/random new file mode 100644 index 0000000000000000000000000000000000000000..9fe2a89edff107794feb4f2f489fb2319f30de42 GIT binary patch literal 65536 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

%QFocr0aYyfue+|)dE>}nc70( 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 literal 0 Hc-jL100001 diff --git a/tests/libpakfire/digest.c b/tests/libpakfire/digest.c new file mode 100644 index 000000000..1084eedfc --- /dev/null +++ b/tests/libpakfire/digest.c @@ -0,0 +1,93 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2022 Pakfire development team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +#############################################################################*/ + +#include +#include + +#include "../testsuite.h" + +// Just a file with some random data +const char* RANDOM_FILE = ABS_TOP_SRCDIR "/tests/data/digest/random"; + +static const struct pakfire_digests expected_digests = { + .sha512 = { + 0xa1, 0x98, 0x97, 0x9b, 0x13, 0x44, 0xf3, 0x64, 0x48, 0x0e, 0x0f, 0xd1, + 0xbc, 0xde, 0x8f, 0x50, 0xf3, 0x3c, 0x92, 0x8e, 0xf0, 0xe7, 0x5d, 0x6e, + 0x1a, 0x28, 0x67, 0x1e, 0x16, 0x49, 0x7b, 0xc2, 0xd6, 0x64, 0xe5, 0x21, + 0x12, 0x60, 0x0f, 0x56, 0x3d, 0x8f, 0x0a, 0x7c, 0x24, 0x1a, 0x7e, 0x5a, + 0x16, 0xe7, 0xe7, 0x27, 0x33, 0xd9, 0x66, 0xb5, 0x0a, 0x39, 0x6d, 0xa8, + 0xb2, 0xb4, 0xac, 0x05, + }, + .sha256 = { + 0x16, 0xf9, 0x01, 0xc1, 0x83, 0x31, 0x43, 0x88, 0x4f, 0x16, 0x6a, 0xe4, + 0x81, 0x34, 0x51, 0x99, 0xcf, 0x91, 0x94, 0xa3, 0xb6, 0x01, 0x75, 0xd9, + 0xb9, 0xca, 0x93, 0xd9, 0xd7, 0xa0, 0x4b, 0xa6, + }, +}; + +static int test_init(const struct test* t) { + struct pakfire_digests digests = PAKFIRE_DIGESTS_INIT; + + // Check if everything is initialized correctly + ASSERT(pakfire_digest_set(digests.sha512) == 0); + ASSERT(pakfire_digest_set(digests.sha256) == 0); + + return EXIT_SUCCESS; + +FAIL: + return EXIT_FAILURE; +} + +static int test_random(const struct test* t) { + struct pakfire_digests digests = PAKFIRE_DIGESTS_INIT; + FILE* f = NULL; + int r = EXIT_FAILURE; + + ASSERT(f = fopen(RANDOM_FILE, "r")); + + // Compute digests + ASSERT_SUCCESS(pakfire_digests_compute_from_file(t->pakfire, &digests, + PAKFIRE_DIGESTS_ALL, f)); + + // Compare the digests + ASSERT_SUCCESS(pakfire_digests_compare(t->pakfire, + &digests, &expected_digests, PAKFIRE_DIGESTS_ALL)); + + // Check if the individual digests match + ASSERT_SUCCESS(pakfire_digests_compare_one(t->pakfire, &digests, + PAKFIRE_DIGEST_SHA512, expected_digests.sha512, sizeof(expected_digests.sha512))); + ASSERT_SUCCESS(pakfire_digests_compare_one(t->pakfire, &digests, + PAKFIRE_DIGEST_SHA256, expected_digests.sha256, sizeof(expected_digests.sha256))); + + r = EXIT_SUCCESS; + +FAIL: + if (f) + fclose(f); + + return r; +} + +int main(int argc, const char* argv[]) { + testsuite_add_test(test_init); + testsuite_add_test(test_random); + + return testsuite_run(argc, argv); +} -- 2.47.3