File: test_actor_validator.py

package info (click to toggle)
python-spdx-tools 0.8.3-5
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,084 kB
  • sloc: python: 18,675; xml: 12,553; sh: 46; makefile: 7
file content (41 lines) | stat: -rw-r--r-- 1,281 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# SPDX-FileCopyrightText: 2022 spdx contributors
#
# SPDX-License-Identifier: Apache-2.0

from typing import List

import pytest

from spdx_tools.spdx.constants import DOCUMENT_SPDX_ID
from spdx_tools.spdx.model import ActorType
from spdx_tools.spdx.validation.actor_validator import validate_actor
from spdx_tools.spdx.validation.validation_message import SpdxElementType, ValidationContext, ValidationMessage
from tests.spdx.fixtures import actor_fixture


def test_valid_actor_person():
    actor = actor_fixture()
    validation_messages: List[ValidationMessage] = validate_actor(actor, DOCUMENT_SPDX_ID)

    assert validation_messages == []


@pytest.mark.parametrize(
    "actor, expected_message",
    [
        (
            actor_fixture(actor_type=ActorType.TOOL, email="mail@mail.com"),
            "email must be None if actor_type is TOOL, but is: mail@mail.com",
        ),
    ],
)
def test_invalid_actor(actor, expected_message):
    parent_id = DOCUMENT_SPDX_ID
    validation_messages: List[ValidationMessage] = validate_actor(actor, parent_id)

    expected = ValidationMessage(
        expected_message,
        ValidationContext(parent_id=parent_id, element_type=SpdxElementType.ACTOR, full_element=actor),
    )

    assert validation_messages == [expected]