11import os
22
33from testtools import TestCase
4- from . import makeprefs
5- from mock import Mock
4+ from . import makeprefs , MockLoggingHandler
5+ from mock import Mock , patch
66
77
88class RegistryTest (TestCase ):
9+ @classmethod
10+ def setUpClass (cls ):
11+ super (RegistryTest , cls ).setUpClass ()
12+ cls ._lacli_log_handler = MockLoggingHandler (level = 'DEBUG' )
13+ cls .lacli_log_messages = cls ._lacli_log_handler .messages
14+
915 def setUp (self ):
1016 super (RegistryTest , self ).setUp ()
1117 self .prefs = makeprefs (lambda x : None )
1218 self .home = os .path .join ('t' , 'data' , 'home' )
19+ self ._lacli_log_handler .reset ()
20+ from lacli .log import getLogger
21+ getLogger ().addHandler (self ._lacli_log_handler )
1322
1423 def tearDown (self ):
1524 super (RegistryTest , self ).tearDown ()
@@ -20,3 +29,43 @@ def _makeit(self, *args, **kwargs):
2029
2130 def test_registry (self ):
2231 assert self ._makeit (Mock (), self .prefs , Mock ())
32+
33+ def test_new_session (self ):
34+ s = self .getUniqueString ()
35+ f = Mock (return_value = s )
36+ prefs = makeprefs (f )
37+ r = self ._makeit (Mock (), prefs , Mock ())
38+ self .assertEqual (s , r .session )
39+ self .assertEqual (prefs ['api' ], f .call_args [0 ][0 ])
40+
41+ @patch ('lacli.registry.API_URL' , new = 'http://wtf' )
42+ def test_new_session_default_url (self ):
43+ f = Mock ()
44+ prefs = makeprefs (f )
45+ del prefs ['api' ]['url' ]
46+ self ._makeit (Mock (), prefs , Mock ())
47+ self .assertEqual ('http://wtf' , f .call_args [0 ][0 ]['url' ])
48+
49+ def test_new_session_prefs (self ):
50+ s = self .getUniqueString ()
51+ f = Mock (return_value = s )
52+ myprefs = {self .getUniqueString (): self .getUniqueString ()}
53+ r = self ._makeit (Mock (), makeprefs (f ), Mock ())
54+ self .assertEqual (s , r .new_session (myprefs ))
55+ self .assertEqual (myprefs , f .call_args [0 ][0 ])
56+
57+ @patch ('lacli.registry.netrc' )
58+ def test_saved_session_error (self , netrc ):
59+ f = Mock ()
60+ prefs = makeprefs (f )
61+ prefs ['api' ]['user' ] = False
62+ exc = Exception (self .getUniqueString ())
63+ netrc .side_effect = exc
64+ self ._makeit (Mock (home = 'foo' ), prefs , Mock ())
65+ self .assertEqual (None , f .call_args [0 ][0 ]['pass' ])
66+ self .assertEqual (os .path .expanduser ('~/.netrc' ),
67+ netrc .call_args [0 ][0 ])
68+ for debug_msg , debug_exc in self .lacli_log_messages ['debug' ]:
69+ self .assertIn ("Couldn't read from netrc" , debug_msg )
70+ self .assertTrue (debug_exc is not None )
71+ self .assertEqual (exc , debug_exc [1 ])
0 commit comments