@@ -57,3 +57,75 @@ def test_get_password_cntrl_d(self):
5757 self .assertRaises (exceptions .CommandError ,
5858 utils .get_password ,
5959 mock_stdin )
60+
61+
62+ class NoUniqueMatch (Exception ):
63+ pass
64+
65+
66+ class TestFindResource (test_utils .TestCase ):
67+ def setUp (self ):
68+ super (TestFindResource , self ).setUp ()
69+ self .name = 'legos'
70+ self .expected = mock .Mock ()
71+ self .manager = mock .Mock ()
72+ self .manager .resource_class = mock .Mock ()
73+ self .manager .resource_class .__name__ = 'lego'
74+
75+ def test_find_resource_get_int (self ):
76+ self .manager .get = mock .Mock (return_value = self .expected )
77+ result = utils .find_resource (self .manager , 1 )
78+ self .assertEqual (self .expected , result )
79+ self .manager .get .assert_called_with (1 )
80+
81+ def test_find_resource_get_int_string (self ):
82+ self .manager .get = mock .Mock (return_value = self .expected )
83+ result = utils .find_resource (self .manager , "2" )
84+ self .assertEqual (self .expected , result )
85+ self .manager .get .assert_called_with (2 )
86+
87+ def test_find_resource_get_uuid (self ):
88+ uuid = '9a0dc2a0-ad0d-11e3-a5e2-0800200c9a66'
89+ self .manager .get = mock .Mock (return_value = self .expected )
90+ result = utils .find_resource (self .manager , uuid )
91+ self .assertEqual (self .expected , result )
92+ self .manager .get .assert_called_with (uuid )
93+
94+ def test_find_resource_get_whatever (self ):
95+ self .manager .get = mock .Mock (return_value = self .expected )
96+ result = utils .find_resource (self .manager , 'whatever' )
97+ self .assertEqual (self .expected , result )
98+ self .manager .get .assert_called_with ('whatever' )
99+
100+ def test_find_resource_find (self ):
101+ self .manager .get = mock .Mock (side_effect = Exception ('Boom!' ))
102+ self .manager .find = mock .Mock (return_value = self .expected )
103+ result = utils .find_resource (self .manager , self .name )
104+ self .assertEqual (self .expected , result )
105+ self .manager .get .assert_called_with (self .name )
106+ self .manager .find .assert_called_with (name = self .name )
107+
108+ def test_find_resource_find_not_found (self ):
109+ self .manager .get = mock .Mock (side_effect = Exception ('Boom!' ))
110+ self .manager .find = mock .Mock (side_effect =
111+ exceptions .NotFound (404 , "2" ))
112+ result = self .assertRaises (exceptions .CommandError ,
113+ utils .find_resource ,
114+ self .manager ,
115+ self .name )
116+ self .assertEqual ("No lego with a name or ID of 'legos' exists." ,
117+ str (result ))
118+ self .manager .get .assert_called_with (self .name )
119+ self .manager .find .assert_called_with (display_name = self .name )
120+
121+ def test_find_resource_find_no_unique (self ):
122+ self .manager .get = mock .Mock (side_effect = Exception ('Boom!' ))
123+ self .manager .find = mock .Mock (side_effect = NoUniqueMatch ())
124+ result = self .assertRaises (exceptions .CommandError ,
125+ utils .find_resource ,
126+ self .manager ,
127+ self .name )
128+ self .assertEqual ("More than one lego exists with the name 'legos'." ,
129+ str (result ))
130+ self .manager .get .assert_called_with (self .name )
131+ self .manager .find .assert_called_with (display_name = self .name )
0 commit comments