@@ -57,6 +57,19 @@ def setUp(self):
5757
5858 self .new_image = image_fakes .FakeImage .create_one_image ()
5959 self .images_mock .create .return_value = self .new_image
60+
61+ self .project_mock .get .return_value = fakes .FakeResource (
62+ None ,
63+ copy .deepcopy (identity_fakes .PROJECT ),
64+ loaded = True ,
65+ )
66+
67+ self .domain_mock .get .return_value = fakes .FakeResource (
68+ None ,
69+ copy .deepcopy (identity_fakes .DOMAIN ),
70+ loaded = True ,
71+ )
72+
6073 # This is the return value for utils.find_resource()
6174 self .images_mock .get .return_value = copy .deepcopy (
6275 image_fakes .FakeImage .get_image_info (self .new_image ))
@@ -123,6 +136,7 @@ def test_image_reserve_options(self, mock_open):
123136 if self .new_image .protected else '--unprotected' ),
124137 ('--private'
125138 if self .new_image .visibility == 'private' else '--public' ),
139+ '--project-domain' , identity_fakes .domain_id ,
126140 self .new_image .name ,
127141 ]
128142 verifylist = [
@@ -135,6 +149,7 @@ def test_image_reserve_options(self, mock_open):
135149 ('unprotected' , not self .new_image .protected ),
136150 ('public' , self .new_image .visibility == 'public' ),
137151 ('private' , self .new_image .visibility == 'private' ),
152+ ('project_domain' , identity_fakes .domain_id ),
138153 ('name' , self .new_image .name ),
139154 ]
140155 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
@@ -149,7 +164,7 @@ def test_image_reserve_options(self, mock_open):
149164 disk_format = 'fs' ,
150165 min_disk = 10 ,
151166 min_ram = 4 ,
152- owner = self . new_image . owner ,
167+ owner = identity_fakes . project_id ,
153168 protected = self .new_image .protected ,
154169 visibility = self .new_image .visibility ,
155170 )
@@ -168,6 +183,40 @@ def test_image_reserve_options(self, mock_open):
168183 image_fakes .FakeImage .get_image_data (self .new_image ),
169184 data )
170185
186+ def test_image_create_with_unexist_owner (self ):
187+ self .project_mock .get .side_effect = exceptions .NotFound (None )
188+ self .project_mock .find .side_effect = exceptions .NotFound (None )
189+
190+ arglist = [
191+ '--container-format' , 'ovf' ,
192+ '--disk-format' , 'fs' ,
193+ '--min-disk' , '10' ,
194+ '--min-ram' , '4' ,
195+ '--owner' , 'unexist_owner' ,
196+ '--protected' ,
197+ '--private' ,
198+ image_fakes .image_name ,
199+ ]
200+ verifylist = [
201+ ('container_format' , 'ovf' ),
202+ ('disk_format' , 'fs' ),
203+ ('min_disk' , 10 ),
204+ ('min_ram' , 4 ),
205+ ('owner' , 'unexist_owner' ),
206+ ('protected' , True ),
207+ ('unprotected' , False ),
208+ ('public' , False ),
209+ ('private' , True ),
210+ ('name' , image_fakes .image_name ),
211+ ]
212+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
213+
214+ self .assertRaises (
215+ exceptions .CommandError ,
216+ self .cmd .take_action ,
217+ parsed_args ,
218+ )
219+
171220 @mock .patch ('glanceclient.common.utils.get_data_file' , name = 'Open' )
172221 def test_image_create_file (self , mock_open ):
173222 mock_file = mock .MagicMock (name = 'File' )
@@ -686,6 +735,18 @@ def setUp(self):
686735 schemas .SchemaBasedModel ,
687736 )
688737
738+ self .project_mock .get .return_value = fakes .FakeResource (
739+ None ,
740+ copy .deepcopy (identity_fakes .PROJECT ),
741+ loaded = True ,
742+ )
743+
744+ self .domain_mock .get .return_value = fakes .FakeResource (
745+ None ,
746+ copy .deepcopy (identity_fakes .DOMAIN ),
747+ loaded = True ,
748+ )
749+
689750 self .images_mock .get .return_value = self .model (** image_fakes .IMAGE )
690751 self .images_mock .update .return_value = self .model (** image_fakes .IMAGE )
691752 # Get the command object to test
@@ -694,20 +755,22 @@ def setUp(self):
694755 def test_image_set_options (self ):
695756 arglist = [
696757 '--name' , 'new-name' ,
697- '--owner' , 'new-owner' ,
758+ '--owner' , identity_fakes . project_name ,
698759 '--min-disk' , '2' ,
699760 '--min-ram' , '4' ,
700761 '--container-format' , 'ovf' ,
701762 '--disk-format' , 'vmdk' ,
763+ '--project-domain' , identity_fakes .domain_id ,
702764 image_fakes .image_id ,
703765 ]
704766 verifylist = [
705767 ('name' , 'new-name' ),
706- ('owner' , 'new-owner' ),
768+ ('owner' , identity_fakes . project_name ),
707769 ('min_disk' , 2 ),
708770 ('min_ram' , 4 ),
709771 ('container_format' , 'ovf' ),
710772 ('disk_format' , 'vmdk' ),
773+ ('project_domain' , identity_fakes .domain_id ),
711774 ('image' , image_fakes .image_id ),
712775 ]
713776 parsed_args = self .check_parser (self .cmd , arglist , verifylist )
@@ -717,7 +780,7 @@ def test_image_set_options(self):
717780
718781 kwargs = {
719782 'name' : 'new-name' ,
720- 'owner' : 'new-owner' ,
783+ 'owner' : identity_fakes . project_id ,
721784 'min_disk' : 2 ,
722785 'min_ram' : 4 ,
723786 'container_format' : 'ovf' ,
@@ -727,6 +790,25 @@ def test_image_set_options(self):
727790 self .images_mock .update .assert_called_with (
728791 image_fakes .image_id , ** kwargs )
729792
793+ def test_image_set_with_unexist_owner (self ):
794+ self .project_mock .get .side_effect = exceptions .NotFound (None )
795+ self .project_mock .find .side_effect = exceptions .NotFound (None )
796+
797+ arglist = [
798+ '--owner' , 'unexist_owner' ,
799+ image_fakes .image_id ,
800+ ]
801+ verifylist = [
802+ ('owner' , 'unexist_owner' ),
803+ ('image' , image_fakes .image_id ),
804+ ]
805+
806+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
807+
808+ self .assertRaises (
809+ exceptions .CommandError ,
810+ self .cmd .take_action , parsed_args )
811+
730812 def test_image_set_bools1 (self ):
731813 arglist = [
732814 '--protected' ,
0 commit comments