class TestIBMQFactoryProvider(IBMQTestCase):
    """Tests for IBMQFactory provider related methods."""
    @requires_qe_access
    def _get_provider(self, qe_token=None, qe_url=None):
        """Return default provider."""
        return self.factory.enable_account(qe_token, qe_url)

    def setUp(self):
        """Initial test setup."""
        super().setUp()

        self.factory = IBMQFactory()
        self.provider = self._get_provider()
        self.credentials = self.provider.credentials

    def test_get_provider(self):
        """Test get single provider."""
        provider = self.factory.get_provider(hub=self.credentials.hub,
                                             group=self.credentials.group,
                                             project=self.credentials.project)
        self.assertEqual(self.provider, provider)

    def test_providers_with_filter(self):
        """Test providers() with a filter."""
        provider = self.factory.providers(hub=self.credentials.hub,
                                          group=self.credentials.group,
                                          project=self.credentials.project)[0]
        self.assertEqual(self.provider, provider)

    def test_providers_no_filter(self):
        """Test providers() without a filter."""
        providers = self.factory.providers()
        self.assertIn(self.provider, providers)
    def _wrapper(*args, **kwargs):
        ibmq_factory = IBMQFactory()
        qe_token = kwargs.pop('qe_token')
        qe_url = kwargs.pop('qe_url')
        provider = ibmq_factory.enable_account(qe_token, qe_url)
        if os.getenv('QE_HGP', None):
            hgp = os.getenv('QE_HGP').split('/')
            provider = ibmq_factory.get_provider(hub=hgp[0], group=hgp[1], project=hgp[2])
        kwargs.update({'provider': provider})

        return func(*args, **kwargs)
示例#3
0
def _get_custom_provider(ibmq_factory: IBMQFactory) -> Optional[AccountProvider]:
    """Find the provider for the specific hub/group/project, if any.

    Args:
        ibmq_factory: IBMQFactory instance with account already loaded.

    Returns:
        Custom provider or ``None`` if default is to be used.
    """
    hgp = os.getenv('QE_STAGING_HGP', None) if os.getenv('USE_STAGING_CREDENTIALS', '') else \
        os.getenv('QE_HGP', None)
    if hgp:
        hgp = hgp.split('/')
        return ibmq_factory.get_provider(hub=hgp[0], group=hgp[1], project=hgp[2])
    return None  # No custom provider.
示例#4
0
    def _wrapper(obj, *args, **kwargs):
        stg_token = os.getenv('QE_STG_TOKEN')
        stg_url = os.getenv('QE_STG_URL')
        stg_hub = os.getenv('QE_STG_HUB')
        if not (stg_token and stg_url and stg_hub):
            raise SkipTest('Skipping staging tests')

        credentials = Credentials(stg_token, stg_url)
        obj.using_ibmq_credentials = credentials.is_ibmq()
        ibmq_factory = IBMQFactory()

        try:
            # Disable account in case one is already in use
            ibmq_factory.disable_account()
        except IBMQAccountError:
            pass

        ibmq_factory.enable_account(credentials.token, credentials.url)
        provider = ibmq_factory.get_provider(hub=stg_hub)
        kwargs.update({'provider': provider})

        return func(obj, *args, **kwargs)