def test_put(self): def op(url, **kw): response, content = request_and_verify(self, 200, url, "GET", **kw) feed_hash = json.loads(content) missing = Hashes.missing_fields(feed_hash, ("url", "source", "active")) if missing: self.fail("missing fields: %s" % missing) url = self.__feed_url(test_id(self)) source_name = self.test_id feed = self.__feed_hash() body = json.dumps(feed) headers = api_login_headers() try: create_put_wrapper(self, url, op, headers=headers, body=body) finally: # hack to delete source for feed request_and_verify(self, 204, "%s/%s" % (self.base_sources_url, source_name), "DELETE", headers=headers)
def test_delete(self): url = self._test_url() create_put_wrapper(self, url, lambda url, **kw: None, headers=self._request_headers(), **self._request_keywords()) # verifies that delete works request_and_verify(self, 404, url, "GET", headers=self._request_headers(), **self._request_keywords())
def test_put_malformed_body(self): url = self.__feed_url(test_id(self)) request_and_verify(self, 400, url, "PUT", headers=api_login_headers(), body="hi")
def test_post_malformed_body(self): request_and_verify(self, 400, self.base_url, "POST", headers=self._login_headers(), body="hi", **self._request_keywords())
def test_get_nonexistent(self): url = self._test_url() request_and_verify(self, 404, url, "GET", headers=self._request_headers(), **self._request_keywords())
def test_delete(self): url_ref = [] keywords = {} def _op(url, **kw): url_ref.append(url) keywords.update(kw) body = json.dumps(self.__artifact_hash()) _create_artifact_wrapper(self, self.base_url, self.source_url, _op, headers=self._login_headers(), body=body, **self._request_keywords()) # verify deletion url = url_ref.pop() request_and_verify(self, 404, url, "GET", **keywords)
def op(url, **kw): response, content = request_and_verify(self, 200, url, "GET", **kw) feed_hash = json.loads(content) missing = Hashes.missing_fields(feed_hash, ("url", "source", "active")) if missing: self.fail("missing fields: %s" % missing)
def _op(url, **kw): response, content = request_and_verify(self, 200, url, "GET", **kw) artifact_hash = json.loads(content) missing = Hashes.missing_fields( artifact_hash, ('guid', 'source', 'content-type', 'modified', 'modified-by', 'body')) if missing: self.fail("missing artifact fields: %s" % missing)
def _create_artifact_wrapper(test_case, base_url, source_url, operation, **kw): """ handles artifact creation and deletion. params: operation - a method that is inject with the URL of a new artifact. """ response, content = request_and_verify(test_case, 204, base_url, "POST", **kw) try: location_key = "location" if not location_key in response: test_case.fail("header '%s' not found in response" % location_key) artifact_url = response[location_key] operation(artifact_url, **kw) finally: request_and_verify(test_case, 204, artifact_url, "DELETE", **kw) request_and_verify(test_case, 204, source_url, "DELETE", **kw)
def op(url, **kw): # post content again request_and_verify(self, 409, url, "PUT", **kw)
def _op(url, **kw): response, content = request_and_verify(self, 200, url, "GET", **kw) artifact_hash = json.loads(content) missing = Hashes.missing_fields(artifact_hash, ('guid', 'source', 'content-type', 'modified', 'modified-by', 'body')) if missing: self.fail("missing artifact fields: %s" % missing)
def test_get_nonexistent(self): url = self._build_artifact_url() request_and_verify(self, 404, url, "GET", headers=self._login_headers(), **self._request_keywords())
def test_get_nonexistent(self): url = self.__feed_url(test_id(self)) request_and_verify(self, 404, url, "GET", headers=api_login_headers())
def test_post_unauthorized(self): url = self._build_artifact_url() response, content = request_and_verify(self, (401, 403), self.base_url, "POST")
def _op(url, **kw): # post content again request_and_verify(self, 409, self.base_url, "POST", **kw)
def test_put_unauthorized(self): url = self.__feed_url(test_id(self)) response, content = request_and_verify(self, 403, url, "PUT")