コード例 #1
0
ファイル: test_views.py プロジェクト: wikimedia/debmonitor
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')
コード例 #2
0
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)
コード例 #3
0
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') == ''
コード例 #4
0
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')
コード例 #5
0
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')
コード例 #6
0
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')
コード例 #7
0
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')
コード例 #8
0
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)
コード例 #9
0
ファイル: test_views.py プロジェクト: wikimedia/debmonitor
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)
コード例 #10
0
ファイル: test_views.py プロジェクト: wikimedia/debmonitor
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)
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
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)
コード例 #14
0
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)
コード例 #15
0
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)
コード例 #16
0
ファイル: test_views.py プロジェクト: wikimedia/debmonitor
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)