예제 #1
0
    def test_create_error(self):
        api = self.api
        resp = FakeAPIResponse()
        resp.status_code = 300
        api._request = Mock(return_value=(resp, None))

        self.assertRaises(exceptions.ClientException, api.create, self.account,
                          self.name)
예제 #2
0
 def test_from_response_http_status(self):
     fake_resp = FakeAPIResponse()
     fake_resp.status_code = 404
     exc = exceptions.from_response(fake_resp, None)
     self.assertTrue(isinstance(exc, exceptions.NotFound))
     fake_resp.status_code = 409
     exc = exceptions.from_response(fake_resp, None)
     self.assertTrue(isinstance(exc, exceptions.Conflict))
예제 #3
0
 def test_from_response(self):
     fake_resp = FakeAPIResponse()
     fake_resp.status_code = 500
     exc = exceptions.from_response(fake_resp, None)
     self.assertTrue(isinstance(exc, exceptions.ClientException))
     self.assertEqual(exc.http_status, fake_resp.status_code)
     self.assertEqual(exc.message, "n/a")
     self.assertTrue("HTTP 500" in str(exc))
예제 #4
0
    def test_container_create_exist(self):
        api = self.api
        resp = FakeAPIResponse()
        resp.status_code = 201
        api._request = Mock(return_value=(resp, None))

        name = random_str(32)
        result = api.container_create(self.account, name)
        self.assertEqual(result, False)
예제 #5
0
 def test_from_response_with_body(self):
     fake_resp = FakeAPIResponse()
     fake_resp.status_code = 500
     body = {"status": 300, "message": "Fake error"}
     exc = exceptions.from_response(fake_resp, body)
     self.assertTrue(isinstance(exc, exceptions.ClientException))
     self.assertEqual(exc.http_status, fake_resp.status_code)
     self.assertEqual(exc.status, 300)
     self.assertEqual(exc.message, "Fake error")
     self.assertTrue("HTTP 500" in str(exc))
     self.assertTrue("STATUS 300" in str(exc))
예제 #6
0
    def test_create_already_exists(self):
        api = self.api
        resp = FakeAPIResponse()
        resp.status_code = 200
        api._request = Mock(return_value=(resp, None))
        api.create(self.account, self.name)
        uri = "%s/reference/create" % self.uri_base
        params = {'acct': self.account, 'ref': self.name}

        api._request.assert_called_once_with(
            'POST', uri, params=params, headers=None)
예제 #7
0
    def test_create(self):
        api = self.api
        resp = FakeAPIResponse()
        resp.status_code = 201
        api._request = Mock(return_value=(resp, None))
        api.create(self.account, self.name)
        uri = "%s/reference/create" % self.uri_base
        params = {'acct': self.account, 'ref': self.name}

        data = json.dumps({'properties': {}})
        api._request.assert_called_with(
            'POST', uri, params=params, data=data, headers=None)
예제 #8
0
    def test_container_delete(self):
        api = self.api

        resp = FakeAPIResponse()
        resp.status_code = 204
        api._request = Mock(return_value=(resp, None))
        api.directory.unlink = Mock(return_value=None)
        name = random_str(32)
        api.container_delete(self.account, name, headers=self.headers)

        uri = "%s/container/destroy" % self.uri_base
        params = {'acct': self.account, 'ref': name}
        api._request.assert_called_once_with(
            'POST', uri, params=params, headers=self.headers)
예제 #9
0
 def test_container_show(self):
     api = self.api
     resp = FakeAPIResponse()
     name = random_str(32)
     cont_size = random.randint(1, 1000)
     resp.headers = {
         container_headers["size"]: cont_size
     }
     api._request = Mock(return_value=(resp, {}))
     info = api.container_show(self.account, name, headers=self.headers)
     uri = "%s/container/get_properties" % self.uri_base
     params = {'acct': self.account, 'ref': name}
     api._request.assert_called_once_with(
         'POST', uri, params=params, headers=self.headers)
     self.assertEqual(info, {})
예제 #10
0
    def test_container_create(self):
        api = self.api
        resp = FakeAPIResponse()
        resp.status_code = 204
        api._request = Mock(return_value=(resp, None))

        name = random_str(32)
        result = api.container_create(self.account, name, headers=self.headers)
        self.assertEqual(result, True)

        uri = "%s/container/create" % self.uri_base
        params = {'acct': self.account, 'ref': name}
        self.headers['x-oio-action-mode'] = 'autocreate'
        api._request.assert_called_once_with(
            'POST', uri, params=params, headers=self.headers)
예제 #11
0
 def test_container_show(self):
     api = self.api
     resp = FakeAPIResponse()
     name = random_str(32)
     cont_size = random.randint(1, 1000)
     resp.headers = {container_headers["size"]: cont_size}
     api._request = Mock(return_value=(resp, {}))
     info = api.container_show(self.account, name, headers=self.headers)
     uri = "%s/container/get_properties" % self.uri_base
     params = {'acct': self.account, 'ref': name}
     api._request.assert_called_once_with('POST',
                                          uri,
                                          params=params,
                                          headers=self.headers)
     self.assertEqual(info, {})
예제 #12
0
 def test_container_list(self):
     resp = FakeAPIResponse()
     name = random_str(32)
     marker = random_str(32)
     delimiter = random_str(32)
     end_marker = random_str(32)
     prefix = random_str(32)
     limit = random.randint(1, 1000)
     body = {"listing": [[name, 0, 0, 0]]}
     fake_endpoint = 'fake_endpoint'
     self.api.account._direct_request = Mock(return_value=(resp, body))
     self.api.account._get_account_addr = Mock(return_value=fake_endpoint)
     containers = self.api.container_list(self.account,
                                          limit=limit,
                                          marker=marker,
                                          prefix=prefix,
                                          delimiter=delimiter,
                                          end_marker=end_marker,
                                          headers=self.headers)
     params = {
         "id": self.account,
         "prefix": prefix,
         "delimiter": delimiter,
         "marker": marker,
         "end_marker": end_marker,
         "limit": limit
     }
     uri = "http://%s/v1.0/account/containers" % fake_endpoint
     self.api.account._direct_request.assert_called_once_with(
         'GET', uri, params=params, headers=self.headers)
     self.assertEqual(len(containers), 1)
예제 #13
0
    def test_container_delete(self):
        api = self.api

        resp = FakeAPIResponse()
        resp.status_code = 204
        api._request = Mock(return_value=(resp, None))
        api.directory.unlink = Mock(return_value=None)
        name = random_str(32)
        api.container_delete(self.account, name, headers=self.headers)

        uri = "%s/container/destroy" % self.uri_base
        params = {'acct': self.account, 'ref': name}
        api._request.assert_called_once_with('POST',
                                             uri,
                                             params=params,
                                             headers=self.headers)
예제 #14
0
    def test_container_create(self):
        api = self.api
        resp = FakeAPIResponse()
        resp.status_code = 201
        api.container._direct_request = Mock(return_value=(resp, None))

        name = random_str(32)
        result = api.container_create(self.account, name, headers=self.headers)
        self.assertEqual(result, True)

        uri = "%s/container/create" % self.uri_base
        params = {'acct': self.account, 'ref': name}
        self.headers['x-oio-action-mode'] = 'autocreate'
        data = json.dumps({'properties': {}, 'system': {}})
        api.container._direct_request.assert_called_once_with(
            'POST', uri, params=params, data=data, headers=self.headers)
예제 #15
0
 def test_destroy(self):
     api = self.api
     resp = FakeAPIResponse()
     api._direct_request = Mock(return_value=(resp, None))
     api.destroy(self.account, self.name)
     uri = "%s/reference/destroy" % self.uri_base
     params = {'acct': self.account, 'ref': self.name}
     api._direct_request.assert_called_once_with('POST', uri, params=params)
예제 #16
0
 def test_has(self):
     api = self.api
     resp = FakeAPIResponse()
     api._request = Mock(return_value=(resp, None))
     uri = "%s/reference/has" % self.uri_base
     params = {'acct': self.account, 'ref': self.name}
     self.assertTrue(api.has(self.account, self.name))
     api._request.assert_called_once_with(
         'GET', uri, params=params, headers=None)
예제 #17
0
 def test_renew(self):
     api = self.api
     service_type = random_str(32)
     resp = FakeAPIResponse()
     api._direct_request = Mock(return_value=(resp, None))
     api.renew(self.account, self.name, service_type)
     uri = "%s/reference/renew" % self.uri_base
     params = {'acct': self.account, 'ref': self.name, 'type': service_type}
     api._direct_request.assert_called_once_with('POST', uri, params=params)
예제 #18
0
 def test_delete_properties(self):
     api = self.api
     properties = [random_str(64)]
     resp = FakeAPIResponse()
     api._request = Mock(return_value=(resp, None))
     api.del_properties(self.account, self.name, properties)
     uri = "%s/reference/del_properties" % self.uri_base
     params = {'acct': self.account, 'ref': self.name}
     data = json.dumps(properties)
     api._request.assert_called_once_with(
         'POST', uri, data=data, params=params, headers=None)
예제 #19
0
    def test_object_show(self):
        api = self.api
        name = random_str(32)
        size = random.randint(1, 1000)
        content_hash = random_str(32)
        content_type = random_str(32)
        resp = FakeAPIResponse()
        resp.headers = {object_headers["name"]: name,
                        object_headers["size"]: size,
                        object_headers["hash"]: content_hash,
                        object_headers["mime_type"]: content_type}
        api._request = Mock(return_value=(resp, {'properties': {}}))
        obj = api.object_show(
            self.account, self.container, name, headers=self.headers)

        uri = "%s/content/get_properties" % self.uri_base
        params = {'acct': self.account, 'ref': self.container,
                  'path': name}
        api._request.assert_called_once_with(
            'POST', uri, params=params, headers=self.headers)
        self.assertIsNotNone(obj)
예제 #20
0
 def test_set_properties(self):
     api = self.api
     properties = {random_str(64): random_str(64)}
     resp = FakeAPIResponse()
     api._direct_request = Mock(return_value=(resp, None))
     api.set_properties(self.account, self.name, properties)
     uri = "%s/reference/set_properties" % self.uri_base
     params = {'acct': self.account, 'ref': self.name}
     data = json.dumps({'properties': properties})
     api._direct_request.assert_called_once_with('POST',
                                                 uri,
                                                 data=data,
                                                 params=params)
예제 #21
0
 def test_force(self):
     api = self.api
     service_type = random_str(32)
     services = {'seq': 1, 'type': service_type, 'host': '127.0.0.1:8000'}
     resp = FakeAPIResponse()
     api._request = Mock(return_value=(resp, None))
     api.force(self.account, self.name, service_type, services)
     uri = "%s/reference/force" % self.uri_base
     params = {'acct': self.account, 'ref': self.name,
               'type': service_type}
     data = json.dumps(services)
     api._request.assert_called_once_with(
         'POST', uri, data=data, params=params, headers=None)
예제 #22
0
    def test_object_show(self):
        api = self.api
        name = random_str(32)
        size = random.randint(1, 1000)
        content_hash = random_str(32)
        content_type = random_str(32)
        resp = FakeAPIResponse()
        resp.headers = {object_headers["name"]: name,
                        object_headers["size"]: str(size),
                        object_headers["hash"]: content_hash,
                        object_headers["mime_type"]: content_type}
        api.container._direct_request = Mock(
            return_value=(resp, {'properties': {}}))
        obj = api.object_show(
            self.account, self.container, name, headers=self.headers)

        uri = "%s/content/get_properties" % self.uri_base
        params = {'acct': self.account, 'ref': self.container,
                  'path': name}
        api.container._direct_request.assert_called_once_with(
            'POST', uri, params=params, data=None, headers=self.headers)
        self.assertIsNotNone(obj)
예제 #23
0
    def test_create_metadata(self):
        api = self.api
        resp = FakeAPIResponse()
        resp.status_code = 201
        api._request = Mock(return_value=(resp, None))

        metadata = {}
        k1 = random_str(32)
        v1 = random_str(32)

        k2 = random_str(32)
        v2 = random_str(32)

        metadata[k1] = v1
        metadata[k2] = v2

        api.create(self.account, self.name, metadata)
        uri = "%s/reference/create" % self.uri_base
        params = {'acct': self.account, 'ref': self.name}

        data = json.dumps({'properties': metadata})
        api._request.assert_called_once_with(
            'POST', uri, params=params, data=data, headers=None)
예제 #24
0
    def test_list(self):
        api = self.api
        service_type = random_str(32)
        resp = FakeAPIResponse()
        resp_body = [{"seq": 1,
                      "type": service_type,
                      "host": "127.0.0.1:6000",
                      "args": ""}]

        api._request = Mock(return_value=(resp, resp_body))
        l = api.list_services(self.account, self.name, service_type)
        uri = "%s/reference/show" % self.uri_base
        params = {'acct': self.account, 'ref': self.name,
                  'type': service_type}
        api._request.assert_called_once_with(
            'GET', uri, params=params, headers=None)
        self.assertEqual(l, resp_body)
예제 #25
0
    def test_container_update(self):
        api = self.api

        name = random_str(32)
        key = random_str(32)
        value = random_str(32)
        meta = {key: value}
        resp = FakeAPIResponse()
        api.container._direct_request = Mock(return_value=(resp, None))
        api.container_set_properties(
            self.account, name, meta, headers=self.headers)

        data = json.dumps({'properties': meta, 'system': {}})
        uri = "%s/container/set_properties" % self.uri_base
        params = {'acct': self.account, 'ref': name}
        api.container._direct_request.assert_called_once_with(
            'POST', uri, data=data, params=params, headers=self.headers)
예제 #26
0
    def test_object_delete(self):
        api = self.api
        name = random_str(32)
        resp_body = [
            chunk("AAAA", "0"), chunk("BBBB", "1"), chunk("CCCC", "2")
        ]
        resp = FakeAPIResponse()
        api.container._direct_request = Mock(return_value=(resp, resp_body))

        api.object_delete(
            self.account, self.container, name, headers=self.headers)

        uri = "%s/content/delete" % self.uri_base
        params = {'acct': self.account, 'ref': self.container,
                  'path': name}
        api.container._direct_request.assert_called_once_with(
            'POST', uri, params=params, headers=self.headers)
예제 #27
0
    def test_object_update(self):
        api = self.api

        name = random_str(32)
        key = random_str(32)
        value = random_str(32)
        meta = {key: value}
        resp = FakeAPIResponse()
        api._request = Mock(return_value=(resp, None))
        api.object_update(self.account,
                          self.container,
                          name,
                          meta,
                          headers=self.headers)

        data = json.dumps(meta)
        uri = "%s/content/set_properties" % self.uri_base
        params = {'acct': self.account, 'ref': self.container, 'path': name}
        api._request.assert_called_once_with('POST',
                                             uri,
                                             data=data,
                                             params=params,
                                             headers=self.headers)