Testing utilities

Data generation


Generate a random organization object, with:

  • name, random, example: "org-abc123"
  • title, random, example: "Organization abc123"
  • description, random
  • image, url pointing to a random-generated pic

Generate a random group object, with:

  • name, random, example: "grp-abc123"
  • title, random, example: "Group abc123"
  • description, random
  • image, url pointing to a random-generated pic

Generate a dataset, populated with random data.


  • name – random string, in the form dataset-{random}
  • title – random string, in the form Dataset {random}
  • author – random-generated name
  • author_email – random-generated email address
  • license_id – random license id. One of cc-by, cc-zero, cc-by-sa or notspecified.
  • maintainer – random-generated name
  • maintainer_email – random-generated email address
  • notes – random string, containing some markdown
  • owner_org – set to None
  • private – Fixed to False
  • tags – random list of tags (strings)
  • type – fixed string: "dataset"
  • url – random url of dataset on an “external source”
  • extras – dictionary containing random key / value pairs
  • groups – empty list
  • resources – list of random resources
  • relationships – empty list


The owner_org and groups fields will be blank, as they must match with existing groups / organizations and we don’t have access to database from here (nor is it in the scope of this function!)


Generate a random resource, to be put in a dataset.


  • url – resource URL on an “external source”
  • resource_type – one of api or file
  • name – random-generated name
  • format – a random format (eg: csv, json)
  • description – random generated string

Generate amount random tags. Each tag is in the form tag-<random-int>.

Returns:a list of tag names

Generate a dict with amount random key/value pairs.

ckan_api_client.tests.utils.generate.generate_data(dataset_count=50, orgs_count=10, groups_count=15)[source]

Generate a bunch of random data. Will also associate datasets with random organizations / groups.

Returns:a dict with the dataset, organization and group keys; each of them a dict of {key: object}.

HTTP Utilities

Utilities for handling / checking HTTP responses

ckan_api_client.tests.utils.http.check_response_ok(response, status_code=200)[source]


deprecated function. Use check_api_v3_response().

ckan_api_client.tests.utils.http.check_response_error(response, status_code)[source]


deprecated function. Use check_api_v3_error().

ckan_api_client.tests.utils.http.check_api_v3_response(response, status_code=200)[source]

Make sure that response is a valid successful response from API v3.

  • check http status code to be in the 200-299 range
  • check http status code to match status_code
  • check content-type to be application/json
  • check charset to be utf-8
  • check content body to be valid json
  • make sure response object contains the success, result and help keys.
  • check that success is True
  • check that error key is not in the response
  • response – a requests response
  • status_code – http status code to be checked (default: 200)
ckan_api_client.tests.utils.http.check_api_v3_error(response, status_code)[source]

Make sure that response is a valid error response from API v3.

  • check http status code to match status_code
  • response – a requests response
  • status_code – http status code to be checked


String generation functions.


Generate random password of the given length.

Beware that the string will be generate as random data from urandom, and returned as headecimal string of twice the length.


Generate a random string, made of ascii letters + digits


Generate a random id, made of lowercase ascii letters + digits


Generate a random dataset name

ckan_api_client.tests.utils.strings.gen_picture(s, size=200)[source]

Generate URL to picture from some text hash

ckan_api_client.tests.utils.strings.gen_gravatar(s, size=200)[source]

Return URL for gravatar of md5 of string s

ckan_api_client.tests.utils.strings.gen_robohash(s, size=200)[source]

Return URL for robohash pic for sha1 hash of string s


Utility functions to validate expectations

ckan_api_client.tests.utils.validation.check_dataset(dataset, expected)[source]

Make sure dataset matches the expected one

ckan_api_client.tests.utils.validation.check_group(group, expected)[source]

Make sure group matches the expected one

ckan_api_client.tests.utils.validation.check_organization(organization, expected)[source]

Make sure organization matches the expected one