]> git.ipfire.org Git - pakfire.git/commitdiff
testsuite: Add some tests to test handling keys
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 30 Nov 2017 11:46:32 +0000 (12:46 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 30 Nov 2017 11:46:32 +0000 (12:46 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
.gitignore
Makefile.am
tests/libpakfire/key.c [new file with mode: 0644]
tests/libpakfire/key.h [new file with mode: 0644]

index 26aa7688a217a58cfba0f14a45500c12e41a2219..8b8ec923e9818daa68d9d6eae850f397b7a6f248 100644 (file)
@@ -10,6 +10,7 @@
 /src/scripts/extract-debuginfo
 /src/systemd/*.service
 /tests/.data
+/tests/libpakfire/key
 /tests/libpakfire/main
 /tmp
 *.py[co]
index 0b1254d16e54302476136f0e9b138009bbead74f..7b9b3030bf76c819e7baf7a503b899349afe8503 100644 (file)
@@ -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 (file)
index 0000000..2747965
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+#############################################################################*/
+
+#include "../testsuite.h"
+
+#include <pakfire/key.h>
+
+#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 (file)
index 0000000..95d285c
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.       #
+#                                                                             #
+#############################################################################*/
+
+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";