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)
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)
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()])
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)
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')
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)
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')
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')
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
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')
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)
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()])
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)
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')
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)
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)