2 #include <boost/test/auto_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;
17 BOOST_AUTO_TEST_CASE(read_cred_for_url)
19 CredManagerOptions opts;
20 opts.globalCredFilePath = TESTS_SRC_DIR "/media/data/credentials.cat";
21 opts.userCredFilePath = Pathname();
23 CredentialManager cm(opts);
24 BOOST_CHECK(cm.credsGlobalSize() == 2);
26 Url url("https://drink.it/repo/roots");
27 AuthData_Ptr credentials = cm.getCred(url);
28 BOOST_CHECK(credentials.get() != NULL);
31 BOOST_CHECK(credentials->username() == "ginger");
32 BOOST_CHECK(credentials->password() == "ale");
34 Url url2("ftp://magda@weprovidesoft.fr/download/opensuse/110");
35 credentials = cm.getCred(url2);
36 BOOST_CHECK(credentials.get() != NULL);
39 BOOST_CHECK(credentials->username() == "magda");
40 BOOST_CHECK(credentials->password() == "richard");
45 bool collect(AuthData_Ptr & cred)
47 cout << "got: " << endl << *cred << endl;
52 CredentialManager::CredentialSet creds;
56 BOOST_AUTO_TEST_CASE(save_creds)
58 filesystem::TmpDir tmp;
60 CredManagerOptions opts;
61 opts.globalCredFilePath = tmp / "fooha";
63 CredentialManager cm1(opts);
64 AuthData cr1("benson","absolute");
65 cr1.setUrl(Url("http://joooha.com"));
66 AuthData cr2("pat","vymetheny");
67 cr2.setUrl(Url("ftp://filesuck.org"));
69 // should create a new file
70 cm1.saveInGlobal(cr1);
72 CredCollector collector;
73 CredentialFileReader reader(opts.globalCredFilePath,
74 bind( &CredCollector::collect, &collector, _1 ));
75 BOOST_CHECK(collector.creds.size() == 1);
77 cout << "----" << endl;
78 collector.creds.clear();
80 cm1.saveInGlobal(cr2);
82 CredentialFileReader reader1(opts.globalCredFilePath,
83 bind( &CredCollector::collect, &collector, _1 ));
84 BOOST_CHECK(collector.creds.size() == 2);
86 cout << "----" << endl;
87 collector.creds.clear();
89 // save the same creds again
90 cm1.saveInGlobal(cr2);
91 CredentialFileReader reader2(opts.globalCredFilePath,
92 bind( &CredCollector::collect, &collector, _1 ));
93 BOOST_CHECK(collector.creds.size() == 2);
95 // todo check created file permissions
98 BOOST_AUTO_TEST_CASE(service_base_url)
100 filesystem::TmpDir tmp;
102 CredManagerOptions opts;
103 opts.globalCredFilePath = tmp / "fooha";
105 CredentialManager cm1(opts);
106 AuthData cr1("benson","absolute");
107 cr1.setUrl(Url("http://joooha.com/service/path"));
108 cm1.addGlobalCred(cr1);
111 creds = cm1.getCred(Url("http://joooha.com/service/path/repo/repofoo"));
113 BOOST_CHECK(creds.get() != NULL);
116 BOOST_CHECK(creds->username() == "benson");
118 creds = cm1.getCred(Url("http://benson@joooha.com/service/path/repo/repofoo"));
120 BOOST_CHECK(creds.get() != NULL);
123 BOOST_CHECK(creds->username() == "benson");
125 creds = cm1.getCred(Url("http://nobody@joooha.com/service/path/repo/repofoo"));
126 BOOST_CHECK(creds.get() == NULL);