Example #1
0
File: cli.py Project: zeronewb/maas
 def __call__(self, options):
     # Try and obtain credentials interactively if they're not given, or
     # read them from stdin if they're specified as "-".
     credentials = obtain_credentials(options.url, options.credentials)
     # Check for bogus credentials. Do this early so that the user is not
     # surprised when next invoking the MAAS CLI.
     if credentials is not None:
         try:
             valid_apikey = check_valid_apikey(
                 options.url, credentials, options.insecure)
         except UnexpectedResponse as e:
             raise SystemExit("%s" % e)
         else:
             if not valid_apikey:
                 raise SystemExit("The MAAS server rejected your API key.")
     # Get description of remote API.
     description = fetch_api_description(options.url, options.insecure)
     # Save the config.
     profile_name = options.profile_name
     with ProfileConfig.open() as config:
         config[profile_name] = {
             "credentials": credentials,
             "description": description,
             "name": profile_name,
             "url": options.url,
             }
         profile = config[profile_name]
     self.print_whats_next(profile)
Example #2
0
 def test_check_valid_apikey_catches_invalid_key(self):
     options = make_options()
     content = factory.make_name('content')
     mock_request = self.patch(httplib2.Http, 'request')
     response = httplib2.Response({})
     response['status'] = http.client.UNAUTHORIZED
     mock_request.return_value = response, json.dumps(content)
     self.assertFalse(
         auth.check_valid_apikey(
             options.url, convert_string_to_tuple(options.credentials),
             options.insecure))
Example #3
0
 def test_check_valid_apikey_passes_valid_key(self):
     options = make_options()
     content = factory.make_name("content")
     mock_request = self.patch(httplib2.Http, "request")
     response = httplib2.Response({})
     response["status"] = http.client.OK
     mock_request.return_value = response, json.dumps(content)
     self.assertTrue(
         auth.check_valid_apikey(
             options.url,
             convert_string_to_tuple(options.credentials),
             options.insecure,
         ))