def test_generate_payload():
    """
    GIVEN `generate_payload` is called
    WHEN a valid template is provided
    THEN return the payload which will be sent to Conformity
    """

    c = CcValidator()
    template_str = c.read_template_file()
    payload = c.generate_payload(template_str)

    assert "data" in payload
def test_run_validation_no_profile_id():
    """
    GIVEN `run_validation` is called
    WHEN no profile ID is provided
    THEN return the payload provided by Conformity
    """

    c = CcValidator()
    template_str = c.read_template_file()
    payload = c.generate_payload(template_str)
    validation = c.run_validation(payload)

    assert "data" in validation
def test_run_validation_invalid_profile_id(monkeypatch):
    """
    GIVEN `run_validation` is called
    WHEN an invalid profile ID is provided
    THEN exit with an error of 1
    """

    monkeypatch.setenv("CC_PROFILE_ID", "x")

    c = CcValidator()
    template_str = c.read_template_file()
    payload = c.generate_payload(template_str)
    validation = c.run_validation(payload)

    assert "errors" in validation
def test_run_validation_invalid_api_key(caplog, monkeypatch):
    """
    GIVEN `run_validation` is called
    WHEN an invalid API key is provided
    THEN exit with an error of 1
    """

    monkeypatch.setenv("CC_API_KEY", "x")

    c = CcValidator()
    template_str = c.read_template_file()
    payload = c.generate_payload(template_str)

    with pytest.raises(SystemExit):
        c.run_validation(payload)

    assert "User is not authorized to access this resource with an explicit deny" in caplog.text
def test_run_validation_valid_profile_id():
    """
    GIVEN `run_validation` is called
    WHEN a valid profile ID is provided
    THEN return the payload provided by Conformity
    """

    # ensure a valid profile ID is provided
    if not os.environ.get("CC_PROFILE_ID"):
        assert False is True

    c = CcValidator()
    template_str = c.read_template_file()
    payload = c.generate_payload(template_str)
    validation = c.run_validation(payload)

    assert "data" in validation