def test_multistore_file_get_all_keys(self): # start with no keys keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([], keys) # store credentials credentials = self.create_test_credentials(client_id="client1") custom_key = {"myapp": "testing", "clientid": "client1"} store1 = multistore_file.get_credential_storage_custom_key(FILENAME, custom_key) store1.put(credentials) keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([custom_key], keys) # store more credentials credentials = self.create_test_credentials(client_id="client2") string_key = "string_key" store2 = multistore_file.get_credential_storage_custom_string_key(FILENAME, string_key) store2.put(credentials) keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals(2, len(keys)) self.assertTrue(custom_key in keys) self.assertTrue({"key": string_key} in keys) # back to no keys store1.delete() store2.delete() keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([], keys)
def test_multistore_file_get_all_keys(self): # start with no keys keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([], keys) # store credentials credentials = self._create_test_credentials(client_id='client1') custom_key = {'myapp': 'testing', 'clientid': 'client1'} store1 = multistore_file.get_credential_storage_custom_key( FILENAME, custom_key) store1.put(credentials) keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([custom_key], keys) # store more credentials credentials = self._create_test_credentials(client_id='client2') string_key = 'string_key' store2 = multistore_file.get_credential_storage_custom_string_key( FILENAME, string_key) store2.put(credentials) keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals(2, len(keys)) self.assertTrue(custom_key in keys) self.assertTrue({'key': string_key} in keys) # back to no keys store1.delete() store2.delete() keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([], keys)
def test_multistore_file_get_all_keys(self): # start with no keys keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([], keys) # store credentials credentials = self.create_test_credentials(client_id='client1') custom_key = {'myapp': 'testing', 'clientid': 'client1'} store1 = multistore_file.get_credential_storage_custom_key( FILENAME, custom_key) store1.put(credentials) keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([custom_key], keys) # store more credentials credentials = self.create_test_credentials(client_id='client2') string_key = 'string_key' store2 = multistore_file.get_credential_storage_custom_string_key( FILENAME, string_key) store2.put(credentials) keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals(2, len(keys)) self.assertTrue(custom_key in keys) self.assertTrue({'key': string_key} in keys) # back to no keys store1.delete() store2.delete() keys = multistore_file.get_all_credential_keys(FILENAME) self.assertEquals([], keys)
def AvailableAccounts(): """Get all accounts that have credentials stored for the CloudSDK. This function will also ping the GCE metadata server to see if GCE credentials are available. Returns: [str], List of the accounts. """ all_keys = multistore_file.get_all_credential_keys(filename=config.Paths().credentials_path) accounts = [] for key in all_keys: if key.get("type") != "google-cloud-sdk": continue if key.get("clientId") != properties.VALUES.auth.client_id.Get(required=True): continue if key.get("scope") != " ".join(config.CLOUDSDK_SCOPES): continue accounts.append(key["account"]) accounts.extend(c_gce.Metadata().Accounts()) accounts.sort() return accounts
def AvailableAccounts(): """Get all accounts that have credentials stored for the CloudSDK. This function will also ping the GCE metadata server to see if GCE credentials are available. Returns: [str], List of the accounts. """ all_keys = multistore_file.get_all_credential_keys( filename=config.Paths().credentials_path) accounts = [] for key in all_keys: if key.get('type') != 'google-cloud-sdk': continue if key.get('clientId') != config.CLOUDSDK_CLIENT_ID: continue if key.get('scope') != ' '.join(config.CLOUDSDK_SCOPES): continue accounts.append(key['account']) accounts.extend(c_gce.Metadata().Accounts()) accounts.sort() return accounts
def AvailableAccounts(): """Get all accounts that have credentials stored for the CloudSDK. This function will also ping the GCE metadata server to see if GCE credentials are available. Returns: [str], List of the accounts. """ all_keys = multistore_file.get_all_credential_keys( filename=config.Paths().credentials_path) accounts = [key['account'] for key in all_keys if key.get('type') == 'google-cloud-sdk'] accounts.extend(c_gce.Metadata().Accounts()) devshell_creds = c_devshell.LoadDevshellCredentials() if devshell_creds: accounts.append(devshell_creds.devshell_response.user_email) accounts.sort() return accounts
def AvailableAccounts(): """Get all accounts that have credentials stored for the CloudSDK. This function will also ping the GCE metadata server to see if GCE credentials are available. Returns: [str], List of the accounts. """ all_keys = multistore_file.get_all_credential_keys( filename=config.Paths().credentials_path) accounts = [] for key in all_keys: if key.get('type') != 'google-cloud-sdk': continue if key.get('clientId') != properties.VALUES.auth.client_id.Get( required=True): continue if key.get('scope') != ' '.join(config.CLOUDSDK_SCOPES): continue accounts.append(key['account']) accounts.extend(c_gce.Metadata().Accounts()) devshell_creds = c_devshell.LoadDevshellCredentials() if devshell_creds: accounts.append(devshell_creds.devshell_response.user_email) accounts.sort() return accounts
def _FindStorageKeyForAccount(account): """Scans credential file for keys matching given account. If such key(s) is found it checks that current set of scopes is a subset of scopes associated with the key. Args: account: str, The account tied to the storage key being fetched. Returns: dict, key to be used in the credentials store. """ storage_path = config.Paths().credentials_path current_scopes = set(config.CLOUDSDK_SCOPES) equivalent_keys = [key for key in multistore_file.get_all_credential_keys( filename=storage_path) if (key.get('type') == 'google-cloud-sdk' and key.get('account') == account and ( 'scope' not in key or set(key.get('scope').split()) >= current_scopes))] preferred_key = _GetStorageKeyForAccount(account) if preferred_key in equivalent_keys: equivalent_keys.remove(preferred_key) elif equivalent_keys: # Migrate credentials over to new key format. storage = multistore_file.get_credential_storage_custom_key( filename=storage_path, key_dict=equivalent_keys[0]) creds = storage.get() storage = multistore_file.get_credential_storage_custom_key( filename=storage_path, key_dict=preferred_key) storage.put(creds) # Remove all other entries. for key in equivalent_keys: storage = multistore_file.get_credential_storage_custom_key( filename=storage_path, key_dict=key) storage.delete() return preferred_key