def test_hardware_backend2(self): with mock.patch( 'quantuminspire.qiskit.quantum_inspire_provider.QuantumInspireAPI' ) as api: quantum_inpire_provider = QuantumInspireProvider() with self.assertRaises(QiskitBackendError): quantum_inpire_provider.backends(name='quantum-inspire') email = '*****@*****.**' secret = 'secret' quantum_inpire_provider.set_basic_authentication(email, secret) authentication = BasicAuthentication(email, secret) api.assert_called_with(QI_URL, authentication, None) quantum_inpire_provider._api.get_backend_types.return_value = [ self.hardware_backend_type2 ] backend = quantum_inpire_provider.get_backend(name='qi_hardware') self.assertEqual('qi_hardware', backend.name()) self.assertEqual(backend.configuration().coupling_map, [[0, 1], [1, 0]]) self.assertFalse(backend.configuration().simulator) self.assertEqual(2, backend.configuration().n_qubits) self.assertTrue(backend.configuration().memory) self.assertEqual(4096, backend.configuration().max_shots) self.assertEqual(1, backend.configuration().max_experiments) self.assertFalse(backend.configuration().conditional) self.assertEqual(backend.configuration().basis_gates, [ 'rx', 'ry', 'rz', 'x', 'y', 'z', 'h', 'id', 't', 'tdg', 's', 'sdg', 'cz', 'cx', 'swap', 'ccx', 'u1', 'u2', 'u3' ])
def test_get_authentication_basic_stdin(self): email = os.environ.get('QI_EMAIL', None) if email is not None: os.environ.pop('QI_EMAIL') email = '*****@*****.**' secret_password = '******' # somehow mocking getpass.getpass is not enough for different OS with patch("builtins.open", mock_open()) as mock_file, \ patch("builtins.input") as mock_input, \ patch("builtins.print") as mock_print, \ patch("getpass.getpass") as mock_getpass, \ patch("getpass.win_getpass") as mock_win_getpass, \ patch("sys.stdin") as mock_sys_stdin, \ patch("getpass.unix_getpass") as mock_unix_getpass, \ patch("os.open", side_effect = OSError('foo')), \ patch("sys.stdin.fileno", side_effect=ValueError('foo')), \ patch("getpass._raw_input") as mock_raw_input, \ patch("quantuminspire.credentials.load_account") as mock_load_account, \ patch("warnings.warn") as mock_warn: mock_load_account.return_value = None mock_input.return_value = email mock_getpass.return_value = secret_password mock_raw_input.return_value = secret_password mock_win_getpass.return_value = secret_password mock_unix_getpass.return_value = secret_password auth = get_authentication() auth_expected = BasicAuthentication(email, secret_password) self.assertEqual(auth, auth_expected)
def test_hardware_backend(self): with mock.patch( 'quantuminspire.qiskit.quantum_inspire_provider.QuantumInspireAPI' ) as api: quantum_inpire_provider = QuantumInspireProvider() with self.assertRaises(ApiError): quantum_inpire_provider.backends(name='quantum-inspire') email = '*****@*****.**' secret = 'secret' quantum_inpire_provider.set_basic_authentication(email, secret) authentication = BasicAuthentication(email, secret) api.assert_called_with(QI_URL, authentication) quantum_inpire_provider._api.get_backend_types.return_value = [ self.hardware_backend_type ] backend = quantum_inpire_provider.get_backend(name='qi_hardware') self.assertEqual('qi_hardware', backend.name()) self.assertEqual(backend.configuration().coupling_map, [(0, 2), (1, 2), (2, 0), (2, 1), (2, 3), (2, 4), (3, 2), (4, 2)]) self.assertFalse(backend.configuration().simulator) self.assertEqual(5, backend.configuration().n_qubits) self.assertTrue(backend.configuration().memory) self.assertEqual(2048, backend.configuration().max_shots) self.assertEqual(1, backend.configuration().max_experiments) self.assertFalse(backend.configuration().conditional) self.assertEqual(backend.configuration().basis_gates, ['rx', 'rz', 'x', 's', 'z', 'h', 'tdg', 'cz'])
def get_basic_authentication(email: str, password: str) -> BasicAuthentication: """Set up basic authentication for Quantum Inspire to be used in the API. :param email: a valid email address. :param password: password for the account. :return: The basic authentication for Quantum Inspire. """ return BasicAuthentication(email, password)
def test_get_authentication_basic(self): email = '*****@*****.**' secret_password = '******' with patch("builtins.open", mock_open()) as mock_file, \ patch("quantuminspire.credentials.load_account") as mock_load_account, \ patch.dict('os.environ', values={'QI_EMAIL': email, 'QI_PASSWORD': secret_password}): mock_load_account.return_value = None auth = get_authentication() auth_expected = BasicAuthentication(email, secret_password) self.assertEqual(auth, auth_expected)
def get_basic_authentication(email: str, password: str) -> BasicAuthentication: """ Set up basic authentication for Quantum Inspire to be used in the API. Args email: A valid email address. password: Password for the account. Returns: The basic authentication for Quantunm Inspire. """ return BasicAuthentication(email, password)
def test_set_authentication(self): with mock.patch( 'quantuminspire.qiskit.quantum_inspire_provider.QuantumInspireAPI' ) as api: quantum_inpire_provider = QuantumInspireProvider() with self.assertRaises(QiskitBackendError): quantum_inpire_provider.backends(name='quantum-inspire') token = 'This_is_a_nice_looking_token' authentication = TokenAuthentication(token, scheme="token") quantum_inpire_provider.set_authentication(authentication) api.assert_called_with(QI_URL, authentication, None) authentication = BasicAuthentication('email', 'password') quantum_inpire_provider.set_authentication(authentication) api.assert_called_with(QI_URL, authentication, None)
def test_set_basic_authentication_with_url(self): with mock.patch( 'quantuminspire.qiskit.quantum_inspire_provider.QuantumInspireAPI' ) as api: api.get_backend_types.return_value = [self.simulator_backend_type] quantum_inpire_provider = QuantumInspireProvider() with self.assertRaises(QiskitBackendError): quantum_inpire_provider.backends(name='quantum-inspire') email = '*****@*****.**' secret = 'secret' url = 'https/some-api.api' quantum_inpire_provider.set_basic_authentication( email, secret, url) authentication = BasicAuthentication(email, secret) api.assert_called_with(url, authentication, None)
def test_set_basic_authentication(self): with mock.patch( 'quantuminspire.qiskit.quantum_inspire_provider.QuantumInspireAPI' ) as api: quantum_inpire_provider = QuantumInspireProvider() with self.assertRaises(QiskitBackendError): quantum_inpire_provider.backends(name='quantum-inspire') email = '*****@*****.**' secret = 'secret' quantum_inpire_provider.set_basic_authentication(email, secret) authentication = BasicAuthentication(email, secret) api.assert_called_with(QI_URL, authentication, None) quantum_inpire_provider._api.get_backend_types.return_value = [ self.simulator_backend_type ] backend = quantum_inpire_provider.get_backend(name='qi_simulator') self.assertEqual('qi_simulator', backend.name())
def test_backends(self): with mock.patch( 'quantuminspire.qiskit.quantum_inspire_provider.QuantumInspireAPI' ) as api: quantum_inpire_provider = QuantumInspireProvider() with self.assertRaises(ApiError): quantum_inpire_provider.backends(name='quantum-inspire') email = '*****@*****.**' secret = 'secret' quantum_inpire_provider.set_basic_authentication(email, secret) authentication = BasicAuthentication(email, secret) api.assert_called_with(QI_URL, authentication) quantum_inpire_provider._api.get_backend_types.return_value = [{ 'name': 'qi_simulator', 'is_allowed': True }] backend = quantum_inpire_provider.get_backend(name='qi_simulator') self.assertEqual('qi_simulator', backend.name()) with self.assertRaises(QiskitBackendNotFoundError) as error: quantum_inpire_provider.get_backend(name='not-quantum-inspire') self.assertEqual(('No backend matches the criteria', ), error.exception.args)
def test_get_basic_authentication(self): email = '*****@*****.**' secret_password = '******' auth = get_basic_authentication(email, secret_password) auth_expected = BasicAuthentication(email, secret_password) self.assertEqual(auth, auth_expected)
for event in d: event['scroll'] = scroll_id print(event) try: client.action(schema, ['events', 'create'], params=event) except Exception as e: print(e) finally: pass # create(scroll, title, text, datetime, image, [mediatype], # [source_url], [source_date], [content_url]) # print('var oldRadioNews =', json.dumps(d, sort_keys=True, indent=4), ";\n") if __name__ == "__main__": auth = BasicAuthentication( username='******', password='******' ) client = Client(auth=auth) print(client) schema = client.get('http://127.0.0.1:8000/schema') print(schema) new_scroll = client.action(schema, ['api', '0', 'scrolls', 'create'], params={"title": "WWII Radio News"}) scroll_d = dict(new_scroll) scroll_url = "http://127.0.0.1:8000/scrolls/{}/".format(scroll_d['id']) print(scroll_url) main(client, scroll_url)