- move source -> repository tests
authorDuncan Mac-Vicar P <dmacvicar@suse.de>
Wed, 30 May 2007 13:18:12 +0000 (13:18 +0000)
committerDuncan Mac-Vicar P <dmacvicar@suse.de>
Wed, 30 May 2007 13:18:12 +0000 (13:18 +0000)
- fix YUM tests to compile

- test for FileChecker (wow found 2 bugs with it)

28 files changed:
tests/CMakeLists.txt
tests/cache/CMakeLists.txt
tests/cache/CacheQuery_test.cc
tests/parser/yum/RepomdFileReader_test.cc
tests/repository/CMakeLists.txt [moved from tests/source/CMakeLists.txt with 100% similarity]
tests/repository/yum/CMakeLists.txt [moved from tests/source/yum/CMakeLists.txt with 100% similarity]
tests/repository/yum/YUMDownloader_test.cc [moved from tests/source/yum/YUMDownloader_test.cc with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/filelists.xml.gz [moved from tests/source/yum/data/10.2-updates-subset/repodata/filelists.xml.gz with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/other.xml.gz [moved from tests/source/yum/data/10.2-updates-subset/repodata/other.xml.gz with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/patch-fetchmsttfonts.sh-2333.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/patch-fetchmsttfonts.sh-2333.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/patch-flash-player-2359.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/patch-flash-player-2359.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/patch-glabels-2348.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/patch-glabels-2348.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/patch-gv-2350.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/patch-gv-2350.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/patch-openssl-2349.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/patch-openssl-2349.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/patch-tar-2351.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/patch-tar-2351.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/patches.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/patches.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/primary.xml.gz [moved from tests/source/yum/data/10.2-updates-subset/repodata/primary.xml.gz with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/repomd.xml [moved from tests/source/yum/data/10.2-updates-subset/repodata/repomd.xml with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/repomd.xml.asc [moved from tests/source/yum/data/10.2-updates-subset/repodata/repomd.xml.asc with 100% similarity]
tests/repository/yum/data/10.2-updates-subset/repodata/repomd.xml.key [moved from tests/source/yum/data/10.2-updates-subset/repodata/repomd.xml.key with 100% similarity]
tests/zypp/CMakeLists.txt
tests/zypp/FileChecker_test.cc [new file with mode: 0644]
tests/zypp/KeyRing.cc
tests/zypp/KeyRingTestReceiver.h [new file with mode: 0644]
tests/zypp/data/FileChecker/hello.txt [new file with mode: 0644]
tests/zypp/data/FileChecker/hello.txt.asc [new file with mode: 0644]
tests/zypp/data/FileChecker/hello.txt.key [new file with mode: 0644]
tests/zypp/data/FileChecker/hello2.txt [new file with mode: 0644]

index 54add86..2143a1f 100644 (file)
@@ -7,4 +7,4 @@ ADD_SUBDIRECTORY( cache )
 #ADD_SUBDIRECTORY( media )
 ADD_SUBDIRECTORY( zypp )
 ADD_SUBDIRECTORY( parser )
-ADD_SUBDIRECTORY( source )
+ADD_SUBDIRECTORY( repository )
index 3d3ea2a..6dbd47d 100644 (file)
@@ -17,7 +17,9 @@ TARGET_LINK_LIBRARIES(CacheQuery zypp )
 
 ADD_TEST(CacheInitializer ${CMAKE_CURRENT_BINARY_DIR}/CacheInitializer ${CMAKE_CURRENT_SOURCE_DIR}/data )
 ADD_TEST(CacheStore ${CMAKE_CURRENT_BINARY_DIR}/CacheStore ${CMAKE_CURRENT_SOURCE_DIR}/data )
-ADD_TEST(CacheQuery ${CMAKE_CURRENT_BINARY_DIR}/CacheQuery ${CMAKE_CURRENT_SOURCE_DIR}/data )
+
+# run this test against a YUM repo
+ADD_TEST(CacheQuery ${CMAKE_CURRENT_BINARY_DIR}/CacheQuery ${CMAKE_SOURCE_DIR}/tests/repository/yum/data/10.2-updates-subset )
 
 
 
index 826d4a6..b56cc3d 100644 (file)
 #include "zypp/TmpPath.h"
 
 #include "zypp2/cache/CacheStore.h"
-#include "zypp2/cache/CapabilityQuery.h"
 #include "zypp/data/ResolvableData.h"
 #include "zypp2/cache/ResolvableQuery.h"
-
-#include "SimplePackagesParser.h"
+#include "zypp2/parser/yum/YUMParser.h"
 
 using namespace std;
 using namespace zypp;
@@ -26,6 +24,7 @@ using namespace zypp::debug;
 using namespace zypp::capability;
 using namespace zypp::filesystem;
 using namespace zypp::cache;
+using namespace zypp::parser::yum;
 using namespace boost::unit_test;
 
 bool result(const data::RecordId &id, data::ResObject_Ptr ptr )
@@ -36,14 +35,6 @@ bool result(const data::RecordId &id, data::ResObject_Ptr ptr )
 
 void resolvable_query_test(const string &dir)
 {
-  Pathname nvra_list = Pathname(dir) + "package-set.txt.gz";
-  
-  MIL << "parsing " << nvra_list << endl;
-  
-  list<MiniResolvable> res_list;
-  
-  parse_mini_file( nvra_list, res_list );
-  
   filesystem::TmpDir tmpdir;
   // let the store go out of scope to drop the connection
   {
@@ -51,20 +42,15 @@ void resolvable_query_test(const string &dir)
     
     data::RecordId repository_id = store.lookupOrAppendRepository( Url("http://novell.com"), "/");
     
-    zypp::debug::Measure cap_parse_timer("store resolvables");
-    for ( list<MiniResolvable>::iterator it = res_list.begin(); it != res_list.end(); it++)
-    {
-      data::RecordId id = store.appendResolvable( repository_id,
-                                        ResTraits<Package>::kind,
-                                        (*it).nvra,
-                                        (*it).deps );
-    }
-    
-    MIL << "packages writen to store" << endl;
+    YUMParser parser( repository_id, store );
+    parser.parse(dir);
+    store.commit();
   }
   
   ResolvableQuery query(tmpdir.path() );
   query.query(10, &result);
+  
+  MIL << query.queryTranslatedStringAttribute( 10, "ResObject", "summary" ).text() << endl;
 }
 
 test_suite*
@@ -74,7 +60,7 @@ init_unit_test_suite( int argc, char *argv[] )
   if (argc < 2)
   {
     datadir = TESTS_SRC_DIR;
-    datadir = (Pathname(datadir) + "/cache/data").asString();
+    datadir = (Pathname(datadir) + "/repository/yum/data/10.2-updates-subset").asString();
     cout << "CacheStore_test:"
       " path to directory with test data required as parameter. Using " << datadir  << endl;
     //return (test_suite *)0;
index 916510a..874576d 100644 (file)
@@ -11,9 +11,7 @@
 #include "zypp/Url.h"
 #include "zypp/PathInfo.h"
 
-using std::cout;
-using std::endl;
-using std::string;
+using namespace std;
 using namespace zypp;
 using namespace boost::unit_test;
 
index 830886f..bc2557c 100644 (file)
@@ -45,6 +45,9 @@ TARGET_LINK_LIBRARIES( MediaSetAccess zypp boost_unit_test_framework )
 ADD_EXECUTABLE( Fetcher Fetcher_test.cc )
 TARGET_LINK_LIBRARIES( Fetcher zypp boost_unit_test_framework )
 
+ADD_EXECUTABLE( FileChecker FileChecker_test.cc )
+TARGET_LINK_LIBRARIES( FileChecker zypp boost_unit_test_framework )
+
 ADD_TEST(ArchTest ${CMAKE_CURRENT_BINARY_DIR}/Arch)
 ADD_TEST(UrlTest ${CMAKE_CURRENT_BINARY_DIR}/Url)
 ADD_TEST(Edition ${CMAKE_CURRENT_BINARY_DIR}/Edition)
@@ -58,4 +61,5 @@ ADD_TEST(Digest ${CMAKE_CURRENT_BINARY_DIR}/Digest)
 ADD_TEST(Signature ${CMAKE_CURRENT_BINARY_DIR}/Signature)
 ADD_TEST(KeyRingTest ${CMAKE_CURRENT_BINARY_DIR}/KeyRing)
 ADD_TEST(MediaSetAccessTest ${CMAKE_CURRENT_BINARY_DIR}/MediaSetAccess ${CMAKE_CURRENT_SOURCE_DIR}/data/mediasetaccess)
+ADD_TEST(FileCheckerTest ${CMAKE_CURRENT_BINARY_DIR}/FileChecker ${CMAKE_CURRENT_SOURCE_DIR}/data/FileChecker)
 ADD_TEST(FetcherTest ${CMAKE_CURRENT_BINARY_DIR}/Fetcher)
diff --git a/tests/zypp/FileChecker_test.cc b/tests/zypp/FileChecker_test.cc
new file mode 100644 (file)
index 0000000..078583d
--- /dev/null
@@ -0,0 +1,118 @@
+
+#include <iostream>
+#include <fstream>
+#include <list>
+#include <string>
+
+#include "zypp/base/Logger.h"
+#include "zypp/base/Exception.h"
+#include "zypp/KeyRing.h"
+#include "zypp/PublicKey.h"
+#include "zypp/TmpPath.h"
+
+#include "zypp/FileChecker.h"
+
+#include <boost/test/unit_test.hpp>
+#include <boost/test/parameterized_test.hpp>
+#include <boost/test/unit_test_log.hpp>
+
+#include "KeyRingTestReceiver.h"
+
+using boost::unit_test::test_suite;
+using boost::unit_test::test_case;
+using namespace boost::unit_test::log;
+
+using namespace std;
+using namespace zypp;
+using namespace zypp::filesystem;
+
+void keyring_test( const string &dir )
+{
+  Pathname file( Pathname(dir) + "hello.txt" );
+  Pathname file2( Pathname(dir) + "hello2.txt" );
+  Pathname pubkey( Pathname(dir) + "hello.txt.key" );
+  Pathname signature( Pathname(dir) + "hello.txt.asc" );
+  
+  /**
+   * 1st scenario, the signature does
+   * match
+   */
+  {
+    KeyRingTestReceiver keyring_callbacks;
+    KeyRingTestSignalReceiver receiver;
+    
+    keyring_callbacks.answerTrustKey(true);
+    SignatureFileChecker sigchecker( signature );
+    sigchecker.addPublicKey(pubkey);
+    sigchecker(file); 
+  }
+  
+  /**
+   * second scenario, the signature does not
+   * match, an exception has to be thrown
+   */
+  {
+    KeyRingTestReceiver keyring_callbacks;
+    KeyRingTestSignalReceiver receiver;
+    
+    keyring_callbacks.answerTrustKey(true);
+    SignatureFileChecker sigchecker( signature );
+    sigchecker.addPublicKey(pubkey);
+    
+    BOOST_CHECK_THROW( sigchecker(file2), zypp::Exception );
+
+  }
+  
+}
+
+void checksum_test( const string &dir )
+{
+  Pathname file( Pathname(dir) + "hello.txt" );
+  Pathname file2( Pathname(dir) + "hello2.txt" );
+  Pathname pubkey( Pathname(dir) + "hello.txt.key" );
+  Pathname signature( Pathname(dir) + "hello.txt.asc" );
+  
+  /**
+   * 1st scenario, checksum matches
+   */
+  {
+    ChecksumFileChecker checker( CheckSum("sha1", "f2105202a0f017ab818b670d04982a89f55f090b") );
+    checker(file);
+  }
+  
+  /**
+   * 1st scenario, checksum does not matches
+   */
+  {
+    ChecksumFileChecker checker( CheckSum("sha1", "f2105202a0f017ab818b670d04982a89f55f090b") );
+    BOOST_CHECK_THROW( checker(file2), zypp::FileCheckException );
+  }
+}
+
+test_suite*
+init_unit_test_suite( int argc, char* argv[] )
+{
+  string datadir;
+  if (argc < 2)
+  {
+    datadir = TESTS_SRC_DIR;
+    datadir = (Pathname(datadir) + "/zypp/data/FileChecker").asString();
+    cout << "filechecker_test:"
+      " path to directory with test data required as parameter. Using " << datadir  << endl;
+    //return (test_suite *)0;
+  }
+  else
+  {
+    datadir = argv[1];
+  }
+
+  std::string const params[] = { datadir };
+    //set_log_stream( std::cout );
+  test_suite* test= BOOST_TEST_SUITE( "FileCheckerTest" );
+  test->add(BOOST_PARAM_TEST_CASE( &keyring_test,
+                              (std::string const*)params, params+1));
+  test->add(BOOST_PARAM_TEST_CASE( &checksum_test,
+                              (std::string const*)params, params+1));
+  return test;
+}
+
index 0944413..991bae3 100644 (file)
@@ -14,6 +14,8 @@
 #include <boost/test/parameterized_test.hpp>
 #include <boost/test/unit_test_log.hpp>
 
+#include "KeyRingTestReceiver.h"
+
 using boost::unit_test::test_suite;
 using boost::unit_test::test_case;
 using namespace boost::unit_test::log;
@@ -22,154 +24,6 @@ using namespace std;
 using namespace zypp;
 using namespace zypp::filesystem;
 
-/**
- * Keyring Callback Receiver with some features
- * Allows to simulate and configure user answer
- * Can record which callbacks were called
- */
-struct KeyRingReceive : public zypp::callback::ReceiveReport<zypp::KeyRingReport>
-{
-  KeyRingReceive()
-  {
-    reset();
-    connect();
-  }
-
-  void reset()
-  {
-    _answer_accept_unknown_key = false;
-    _answer_trust_key = false;
-    _answer_import_key = false;
-    _answer_ver_failed = false;
-    _answer_accept_unsigned_file = false;
-    _asked_user_to_accept_unknown_key = false;
-    _asked_user_to_trust_key = false;
-    _asked_user_to_import_key = false;
-    _asked_user_to_accept_ver_failed = false;
-    _asked_user_to_accept_unsigned_file = false;
-  }
-  
-  ~KeyRingReceive()
-  {
-    disconnect();
-  }
-  
-  void answerAcceptVerFailed( bool answer )
-  { _answer_ver_failed = answer; }
-  
-  bool askedAcceptVerFailed() const
-  { return _asked_user_to_accept_ver_failed; }
-  
-  void answerAcceptUnknownKey( bool answer )
-  { _answer_accept_unknown_key = answer; }
-  
-  bool askedAcceptUnknownKey() const
-  { return _asked_user_to_accept_unknown_key; }
-  
-  void answerTrustKey( bool answer )
-  { _answer_trust_key = answer; }
-  
-  bool askedTrustKey() const
-  { return _asked_user_to_trust_key; }
-  
-  void answerImportKey( bool answer )
-  { _answer_import_key = answer; }
-  
-  bool askedImportKey() const
-  { return _asked_user_to_import_key; }
-  
-  void answerAcceptUnsignedFile( bool answer )
-  { _answer_accept_unsigned_file = answer; }
-  
-  bool askedAcceptUnsignedFile() const
-  { return _asked_user_to_accept_unsigned_file; }
-    
-  virtual bool askUserToAcceptUnsignedFile( const std::string &file )
-  {
-    MIL << std::endl;
-    _asked_user_to_accept_unsigned_file = true;
-    return _answer_accept_unsigned_file;
-  }
-  
-  virtual bool askUserToAcceptUnknownKey( const std::string &file, const std::string &id )
-  {
-    MIL << std::endl;
-    _asked_user_to_accept_unknown_key = true;
-    return _answer_accept_unknown_key;
-  }
-
-  virtual bool askUserToImportKey( const PublicKey &key )
-  {
-    MIL << std::endl;
-    _asked_user_to_import_key = true;
-    return _answer_import_key;
-  }
-
-  virtual bool askUserToTrustKey(  const PublicKey &key  )
-  {
-    MIL << std::endl;
-    _asked_user_to_trust_key = true;
-    return _answer_trust_key;
-  }
-  virtual bool askUserToAcceptVerificationFailed( const std::string &file,  const PublicKey &key  )
-  {
-    MIL << std::endl;
-    _asked_user_to_accept_ver_failed = true;
-    return _answer_ver_failed;
-  }
-  
-  // how to answer
-  bool _answer_accept_unknown_key;
-  bool _answer_trust_key;
-  bool _answer_import_key;
-  bool _answer_ver_failed;
-  bool _answer_accept_unsigned_file;
-  
-  // we use this variables to check that the
-  // callbacks were called
-  bool _asked_user_to_accept_unknown_key;
-  bool _asked_user_to_trust_key;
-  bool _asked_user_to_import_key;
-  bool _asked_user_to_accept_ver_failed;
-  bool _asked_user_to_accept_unsigned_file;
-};
-
-/**
- * Keyring Signal Receiver with some features
- * Allows to simulate and configure user answer
- * Can record which callbacks were called
- */
-struct KeyRingSignalReceiver : callback::ReceiveReport<KeyRingSignals>
-{
-  KeyRingSignalReceiver(/*RpmDb &rpmdb*/)
-  : _trusted_key_added_called(false)
-  {
-    MIL << "KeyRing signals enabled" << endl;
-    connect();
-  }
-
-  ~KeyRingSignalReceiver()
-  {
-    disconnect();
-  }
-
-  virtual void trustedKeyAdded( const PublicKey &key )
-  {
-    MIL << "TEST: trusted key added to zypp Keyring. Syncronizing keys with fake rpm keyring" << std::endl;
-    _trusted_key_added_called = true;
-    //std::cout << "trusted key added to zypp Keyring. Syncronizing keys with rpm keyring" << std::endl;
-    //_rpmdb.importZyppKeyRingTrustedKeys();
-    //_rpmdb.exportTrustedKeysInZyppKeyRing();
-  }
-
-  virtual void trustedKeyRemoved( const PublicKey &key  )
-  {
-  }
-  
-  bool _trusted_key_added_called;
-  
-};
-
 void keyring_test( const string &dir )
 {
   PublicKey key( Pathname(dir) + "public.asc" );
@@ -181,8 +35,8 @@ void keyring_test( const string &dir )
   * ask for import, answer no
   */
   {
-    KeyRingReceive keyring_callbacks;
-    KeyRingSignalReceiver receiver;
+    KeyRingTestReceiver keyring_callbacks;
+    KeyRingTestSignalReceiver receiver;
     // base sandbox for playing
     TmpDir tmp_dir;
     KeyRing keyring( tmp_dir.path() );
@@ -218,8 +72,8 @@ void keyring_test( const string &dir )
   * vorrupt the file and check
   */
   {
-    KeyRingReceive keyring_callbacks;
-    KeyRingSignalReceiver receiver;
+    KeyRingTestReceiver keyring_callbacks;
+    KeyRingTestSignalReceiver receiver;
     // base sandbox for playing
     TmpDir tmp_dir;
     KeyRing keyring( tmp_dir.path() );
@@ -252,8 +106,8 @@ void keyring_test( const string &dir )
   * check without signature
   */
   {
-    KeyRingReceive keyring_callbacks;
-    KeyRingSignalReceiver receiver;
+    KeyRingTestReceiver keyring_callbacks;
+    KeyRingTestSignalReceiver receiver;
     // base sandbox for playing
     TmpDir tmp_dir;
     KeyRing keyring( tmp_dir.path() );
@@ -280,8 +134,8 @@ void keyring_test( const string &dir )
   * answer no
   */
   {
-    KeyRingReceive keyring_callbacks;
-    KeyRingSignalReceiver receiver;
+    KeyRingTestReceiver keyring_callbacks;
+    KeyRingTestSignalReceiver receiver;
     // base sandbox for playing
     TmpDir tmp_dir;
     KeyRing keyring( tmp_dir.path() );
@@ -303,8 +157,8 @@ void keyring_test( const string &dir )
   * should emit signal
   */
   {
-    KeyRingReceive keyring_callbacks;
-    KeyRingSignalReceiver receiver;
+    KeyRingTestReceiver keyring_callbacks;
+    KeyRingTestSignalReceiver receiver;
     // base sandbox for playing
     TmpDir tmp_dir;
     KeyRing keyring( tmp_dir.path() );
diff --git a/tests/zypp/KeyRingTestReceiver.h b/tests/zypp/KeyRingTestReceiver.h
new file mode 100644 (file)
index 0000000..bd272e8
--- /dev/null
@@ -0,0 +1,157 @@
+
+#ifndef _ZYPP_KEYRING_TEST_RECEIVER_H
+#define _ZYPP_KEYRING_TEST_RECEIVER_H
+
+#include "zypp/Callback.h"
+#include "zypp/KeyRing.h"
+#include "zypp/PublicKey.h"
+
+/**
+ * Keyring Callback Receiver with some features
+ * Allows to simulate and configure user answer
+ * Can record which callbacks were called
+ */
+struct KeyRingTestReceiver : public zypp::callback::ReceiveReport<zypp::KeyRingReport>
+{
+  KeyRingTestReceiver()
+  {
+    reset();
+    connect();
+  }
+
+  void reset()
+  {
+    _answer_accept_unknown_key = false;
+    _answer_trust_key = false;
+    _answer_import_key = false;
+    _answer_ver_failed = false;
+    _answer_accept_unsigned_file = false;
+    _asked_user_to_accept_unknown_key = false;
+    _asked_user_to_trust_key = false;
+    _asked_user_to_import_key = false;
+    _asked_user_to_accept_ver_failed = false;
+    _asked_user_to_accept_unsigned_file = false;
+  }
+  
+  ~KeyRingTestReceiver()
+  {
+    disconnect();
+  }
+  
+  void answerAcceptVerFailed( bool answer )
+  { _answer_ver_failed = answer; }
+  
+  bool askedAcceptVerFailed() const
+  { return _asked_user_to_accept_ver_failed; }
+  
+  void answerAcceptUnknownKey( bool answer )
+  { _answer_accept_unknown_key = answer; }
+  
+  bool askedAcceptUnknownKey() const
+  { return _asked_user_to_accept_unknown_key; }
+  
+  void answerTrustKey( bool answer )
+  { _answer_trust_key = answer; }
+  
+  bool askedTrustKey() const
+  { return _asked_user_to_trust_key; }
+  
+  void answerImportKey( bool answer )
+  { _answer_import_key = answer; }
+  
+  bool askedImportKey() const
+  { return _asked_user_to_import_key; }
+  
+  void answerAcceptUnsignedFile( bool answer )
+  { _answer_accept_unsigned_file = answer; }
+  
+  bool askedAcceptUnsignedFile() const
+  { return _asked_user_to_accept_unsigned_file; }
+    
+  virtual bool askUserToAcceptUnsignedFile( const std::string &file )
+  {
+    MIL << std::endl;
+    _asked_user_to_accept_unsigned_file = true;
+    return _answer_accept_unsigned_file;
+  }
+  
+  virtual bool askUserToAcceptUnknownKey( const std::string &file, const std::string &id )
+  {
+    MIL << std::endl;
+    _asked_user_to_accept_unknown_key = true;
+    return _answer_accept_unknown_key;
+  }
+
+  virtual bool askUserToImportKey( const zypp::PublicKey &key )
+  {
+    MIL << std::endl;
+    _asked_user_to_import_key = true;
+    return _answer_import_key;
+  }
+
+  virtual bool askUserToTrustKey(  const zypp::PublicKey &key  )
+  {
+    MIL << std::endl;
+    _asked_user_to_trust_key = true;
+    return _answer_trust_key;
+  }
+  virtual bool askUserToAcceptVerificationFailed( const std::string &file,  const zypp::PublicKey &key  )
+  {
+    MIL << std::endl;
+    _asked_user_to_accept_ver_failed = true;
+    return _answer_ver_failed;
+  }
+  
+  // how to answer
+  bool _answer_accept_unknown_key;
+  bool _answer_trust_key;
+  bool _answer_import_key;
+  bool _answer_ver_failed;
+  bool _answer_accept_unsigned_file;
+  
+  // we use this variables to check that the
+  // callbacks were called
+  bool _asked_user_to_accept_unknown_key;
+  bool _asked_user_to_trust_key;
+  bool _asked_user_to_import_key;
+  bool _asked_user_to_accept_ver_failed;
+  bool _asked_user_to_accept_unsigned_file;
+};
+
+/**
+ * Keyring Signal Receiver with some features
+ * Allows to simulate and configure user answer
+ * Can record which callbacks were called
+ */
+struct KeyRingTestSignalReceiver : zypp::callback::ReceiveReport<zypp::KeyRingSignals>
+{
+  KeyRingTestSignalReceiver(/*RpmDb &rpmdb*/)
+  : _trusted_key_added_called(false)
+  {
+    MIL << "KeyRing signals enabled" << std::endl;
+    connect();
+  }
+
+  ~KeyRingTestSignalReceiver()
+  {
+    disconnect();
+  }
+
+  virtual void trustedKeyAdded( const zypp::PublicKey &key )
+  {
+    MIL << "TEST: trusted key added to zypp Keyring. Syncronizing keys with fake rpm keyring" << std::endl;
+    _trusted_key_added_called = true;
+    //std::cout << "trusted key added to zypp Keyring. Syncronizing keys with rpm keyring" << std::endl;
+    //_rpmdb.importZyppKeyRingTrustedKeys();
+    //_rpmdb.exportTrustedKeysInZyppKeyRing();
+  }
+
+  virtual void trustedKeyRemoved( const zypp::PublicKey &key  )
+  {
+  }
+  
+  bool _trusted_key_added_called;
+  
+};
+
+#endif
diff --git a/tests/zypp/data/FileChecker/hello.txt b/tests/zypp/data/FileChecker/hello.txt
new file mode 100644 (file)
index 0000000..10377d3
--- /dev/null
@@ -0,0 +1 @@
+hello this is a test
diff --git a/tests/zypp/data/FileChecker/hello.txt.asc b/tests/zypp/data/FileChecker/hello.txt.asc
new file mode 100644 (file)
index 0000000..f71bd45
--- /dev/null
@@ -0,0 +1,7 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+iD8DBQBGXW7Gm+zCtd2wN1YRAuAXAJ9e2obl0RWM9eBQz8dmPdQjclmamQCfRnJS
+XFIPNZAA1XeQL/Dvi51EIwc=
+=3TuF
+-----END PGP SIGNATURE-----
diff --git a/tests/zypp/data/FileChecker/hello.txt.key b/tests/zypp/data/FileChecker/hello.txt.key
new file mode 100644 (file)
index 0000000..1ee7f92
--- /dev/null
@@ -0,0 +1,214 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+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
+yqfsg94RICpbr50=
+=NAat
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/tests/zypp/data/FileChecker/hello2.txt b/tests/zypp/data/FileChecker/hello2.txt
new file mode 100644 (file)
index 0000000..43e4a03
--- /dev/null
@@ -0,0 +1,2 @@
+this is another text
+