@@ -252,6 +252,49 @@ def test_analyze_images_in_insecure_registry(self):
252252 self .assertTrue (isfile (self .html ))
253253 self .assertIn (self .reg , RemoteRegistry .insec_regs )
254254
255+ @responses .activate
256+ def test_analyze_images_in_secure_registry (self ):
257+
258+ reg_url = 'https://%s/v2/' % self .reg
259+ token = 'just-some-auth-token-which-is-really-long'
260+ auth = 'Basic %s' % token
261+ headers = {'WWW-Authenticate' : auth }
262+ manifest_url = reg_url + 'org/image-name/manifests/version'
263+ responses .reset ()
264+ responses .add (responses .GET , manifest_url ,
265+ json = self .manifest , status = 200 , headers = headers )
266+ self .layers = [e ['digest' ] for e in self .manifest ['layers' ]]
267+ responses .add (responses .DELETE , '%s/%s' %
268+ (self .v1_analyze_url , self .layers [0 ]))
269+ responses .add (responses .POST , self .v1_analyze_url )
270+ responses .add (responses .GET , '%s/%s?features&vulnerabilities' %
271+ (self .v1_analyze_url , self .layers [- 1 ]),
272+ json = self .origin_data )
273+
274+ with patch ('sys.argv' , ['claircli' , '-c' ,
275+ self .clair_url ,
276+ '-k' , self .reg + ':' + token ,
277+ # Include a check for ignored arguments
278+ '-k' , '1234' , '-k' , 'ab:' , '-k' , ':' ,
279+ self .name ]):
280+ cli = ClairCli ()
281+ cli .run ()
282+ for index , url in enumerate ([manifest_url , ]):
283+ self .assertEqual (responses .calls [index ].request .url , url )
284+
285+ for index , layer in enumerate (self .layers , start = 2 ):
286+ self .assertEqual (
287+ responses .calls [index ].request .url , self .v1_analyze_url )
288+ req_body = json .loads (responses .calls [index ].request .body )
289+ self .assertEqual (req_body ['Layer' ]['Name' ], layer )
290+ self .assertTrue (isfile (self .html ))
291+ self .assertEqual (0 , len (RemoteRegistry .insec_regs ))
292+ self .assertIn (self .reg , RemoteRegistry .tokens )
293+ self .assertIn ('' , RemoteRegistry .tokens [self .reg ])
294+ self .assertEqual (auth , RemoteRegistry .tokens [self .reg ]['' ])
295+ self .assertIn (self .repo , RemoteRegistry .tokens [self .reg ])
296+ self .assertEqual (auth , RemoteRegistry .tokens [self .reg ][self .repo ])
297+
255298 @patch ('docker.from_env' )
256299 @responses .activate
257300 def test_analyze_local_images (self , mock_docker ):
0 commit comments