def test_search_invalid(client, settings, require_login, verify_clients): """A GET to the search endpoint should return 200 also with an invalid query, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(SEARCH_URL + '?q=a') validate_status_code(response, require_login) if response.status_code == 200: assert 'Invalid search query' in response.content.decode('utf-8')
def test_update_status_code_wrong_imagename(client, settings, require_login, verify_clients): """Trying to update an image with a payload for a different image should return 400 Bad Request, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.generic('POST', EXISTING_IMAGE_UPDATE_URL, '{"image_name": "non_existing_image_example", "os": "os1"}') validate_status_code(response, require_login, verify_clients=verify_clients, default=400)
def test_client_head(client, settings, require_login, verify_clients): """A HEAD to the client endpoint should return just the client's version and checksum, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.head(CLIENT_URL) validate_status_code(response, require_login, verify_clients=verify_clients) if response.status_code == 200: assert response[views.CLIENT_VERSION_HEADER] == tests_deb.CLIENT_VERSION assert response[views.CLIENT_CHECKSUM_HEADER] == tests_deb.CLIENT_CHECKSUM_DUMMY_2 else: assert views.CLIENT_VERSION_HEADER not in response assert views.CLIENT_CHECKSUM_HEADER not in response assert response.content.decode('utf-8') == ''
def test_client_get(client, settings, require_login, verify_clients): """A GET to the client endpoint should return the client with its version and checksum, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(CLIENT_URL) validate_status_code(response, require_login, verify_clients=verify_clients) if response.status_code == 200: assert response[views.CLIENT_VERSION_HEADER] == tests_deb.CLIENT_VERSION assert response[views.CLIENT_CHECKSUM_HEADER] == tests_deb.CLIENT_CHECKSUM_DUMMY_1 assert response.content.decode('utf-8') == tests_deb.CLIENT_BODY_DUMMY_1 else: assert views.CLIENT_VERSION_HEADER not in response assert views.CLIENT_CHECKSUM_HEADER not in response if response.status_code == 403: assert 'Client certificate validation failed' in response.content.decode('utf-8')
def test_client_get_no_version(client, settings, require_login, verify_clients): """A GET to the client endpoint should return the client and its checksum also if the version is not set.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(CLIENT_URL) validate_status_code(response, require_login, verify_clients=verify_clients) if response.status_code == 200: assert response[views.CLIENT_VERSION_HEADER] == '' assert response[views.CLIENT_CHECKSUM_HEADER] == tests_deb.CLIENT_CHECKSUM_NO_VERSION assert response.content.decode('utf-8') == tests_deb.CLIENT_BODY_NO_VERSION else: assert views.CLIENT_VERSION_HEADER not in response assert views.CLIENT_CHECKSUM_HEADER not in response if response.status_code == 403: assert 'Client certificate validation failed' in response.content.decode('utf-8')
def test_detail_delete_status_code_existing(client, settings, require_login, verify_clients): """Deleting an existing image should return a 204 No Content, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) image = Image.objects.get(name=IMAGENAME) image_packages = ImagePackage.objects.filter(image=image) assert image is not None assert len(image_packages) > 0 response = client.delete(EXISTING_IMAGE_URL) validate_status_code(response, require_login, verify_clients=verify_clients, default=204) if response.status_code == 204: # The image and all its packages were deleted assert len(ImagePackage.objects.filter(image=image.id)) == 0 with pytest.raises(Image.DoesNotExist, match='Image matching query does not exist'): Image.objects.get(name=IMAGENAME) else: # Nothing was changed assert image == Image.objects.get(name=IMAGENAME) assert list(image_packages) == list(ImagePackage.objects.filter(image=image)) if response.status_code == 403: assert 'Client certificate validation failed' in response.content.decode('utf-8')
def test_detail_delete_status_code_existing(client, settings, require_login, verify_clients): """Deleting an existing host should return a 204 No Content, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) # Get an existing host and its packages host = Host.objects.get(name=HOSTNAME) host_packages = HostPackage.objects.filter(host=host) assert host is not None assert len(host_packages) > 0 response = client.delete(EXISTING_HOST_URL) validate_status_code(response, require_login, verify_clients=verify_clients, default=204) if response.status_code == 204: # The host and all its packages were deleted assert len(HostPackage.objects.filter(host=host.id)) == 0 with pytest.raises(Host.DoesNotExist, match='Host matching query does not exist'): Host.objects.get(name=HOSTNAME) else: # Nothing was changed assert host == Host.objects.get(name=HOSTNAME) assert list(host_packages) == list(HostPackage.objects.filter(host=host)) if response.status_code == 403: assert 'Client certificate validation failed' in response.content.decode('utf-8')
def test_index_status_code(client, settings, require_login, verify_clients): """Requesting the homepage should return a 200 OK if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(INDEX_URL) validate_status_code(response, require_login)
def test_detail_status_code_missing(client, settings, require_login, verify_clients): """Requesting a missing binary package detail page should return a 404 Not Found if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(MISSING_PACKAGE_URL) validate_status_code(response, require_login, default=404)
def test_detail_status_code_existing(client, settings, require_login, verify_clients): """Requesting an existing binary package detail page should return a 200 OK if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(EXISTING_PACKAGE_URL) validate_status_code(response, require_login)
def test_detail_status_code_missing(client, settings, require_login, verify_clients): """Requesting a missing kernel detail page should return a 404 NOT FOUND, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(MISSING_KERNEL_URL) validate_status_code(response, require_login, default=404)
def test_update_status_code_invalid_payload(client, settings, require_login, verify_clients): """Trying to update an image with an invalid JSON payload should return 400 Bad Request, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.generic('POST', EXISTING_IMAGE_UPDATE_URL, 'invalid_json') validate_status_code(response, require_login, verify_clients=verify_clients, default=400)
def test_update_status_code_no_post(client, settings, require_login, verify_clients): """Trying to update an image without a POST content should return 400 Bad Request, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.generic('POST', EXISTING_IMAGE_UPDATE_URL) validate_status_code(response, require_login, verify_clients=verify_clients, default=400)
def test_detail_delete_status_code_missing(client, settings, require_login, verify_clients): """Trying to delete a missing image should return a 404 Not Found, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.delete(MISSING_IMAGE_URL) validate_status_code(response, require_login, verify_clients=verify_clients, default=404)
def test_update_status_code_wrong_hostname(client, settings, require_login, verify_clients): """Trying to update an host with a payload for a different host should return 400 Bad Reques, if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.generic('POST', EXISTING_HOST_UPDATE_URL, '{"hostname": "non_existing_host.example.com"}') validate_status_code(response, require_login, verify_clients=verify_clients, default=400)
def test_search_status_code(client, settings, require_login, verify_clients): """Requesting the search result page should return a 200 OK if authenticated.""" setup_auth_settings(settings, require_login, verify_clients) response = client.get(SEARCH_URL) validate_status_code(response, require_login)