예제 #1
0
 def setUp(self):
     super(TestComputeAPI, self).setUp()
     self.api = AccountAPI(
         base_url='http://compute.localhost',
         auth_token=str(uuid.uuid4())
     )
     self.fake_orga_key = str(uuid.uuid4())
예제 #2
0
    def __init__(self, auth_token="", region='par1'):
        """Constructor."""
        if auth_token == "":
            logging.error("no auth token provided, exiting")
            exit(-1)

        # --------------------------------
        self.auth_token = auth_token
        self.region = region
        self.org_id = None
        # --------------------------------

        logging.debug("init scaleway")
        self.api_compute = ComputeAPI(region=self.region,
                                      auth_token=self.auth_token)
        self.api_account = AccountAPI(auth_token=self.auth_token)
예제 #3
0
 def get_account_data(self):
     api = AccountAPI(auth_token=self.token)
     res = api.query().organizations.get()
     return res
예제 #4
0
    def test_get_resources(self):
        def compare_results(permissions,
                            service=None,
                            name=None,
                            resource=None,
                            result=None,
                            include_locked=False):
            """ Resets the auth API endpoint /tokens/:id/permissions, call
            get_resources and compare results with what is expected.
            """
            if result is None:
                result = []

            self.make_fake_perms(permissions)
            resources = self.api.get_resources(service=service,
                                               name=name,
                                               resource=resource,
                                               include_locked=include_locked)
            # XOR on two sets returns the difference between them
            # Used because we don't know in which order api.get_resources
            # returns the resources.
            self.assertFalse(set(resources) ^ set(result))

            # Check the API has been requested with
            # ?include_locked set to `include_locked`
            self.assertEqual(
                httpretty.last_request().querystring.get('include_locked'),
                [str(include_locked)])

        # No permission, no resource
        compare_results({}, result=[])

        # Simple permissions
        compare_results(self.fake_permissions,
                        service='compute',
                        name='can_boot',
                        result=['server1', 'server2'])

        compare_results(self.fake_permissions,
                        service='compute',
                        name='can_boot',
                        result=['server1', 'server2'])

        compare_results(self.fake_permissions,
                        service='compute',
                        name='can_boot',
                        resource='server2',
                        result=['server2'])

        compare_results(self.fake_permissions,
                        service='compute',
                        name='can_delete',
                        result=['server1'])

        compare_results(self.fake_permissions,
                        service='compute',
                        name='can_delete',
                        resource='server1',
                        result=['server1'])

        compare_results(self.fake_permissions,
                        service='compute',
                        name='can_write',
                        result=[])

        # Nested permissions
        compare_results(self.fake_permissions,
                        service='account',
                        name='token:read',
                        result=['token1', 'token2', 'token3'])

        compare_results(self.fake_permissions,
                        service='account',
                        name='token:read',
                        resource='invalid',
                        result=[])

        compare_results(self.fake_permissions,
                        service='account',
                        name='token:read',
                        resource='token2',
                        result=['token2'])

        compare_results(self.fake_permissions,
                        service='account',
                        name='token:write',
                        result=['token1', 'token2', 'token4'])

        compare_results(self.fake_permissions,
                        service='account',
                        name='token:admin',
                        result=['token1', 'token2'])

        # Include lock set to True
        compare_results(self.fake_permissions,
                        service='account',
                        name='token:admin',
                        result=['token1', 'token2'],
                        include_locked=True)

        # Test JWT
        self.api = AccountAPI(base_url='http://compute.localhost',
                              auth_jwt=str(uuid.uuid4()))
        compare_results(self.fake_permissions,
                        service='compute',
                        name='can_boot',
                        result=['server1', 'server2'])
예제 #5
0
 def test_get_resources_with_empty_token(self):
     self.api = AccountAPI()
     self.assertEqual(self.api.get_resources(), [])