From 35ed7247f4973da57c26133927c8ac92c0c57ee8 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 30 Nov 2017 12:46:32 +0100 Subject: [PATCH] testsuite: Add some tests to test handling keys Signed-off-by: Michael Tremer --- .gitignore | 1 + Makefile.am | 14 ++++++- tests/libpakfire/key.c | 84 ++++++++++++++++++++++++++++++++++++++++++ tests/libpakfire/key.h | 47 +++++++++++++++++++++++ 4 files changed, 145 insertions(+), 1 deletion(-) create mode 100644 tests/libpakfire/key.c create mode 100644 tests/libpakfire/key.h diff --git a/.gitignore b/.gitignore index 26aa7688a..8b8ec923e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ /src/scripts/extract-debuginfo /src/systemd/*.service /tests/.data +/tests/libpakfire/key /tests/libpakfire/main /tmp *.py[co] diff --git a/Makefile.am b/Makefile.am index 0b1254d16..7b9b3030b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -322,7 +322,8 @@ EXTRA_DIST += \ src/libpakfire/libpakfire.sym check_PROGRAMS += \ - tests/libpakfire/main + tests/libpakfire/main \ + tests/libpakfire/key dist_tests_libpakfire_main_SOURCES = \ tests/libpakfire/main.c @@ -334,6 +335,17 @@ tests_libpakfire_main_LDADD = \ $(TESTSUITE_LDADD) \ $(PAKFIRE_LIBS) +tests_libpakfire_key_SOURCES = \ + tests/libpakfire/key.c \ + tests/libpakfire/key.h + +tests_libpakfire_key_CPPFLAGS = \ + $(TESTSUITE_CPPFLAGS) + +tests_libpakfire_key_LDADD = \ + $(TESTSUITE_LDADD) \ + $(PAKFIRE_LIBS) + # ------------------------------------------------------------------------------ lib_LTLIBRARIES += \ diff --git a/tests/libpakfire/key.c b/tests/libpakfire/key.c new file mode 100644 index 000000000..274796594 --- /dev/null +++ b/tests/libpakfire/key.c @@ -0,0 +1,84 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2017 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 "../testsuite.h" + +#include + +#include "key.h" +#include "pakfire.h" + +int test_init(const test_t* t) { + Pakfire pakfire = init_pakfire(); + if (!pakfire) + return EXIT_FAILURE; + + // Try loading any keys & delete them all + PakfireKey* keys = pakfire_key_list(pakfire); + while (keys && *keys) { + PakfireKey key = *keys++; + + pakfire_key_delete(key); + pakfire_key_unref(key); + } + + // Load list of keys again + keys = pakfire_key_list(pakfire); + + // Must be empty now + assert_return(keys == NULL, EXIT_FAILURE); + + return EXIT_SUCCESS; +} + +int test_import(const test_t* t) { + Pakfire pakfire = init_pakfire(); + if (!pakfire) + return EXIT_FAILURE; + + // Try to delete the key just in case it + // has been imported before + PakfireKey key = pakfire_key_get(pakfire, TEST_KEY_FINGERPRINT); + if (key) { + pakfire_key_delete(key); + pakfire_key_unref(key); + } + + // Import a key + PakfireKey* keys = pakfire_key_import(pakfire, TEST_KEY_DATA); + + // We should have a list with precisely one key object + assert_return(keys, EXIT_FAILURE); + assert_return(keys[0] != NULL, EXIT_FAILURE); + assert_return(keys[1] == NULL, EXIT_FAILURE); + + return EXIT_SUCCESS; +} + +int main(int argc, char** argv) { + testsuite_init(); + + testsuite_t* ts = testsuite_create(2); + + testsuite_add_test(ts, "test_init", test_init); + testsuite_add_test(ts, "test_import", test_import); + + return testsuite_run(ts); +} diff --git a/tests/libpakfire/key.h b/tests/libpakfire/key.h new file mode 100644 index 000000000..95d285c33 --- /dev/null +++ b/tests/libpakfire/key.h @@ -0,0 +1,47 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2017 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 . # +# # +#############################################################################*/ + +const char* TEST_KEY_FINGERPRINT = "E63B4976A575A3B2544AC15E726D8B0B0889B04E"; + +const char* TEST_KEY_DATA = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\n" +"mQINBE/ndRQBEAC5ykX6wgPdR42ZkTdrcVS9fIACn/n/ed7K/dWlUtANnAtoH27Qp+I/vKy9\n" +"DwGUjDe5ST8l4td+gzZNwWowTnLr6zULG+dBDPNL1SZrL7sxLfjuEyOAAFcMTI8hKqwCQfSz\n" +"OJVX4X7mfSDgewqFjDO1a1gkJUXnq8xMNJa6fTH61qVPXmwBpR4JgzrtH4FmvuXjocKZ4+/B\n" +"NwD80ChfiwwNjwTv0ykdXhV6aEtqg9sfFRB/BGUIBDUOlG6i8VCNQ0X1rAcyO2waj6cAfYVE\n" +"HbD4POMIWhaBvfKnYUuUyPoSDjcgIWIrHmdBHuM/zbLjAfIoh/Lk16UnU6DBjsMdtq6d9HWD\n" +"OWRQOXigwKHiRZD9QQDPxTb8w6EAu/UFzHNUCD7O0rS2KmugZMk/Q0ijhVCfC6MXTu7Vjg3c\n" +"tjf7ZE2kvhKs5I6j3lTCLm23WYcRefKJQ/9Ab1d6bYoOwNpQFdP0duYyP2TC1cSC5Cs8h7pE\n" +"nI1yB9B+Fu6fqNyIhgo9fbh29+F8K/KYT0UifsTvBNTv2bf+23IbFR3EC3WWEdvars1h9mTK\n" +"g8bbyKNxXrWXrPUb+TWovaTpzpRNqOYDa5tqh9Q/0e1mkNcjJbBK/2HxAT4hi69Dfswr0cYh\n" +"IwpH3fTwlZPpBjEOVz5VyAaZyjjJHweRhz5YJUgPt7J9/tTmGQARAQABtEVJUEZpcmUgQnVp\n" +"bGRzZXJ2ZXIgY29ybmVsaXVzLmlwZmlyZS5vcmcgPHBha2ZpcmUtYnVpbGRlcnNAaXBmaXJl\n" +"Lm9yZz6JAjgEEwECACIFAk/ndRQCGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEHJt\n" +"iwsIibBOdqsP/1EVKVgFxiMVcRTP5VYV2+EV/CaiaqMzC488AGRq8LYMzq/hqj0w+lbCl6AG\n" +"25Aqf6UX8VMgkPr5pIy/IZqZgQ0N7fX6Vw0mhR/2zAHItvuff8zCM2Sp682CRahn1SB9oWjl\n" +"bJZwHJPVkLVqAxs5f1EyXstl8NNrVJQ0rZKWvfTKJL6kCYitnNuat4BB/uv2aNB8MiMlwJj6\n" +"DtO6uGagw3lkR9w+PL0lW2auQqE6Ia6CIdOT43qQ/Is7SnmL5uS5/uwNgdZ1ayCMPM+xeJrH\n" +"A7MTQKVDcyTmkIriO7qRaaPsPkhqfD/vjurWQ+Hx9XTUUk3QeCpZfXLGB+ZNLg2+kxanSoQ0\n" +"JbB8V7OMOi7Z8y0U0vXKTn1cKIzrXB1/GvwpYPZAmFgcOqXoNF3Qs7ilud3bxomG8nBHWNBA\n" +"1w+rzMYQbwCow7GkknniaB+ZzkPB+8+1jul4U5rtGeFyloyHy6WO2WKk7nsou/i3vfpVHRzh\n" +"9XVkEYesGrAIJqrpfJYgAbzRSUyPoFoIBhC7p8emKr/TTzzc90s5EPlqkxE/BRPvkqW+4HjS\n" +"ybOFv4fii7qGdpNrnXTACB2v06Y+TpUGXVA5+Ac+5Zn5F/++tUnvZ9eCT1VmUhw+wDV7qQtq\n" +"gVwRjTWnu8cc9uoZbKK1Qifehl11xi4hp+YZmv/7eOg1LWeR\n" +"=XdHO\n\n" +"-----END PGP PUBLIC KEY BLOCK-----\n"; -- 2.39.5