def test_save_without_override(self): """Test to override an existing account without setting overwrite=True.""" with self.assertRaises(AccountAlreadyExistsError): AccountManager.save( name="conflict", token=_TEST_IBM_CLOUD_ACCOUNT.token, url=_TEST_IBM_CLOUD_ACCOUNT.url, instance=_TEST_IBM_CLOUD_ACCOUNT.instance, channel="ibm_cloud", overwrite=False, )
def test_save_channel_ibm_quantum_over_auth_legacy_without_overwrite(self): """Test to overwrite an existing auth "legacy" account with channel "ibm_quantum" and without setting overwrite=True.""" with self.assertRaises(AccountAlreadyExistsError): AccountManager.save( token=_TEST_IBM_QUANTUM_ACCOUNT.token, url=_TEST_IBM_QUANTUM_ACCOUNT.url, instance=_TEST_IBM_QUANTUM_ACCOUNT.instance, channel="ibm_quantum", name=None, overwrite=False, )
def test_save_channel_ibm_quantum_over_auth_legacy_with_overwrite(self): """Test to overwrite an existing auth "elegacy" account with channel "ibm_quantum" and with setting overwrite=True.""" AccountManager.save( token=_TEST_IBM_QUANTUM_ACCOUNT.token, url=_TEST_IBM_QUANTUM_ACCOUNT.url, instance=_TEST_IBM_QUANTUM_ACCOUNT.instance, channel="ibm_quantum", name=None, overwrite=True, ) self.assertEqual(_TEST_IBM_QUANTUM_ACCOUNT, AccountManager.get(channel="ibm_quantum"))
def test_delete(self): """Test delete.""" with self.subTest("delete named account"): self.assertTrue(AccountManager.delete(name="key1")) self.assertFalse(AccountManager.delete(name="key1")) with self.subTest("delete default ibm_quantum account"): self.assertTrue(AccountManager.delete(channel="ibm_quantum")) with self.subTest("delete default ibm_cloud account"): self.assertTrue(AccountManager.delete()) self.assertTrue(len(AccountManager.list()) == 0)
def test_save_channel_ibm_cloud_over_auth_cloud_with_overwrite(self): """Test to overwrite an existing auth "cloud" account with channel "ibm_cloud" and with setting overwrite=True.""" AccountManager.save( token=_TEST_IBM_CLOUD_ACCOUNT.token, url=_TEST_IBM_CLOUD_ACCOUNT.url, instance=_TEST_IBM_CLOUD_ACCOUNT.instance, channel="ibm_cloud", proxies=_TEST_IBM_CLOUD_ACCOUNT.proxies, name=None, overwrite=True, ) self.assertEqual(_TEST_IBM_CLOUD_ACCOUNT, AccountManager.get(channel="ibm_cloud"))
def test_delete_auth(self): """Test delete accounts already saved using auth.""" with self.subTest("delete named account"): self.assertTrue(AccountManager.delete(name="key1")) self.assertFalse(AccountManager.delete(name="key1")) with self.subTest( "delete default auth='legacy' account using channel"): self.assertTrue(AccountManager.delete(channel="ibm_quantum")) with self.subTest("delete default auth='cloud' account using channel"): self.assertTrue(AccountManager.delete()) self.assertTrue(len(AccountManager.list()) == 0)
def test_list(self): """Test list.""" with temporary_account_config_file( contents={ "key1": _TEST_IBM_CLOUD_ACCOUNT.to_saved_format(), "key2": _TEST_IBM_QUANTUM_ACCOUNT.to_saved_format(), }), self.subTest("non-empty list of accounts"): accounts = AccountManager.list() self.assertEqual(len(accounts), 2) self.assertEqual(accounts["key1"], _TEST_IBM_CLOUD_ACCOUNT) self.assertTrue(accounts["key2"], _TEST_IBM_QUANTUM_ACCOUNT) with temporary_account_config_file( contents={}), self.subTest("empty list of accounts"): self.assertEqual(len(AccountManager.list()), 0) with temporary_account_config_file( contents={ "key1": _TEST_IBM_CLOUD_ACCOUNT.to_saved_format(), "key2": _TEST_IBM_QUANTUM_ACCOUNT.to_saved_format(), _DEFAULT_ACCOUNT_NAME_IBM_CLOUD: Account("ibm_cloud", "token-ibm-cloud", instance="crn:123").to_saved_format(), _DEFAULT_ACCOUNT_NAME_IBM_QUANTUM: Account("ibm_quantum", "token-ibm-quantum").to_saved_format(), }), self.subTest("filtered list of accounts"): accounts = list(AccountManager.list(channel="ibm_cloud").keys()) self.assertEqual(len(accounts), 2) self.assertListEqual(accounts, ["key1", _DEFAULT_ACCOUNT_NAME_IBM_CLOUD]) accounts = list(AccountManager.list(channel="ibm_quantum").keys()) self.assertEqual(len(accounts), 2) self.assertListEqual(accounts, ["key2", _DEFAULT_ACCOUNT_NAME_IBM_QUANTUM]) accounts = list( AccountManager.list(channel="ibm_cloud", default=True).keys()) self.assertEqual(len(accounts), 1) self.assertListEqual(accounts, [_DEFAULT_ACCOUNT_NAME_IBM_CLOUD]) accounts = list( AccountManager.list(channel="ibm_cloud", default=False).keys()) self.assertEqual(len(accounts), 1) self.assertListEqual(accounts, ["key1"]) accounts = list(AccountManager.list(name="key1").keys()) self.assertEqual(len(accounts), 1) self.assertListEqual(accounts, ["key1"])
def test_save_get(self): """Test save and get.""" # Each tuple contains the # - account to save # - the name passed to AccountManager.save # - the name passed to AccountManager.get sub_tests = [ (_TEST_IBM_QUANTUM_ACCOUNT, "acct-1", "acct-1"), (_TEST_IBM_CLOUD_ACCOUNT, "acct-2", "acct-2"), # verify default account name handling for ibm_cloud accounts (_TEST_IBM_CLOUD_ACCOUNT, None, _DEFAULT_ACCOUNT_NAME_IBM_CLOUD), (_TEST_IBM_CLOUD_ACCOUNT, None, None), # verify default account name handling for ibm_quantum accounts ( _TEST_IBM_QUANTUM_ACCOUNT, None, _DEFAULT_ACCOUNT_NAME_IBM_QUANTUM, ), # verify account override (_TEST_IBM_QUANTUM_ACCOUNT, "acct", "acct"), (_TEST_IBM_CLOUD_ACCOUNT, "acct", "acct"), ] for account, name_save, name_get in sub_tests: with self.subTest( f"for account type '{account.channel}' " f"using `save(name={name_save})` and `get(name={name_get})`" ): AccountManager.save( token=account.token, url=account.url, instance=account.instance, channel=account.channel, proxies=account.proxies, verify=account.verify, name=name_save, overwrite=True, ) self.assertEqual(account, AccountManager.get(name=name_get))
def test_get_none(self): """Test to get an account with an invalid name.""" with self.assertRaises(AccountNotFoundError): AccountManager.get(name="bla")