LCOV - code coverage report
Current view: top level - g10 - t-keydb.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 38 51 74.5 %
Date: 2016-09-12 13:01:59 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* t-keydb.c - Tests for keydb.c.
       2             :  * Copyright (C) 2015 g10 Code GmbH
       3             :  *
       4             :  * This file is part of GnuPG.
       5             :  *
       6             :  * GnuPG is free software; you can redistribute it and/or modify
       7             :  * it under the terms of the GNU General Public License as published by
       8             :  * the Free Software Foundation; either version 3 of the License, or
       9             :  * (at your option) any later version.
      10             :  *
      11             :  * GnuPG is distributed in the hope that it will be useful,
      12             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14             :  * GNU General Public License for more details.
      15             :  *
      16             :  * You should have received a copy of the GNU General Public License
      17             :  * along with this program; if not, see <http://www.gnu.org/licenses/>.
      18             :  */
      19             : 
      20             : #include "test.c"
      21             : 
      22             : #include "keydb.h"
      23             : 
      24             : static void
      25           1 : do_test (int argc, char *argv[])
      26             : {
      27             :   int rc;
      28             :   KEYDB_HANDLE hd1, hd2;
      29             :   KEYDB_SEARCH_DESC desc1, desc2;
      30             :   KBNODE kb1, kb2, p;
      31             :   char *uid1;
      32             :   char *uid2;
      33             :   char *fname;
      34             : 
      35             :   (void) argc;
      36             :   (void) argv;
      37             : 
      38           1 :   fname = prepend_srcdir ("t-keydb-keyring.kbx");
      39           1 :   rc = keydb_add_resource (fname, 0);
      40           1 :   test_free (fname);
      41           1 :   if (rc)
      42           0 :     ABORT ("Failed to open keyring.");
      43             : 
      44           1 :   hd1 = keydb_new ();
      45           1 :   if (!hd1)
      46           0 :     ABORT ("");
      47           1 :   hd2 = keydb_new ();
      48           1 :   if (!hd2)
      49           0 :     ABORT ("");
      50             : 
      51           1 :   rc = classify_user_id ("2689 5E25 E844 6D44 A26D  8FAF 2F79 98F3 DBFC 6AD9",
      52             :                          &desc1, 0);
      53           1 :   if (rc)
      54           0 :     ABORT ("Failed to convert fingerprint for DBFC6AD9");
      55             : 
      56           1 :   rc = keydb_search (hd1, &desc1, 1, NULL);
      57           1 :   if (rc)
      58           0 :     ABORT ("Failed to lookup key associated with DBFC6AD9");
      59             : 
      60             : 
      61           1 :   classify_user_id ("8061 5870 F5BA D690 3336  86D0 F2AD 85AC 1E42 B367",
      62             :                     &desc2, 0);
      63           1 :   if (rc)
      64           0 :     ABORT ("Failed to convert fingerprint for 1E42B367");
      65             : 
      66           1 :   rc = keydb_search (hd2, &desc2, 1, NULL);
      67           1 :   if (rc)
      68           0 :     ABORT ("Failed to lookup key associated with 1E42B367");
      69             : 
      70           1 :   rc = keydb_get_keyblock (hd2, &kb2);
      71           1 :   if (rc)
      72           0 :     ABORT ("Failed to get keyblock for 1E42B367");
      73             : 
      74           1 :   rc = keydb_get_keyblock (hd1, &kb1);
      75           1 :   if (rc)
      76           0 :     ABORT ("Failed to get keyblock for DBFC6AD9");
      77             : 
      78           1 :   p = kb1;
      79           3 :   while (p && p->pkt->pkttype != PKT_USER_ID)
      80           1 :     p = p->next;
      81           1 :   if (! p)
      82           0 :     ABORT ("DBFC6AD9 has no user id packet");
      83           1 :   uid1 = p->pkt->pkt.user_id->name;
      84             : 
      85           1 :   p = kb2;
      86           3 :   while (p && p->pkt->pkttype != PKT_USER_ID)
      87           1 :     p = p->next;
      88           1 :   if (! p)
      89           0 :     ABORT ("1E42B367 has no user id packet");
      90           1 :   uid2 = p->pkt->pkt.user_id->name;
      91             : 
      92           1 :   if (verbose)
      93             :     {
      94           0 :       printf ("user id for DBFC6AD9: %s\n", uid1);
      95           0 :       printf ("user id for 1E42B367: %s\n", uid2);
      96             :     }
      97             : 
      98           1 :   TEST_P ("cache consistency", strcmp (uid1, uid2) != 0);
      99             : 
     100           1 :   release_kbnode (kb1);
     101           1 :   release_kbnode (kb2);
     102           1 :   keydb_release (hd1);
     103           1 :   keydb_release (hd2);
     104           1 : }

Generated by: LCOV version 1.11