2 #include <boost/test/unit_test.hpp>
5 #include <zypp/TmpPath.h>
6 #include <zypp/media/CredentialFileReader.cc>
7 #include <zypp/media/CredentialManager.h>
9 #include <zypp/PathInfo.h>
14 using namespace zypp::media;
16 inline void testGetCreds( CredentialManager & cm_r, const std::string & url_r,
17 const std::string & user_r = "",
18 const std::string & pass_r = "" )
21 AuthData_Ptr cred = cm_r.getCred( url );
22 //cout << "FOR: " << url << endl;
23 //cout << "GOT: " << cred << endl;
24 if ( user_r.empty() && pass_r.empty() )
26 BOOST_CHECK_EQUAL( cred, AuthData_Ptr() );
30 BOOST_CHECK_EQUAL( cred->username(), user_r );
31 BOOST_CHECK_EQUAL( cred->password(), pass_r );
35 BOOST_AUTO_TEST_CASE(read_cred_for_url)
37 CredManagerOptions opts;
38 opts.globalCredFilePath = TESTS_SRC_DIR "/media/data/credentials.cat";
39 opts.userCredFilePath = Pathname();
40 CredentialManager cm( opts );
42 BOOST_CHECK_EQUAL( cm.credsGlobalSize(), 3 );
44 testGetCreds( cm, "https://drink.it/repo/roots", "ginger", "ale" );
45 testGetCreds( cm, "ftp://weprovidesoft.fr/download/opensuse/110", "agda", "ichard" );
46 testGetCreds( cm, "ftp://magda@weprovidesoft.fr/download/opensuse/110", "magda", "richard" );
47 testGetCreds( cm, "ftp://agda@weprovidesoft.fr/download/opensuse/110", "agda", "ichard" );
48 testGetCreds( cm, "ftp://unknown@weprovidesoft.fr/download/opensuse/110" ); // NULL
49 testGetCreds( cm, "http://url.ok/but/not/creds" ); // NULL
54 bool collect(AuthData_Ptr & cred)
56 //cout << "got: " << endl << *cred << endl;
61 CredentialManager::CredentialSet creds;
65 BOOST_AUTO_TEST_CASE(save_creds)
67 filesystem::TmpDir tmp;
68 CredManagerOptions opts;
69 opts.globalCredFilePath = tmp / "fooha";
70 CredentialManager cm1(opts);
72 AuthData cr1("benson","absolute");
73 cr1.setUrl(Url("http://joooha.com"));
75 AuthData cr2("pat","vymetheny");
76 cr2.setUrl(Url("ftp://filesuck.org"));
78 // should create a new file
79 cm1.saveInGlobal(cr1);
81 CredCollector collector;
82 CredentialFileReader( opts.globalCredFilePath, bind( &CredCollector::collect, &collector, _1 ) );
83 BOOST_CHECK_EQUAL( collector.creds.size(), 1 );
85 collector.creds.clear();
86 cm1.saveInGlobal(cr2);
87 CredentialFileReader( opts.globalCredFilePath, bind( &CredCollector::collect, &collector, _1 ) );
88 BOOST_CHECK_EQUAL(collector.creds.size(), 2 );
90 collector.creds.clear();
91 // save the same creds again
92 cm1.saveInGlobal(cr2);
93 CredentialFileReader( opts.globalCredFilePath, bind( &CredCollector::collect, &collector, _1 ) );
94 BOOST_CHECK_EQUAL(collector.creds.size(), 2 );
96 // todo check created file permissions
99 BOOST_AUTO_TEST_CASE(service_base_url)
101 filesystem::TmpDir tmp;
102 CredManagerOptions opts;
103 opts.globalCredFilePath = tmp / "fooha";
104 CredentialManager cm( opts );
106 AuthData cred( "benson","absolute" );
107 cred.setUrl( Url( "http://joooha.com/service/path" ) );
108 cm.addGlobalCred( cred );
110 testGetCreds( cm, "http://joooha.com/service/path/repo/repofoo", "benson", "absolute" );
111 testGetCreds( cm, "http://benson@joooha.com/service/path/repo/repofoo", "benson", "absolute" );
112 testGetCreds( cm, "http://nobody@joooha.com/service/path/repo/repofoo" ); // NULL