예제 #1
0
 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,
         )
예제 #2
0
 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,
         )
예제 #3
0
 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"))
예제 #4
0
    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)
예제 #5
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"))
예제 #6
0
    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)
예제 #7
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"])
예제 #8
0
    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))
예제 #9
0
 def test_get_none(self):
     """Test to get an account with an invalid name."""
     with self.assertRaises(AccountNotFoundError):
         AccountManager.get(name="bla")