コード例 #1
0
    def test_auth2_credentials(self):
        """Test converting already API 2 auth credentials."""
        with custom_qiskitrc():
            store_credentials(Credentials('A', url=QE2_AUTH_URL))
            credentials = update_credentials(force=True)

            # No credentials should be returned.
            self.assertIsNone(credentials)
コード例 #2
0
    def test_api2_non_auth_credentials(self):
        """Test converting api 2 non auth credentials."""
        with custom_qiskitrc():
            store_credentials(Credentials('A', url=QE2_URL))
            _ = update_credentials(force=True)

            # Assert over the stored (updated) credentials.
            loaded_accounts, _ = read_credentials_from_qiskitrc()
            self.assertCorrectApi2Credentials('A', loaded_accounts)
コード例 #3
0
 def test_save_preferences_credentials(self):
     """Test saving both preferences and credentials."""
     preferences = self._get_pref_dict()
     credentials = Credentials('QISKITRC_TOKEN', url=QE2_AUTH_URL)
     with custom_qiskitrc():
         store_preferences(preferences)
         store_credentials(credentials)
         stored_cred, stored_pref = read_credentials_from_qiskitrc()
         self.assertEqual(preferences, stored_pref)
         self.assertEqual(credentials, stored_cred[credentials.unique_id()])
コード例 #4
0
    def test_qconsole_credentials(self):
        """Test converting Qconsole credentials."""
        with custom_qiskitrc():
            store_credentials(
                Credentials('A', url=IBMQ_TEMPLATE.format('a', 'b', 'c')))
            _ = update_credentials(force=True)

            # Assert over the stored (updated) credentials.
            loaded_accounts, _ = read_credentials_from_qiskitrc()
            self.assertCorrectApi2Credentials('A', loaded_accounts)
コード例 #5
0
    def test_unknown_credentials(self):
        """Test converting credentials with an unknown URL."""
        with custom_qiskitrc():
            store_credentials(Credentials('A', url='UNKNOWN_URL'))
            credentials = update_credentials(force=True)

            # No credentials should be returned nor updated.
            self.assertIsNone(credentials)
            loaded_accounts, _ = read_credentials_from_qiskitrc()
            self.assertEqual(
                list(loaded_accounts.values())[0].url, 'UNKNOWN_URL')
コード例 #6
0
 def test_remove_credentials(self):
     """Test removing credentials when preferences are set."""
     preferences = self._get_pref_dict()
     credentials = Credentials('QISKITRC_TOKEN', url=QE2_AUTH_URL)
     with custom_qiskitrc():
         store_credentials(credentials)
         store_preferences(preferences)
         configrc.remove_credentials(credentials)
         stored_cred, stored_pref = read_credentials_from_qiskitrc()
         self.assertEqual(preferences, stored_pref)
         self.assertFalse(stored_cred)
コード例 #7
0
    def test_qconfig_over_all(self):
        """Test order, with qconfig"""
        credentials = Credentials('QISKITRC_TOKEN', url=QE2_AUTH_URL)

        with custom_qiskitrc():
            # Prepare the credentials: qconfig, env and qiskitrc present
            store_credentials(credentials)
            with custom_qconfig(b"APItoken='QCONFIG_TOKEN'"),\
                    custom_envs({'QE_TOKEN': 'ENVIRON_TOKEN'}):
                credentials, _ = discover_credentials()

        self.assertEqual(len(credentials), 1)
        self.assertEqual(list(credentials.values())[0].token, 'QCONFIG_TOKEN')
コード例 #8
0
    def test_environ_over_qiskitrc(self):
        """Test order, without qconfig"""
        credentials = Credentials('QISKITRC_TOKEN', url=QE_URL)

        with custom_qiskitrc():
            # Prepare the credentials: both env and qiskitrc present
            store_credentials(credentials)
            with no_file('Qconfig.py'), custom_envs({'QE_TOKEN': 'ENVIRON_TOKEN',
                                                     'QE_URL': 'ENVIRON_URL'}):
                credentials = discover_credentials()

        self.assertEqual(len(credentials), 1)
        self.assertEqual(list(credentials.values())[0].token, 'ENVIRON_TOKEN')
コード例 #9
0
    def save(self):
        if self._credentials_changed:
            try:
                dict = read_credentials_from_qiskitrc()
                if dict is not None:
                    for credentials in dict.values():
                        remove_credentials(credentials)
            except:
                self._credentials = OrderedDict()

            for credentials in self._credentials.values():
                store_credentials(credentials, overwrite=True)

            self._credentials_changed = False
コード例 #10
0
    def test_environ_over_qiskitrc(self) -> None:
        """Test credential discovery order."""
        credentials = Credentials('QISKITRC_TOKEN', url=QE2_AUTH_URL)

        with custom_qiskitrc():
            # Prepare the credentials: both env and qiskitrc present
            store_credentials(credentials)
            with custom_envs({
                    'QE_TOKEN': 'ENVIRON_TOKEN',
                    'QE_URL': 'ENVIRON_URL'
            }):
                credentials, _ = discover_credentials()

        self.assertEqual(len(credentials), 1)
        self.assertEqual(list(credentials.values())[0].token, 'ENVIRON_TOKEN')
コード例 #11
0
    def test_proxy_credentials(self):
        """Test converting credentials with proxy values."""
        with custom_qiskitrc():
            store_credentials(Credentials('A',
                                          url=IBMQ_TEMPLATE.format('a', 'b', 'c'),
                                          proxies=PROXIES))
            _ = update_credentials(force=True)

            # Assert over the stored (updated) credentials.
            loaded_accounts = read_credentials_from_qiskitrc()
            self.assertCorrectApi2Credentials('A', loaded_accounts)

            # Extra assert on preserving proxies.
            credentials = list(loaded_accounts.values())[0]
            self.assertEqual(credentials.proxies, PROXIES)
コード例 #12
0
 def test_update_preferences_with_credentials(self):
     """Test updating preferences with credentials."""
     preferences = self._get_pref_dict()
     pref2 = self._get_pref_dict(pref_val=False)
     credentials = Credentials('QISKITRC_TOKEN', url=QE2_AUTH_URL)
     credentials2 = Credentials('QISKITRC_TOKEN_2', url=QE2_AUTH_URL)
     with custom_qiskitrc():
         store_preferences(preferences)
         store_credentials(credentials)
         # Update preferences.
         store_preferences(pref2)
         stored_cred, stored_pref = read_credentials_from_qiskitrc()
         self.assertEqual(pref2, stored_pref)
         self.assertEqual(credentials, stored_cred[credentials.unique_id()])
         # Update credentials.
         store_credentials(credentials2, overwrite=True)
         stored_cred, stored_pref = read_credentials_from_qiskitrc()
         self.assertEqual(pref2, stored_pref)
         self.assertEqual(credentials2,
                          stored_cred[credentials2.unique_id()])
コード例 #13
0
    def test_store_credentials_overwrite(self):
        """Test overwriting qiskitrc credentials."""
        credentials = Credentials('QISKITRC_TOKEN', url=QE2_AUTH_URL)
        credentials2 = Credentials('QISKITRC_TOKEN_2', url=QE2_AUTH_URL)

        factory = IBMQFactory()

        with custom_qiskitrc():
            store_credentials(credentials)
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")

            # Get the logger for `store_credentials`.
            config_rc_logger = logging.getLogger(store_credentials.__module__)

            # Attempt overwriting.
            with self.assertLogs(logger=config_rc_logger,
                                 level='WARNING') as log_records:
                store_credentials(credentials)
                self.assertIn('already present', log_records.output[0])

            with no_file('Qconfig.py'), no_envs(
                    CREDENTIAL_ENV_VARS), mock_ibmq_provider():
                # Attempt overwriting.
                store_credentials(credentials2, overwrite=True)
                factory.load_account()

        # Ensure that the credentials are the overwritten ones.
        self.assertEqual(factory._credentials, credentials2)
コード例 #14
0
    def test_store_credentials_overwrite(self):
        """Test overwriting qiskitrc credentials."""
        credentials = Credentials('QISKITRC_TOKEN', url=QE_URL, hub='HUB')
        credentials2 = Credentials('QISKITRC_TOKEN_2', url=QE_URL)

        with custom_qiskitrc():
            store_credentials(credentials)
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            # Attempt overwriting.
            with warnings.catch_warnings(record=True) as w:
                store_credentials(credentials)
                self.assertIn('already present', str(w[0]))

            with no_file('Qconfig.py'), no_envs(
                    CREDENTIAL_ENV_VARS), mock_ibmq_provider():
                # Attempt overwriting.
                store_credentials(credentials2, overwrite=True)
                IBMQ.load_accounts()

        # Ensure that the credentials are the overwritten ones - note that the
        # 'hub' parameter was removed.
        self.assertEqual(len(IBMQ._accounts), 1)
        self.assertEqual(
            list(IBMQ._accounts.values())[0].credentials.token,
            'QISKITRC_TOKEN_2')
コード例 #15
0
    def test_multiple_credentials(self):
        """Test converting multiple credentials."""
        with custom_qiskitrc():
            store_credentials(Credentials('A', url=QE2_AUTH_URL))
            store_credentials(
                Credentials('B', url=IBMQ_TEMPLATE.format('a', 'b', 'c')))
            store_credentials(
                Credentials('C', url=IBMQ_TEMPLATE.format('d', 'e', 'f')))
            _ = update_credentials(force=True)

            # Assert over the stored (updated) credentials.
            loaded_accounts, _ = read_credentials_from_qiskitrc()
            # We don't assert over the token, as it depends on the order of
            # the qiskitrc, which is not guaranteed.
            self.assertCorrectApi2Credentials(None, loaded_accounts)
コード例 #16
0
    def test_store_credentials_overwrite(self):
        """Test overwriting qiskitrc credentials."""
        credentials = Credentials('QISKITRC_TOKEN', url=QE2_AUTH_URL)
        credentials2 = Credentials('QISKITRC_TOKEN_2', url=QE2_AUTH_URL)

        factory = IBMQFactory()

        with custom_qiskitrc():
            store_credentials(credentials)
            # Cause all warnings to always be triggered.
            warnings.simplefilter("always")
            # Attempt overwriting.
            with warnings.catch_warnings(record=True) as w:
                store_credentials(credentials)
                self.assertIn('already present', str(w[0]))

            with no_file('Qconfig.py'), no_envs(CREDENTIAL_ENV_VARS), mock_ibmq_provider():
                # Attempt overwriting.
                store_credentials(credentials2, overwrite=True)
                factory.load_account()

        # Ensure that the credentials are the overwritten ones.
        self.assertEqual(factory._credentials, credentials2)