diff --git a/stix2/__init__.py b/stix2/__init__.py index a1929ab..7762890 100644 --- a/stix2/__init__.py +++ b/stix2/__init__.py @@ -1,5 +1,7 @@ """Python APIs for STIX 2.""" +# flake8: noqa + from .bundle import Bundle from .common import ExternalReference, KillChainPhase from .sdo import AttackPattern, Campaign, CourseOfAction, Identity, Indicator, \ diff --git a/stix2/base.py b/stix2/base.py index 292185e..35360af 100644 --- a/stix2/base.py +++ b/stix2/base.py @@ -3,7 +3,6 @@ import collections import datetime as dt import json -import uuid from .utils import format_datetime, get_timestamp, NOW diff --git a/stix2/common.py b/stix2/common.py index 5248ebd..7b4e3ea 100644 --- a/stix2/common.py +++ b/stix2/common.py @@ -1,7 +1,5 @@ """STIX 2 Common Data Types and Properties""" -import re - from .base import _STIXBase from .properties import Property, BooleanProperty, ReferenceProperty from .utils import NOW diff --git a/stix2/properties.py b/stix2/properties.py index bf49175..3bb2633 100644 --- a/stix2/properties.py +++ b/stix2/properties.py @@ -1,8 +1,6 @@ import re import uuid -from .utils import NOW - class Property(object): """Represent a property of STIX data type. diff --git a/stix2/test/fixtures.py b/stix2/test/fixtures.py index 078e55d..ec967b5 100644 --- a/stix2/test/fixtures.py +++ b/stix2/test/fixtures.py @@ -2,11 +2,10 @@ import datetime as dt import uuid import pytest -import pytz import stix2 -from .constants import FAKE_TIME, INDICATOR_ID, MALWARE_ID, RELATIONSHIP_ID +from .constants import FAKE_TIME from .constants import INDICATOR_KWARGS, MALWARE_KWARGS, RELATIONSHIP_KWARGS diff --git a/stix2/test/test_bundle.py b/stix2/test/test_bundle.py index ada3ca8..03ac640 100644 --- a/stix2/test/test_bundle.py +++ b/stix2/test/test_bundle.py @@ -2,7 +2,7 @@ import pytest import stix2 -from .fixtures import clock, uuid4, indicator, malware, relationship +from .fixtures import clock, uuid4, indicator, malware, relationship # noqa: F401 EXPECTED_BUNDLE = """{ "id": "bundle--00000000-0000-0000-0000-000000000004", @@ -54,32 +54,32 @@ def test_empty_bundle(): def test_bundle_with_wrong_type(): with pytest.raises(ValueError) as excinfo: - bundle = stix2.Bundle(type="not-a-bundle") + stix2.Bundle(type="not-a-bundle") assert str(excinfo.value) == "Invalid value for Bundle 'type': must equal 'bundle'." def test_bundle_id_must_start_with_bundle(): with pytest.raises(ValueError) as excinfo: - bundle = stix2.Bundle(id='my-prefix--') + stix2.Bundle(id='my-prefix--') assert str(excinfo.value) == "Invalid value for Bundle 'id': must start with 'bundle--'." def test_bundle_with_wrong_spec_version(): with pytest.raises(ValueError) as excinfo: - bundle = stix2.Bundle(spec_version="1.2") + stix2.Bundle(spec_version="1.2") assert str(excinfo.value) == "Invalid value for Bundle 'spec_version': must equal '2.0'." -def test_create_bundle(indicator, malware, relationship): +def test_create_bundle(indicator, malware, relationship): # noqa: F811 bundle = stix2.Bundle(objects=[indicator, malware, relationship]) assert str(bundle) == EXPECTED_BUNDLE -def test_create_bundle_with_positional_args(indicator, malware, relationship): +def test_create_bundle_with_positional_args(indicator, malware, relationship): # noqa: F811 bundle = stix2.Bundle(indicator, malware, relationship) assert str(bundle) == EXPECTED_BUNDLE diff --git a/stix2/test/test_external_reference.py b/stix2/test/test_external_reference.py index 353984a..5c39852 100644 --- a/stix2/test/test_external_reference.py +++ b/stix2/test/test_external_reference.py @@ -108,5 +108,5 @@ def test_external_reference_offline(): def test_external_reference_source_required(): with pytest.raises(ValueError) as excinfo: - ref = stix2.ExternalReference() + stix2.ExternalReference() assert str(excinfo.value) == "Missing required field(s) for ExternalReference: (source_name)." diff --git a/stix2/test/test_fixtures.py b/stix2/test/test_fixtures.py index ebdf746..5c0409e 100644 --- a/stix2/test/test_fixtures.py +++ b/stix2/test/test_fixtures.py @@ -2,14 +2,14 @@ import datetime as dt import uuid from .constants import FAKE_TIME -from .fixtures import clock, uuid4 +from .fixtures import clock, uuid4 # noqa: F401 -def test_clock(clock): +def test_clock(clock): # noqa: F811 assert dt.datetime.now() == FAKE_TIME -def test_my_uuid4_fixture(uuid4): +def test_my_uuid4_fixture(uuid4): # noqa: F811 assert uuid.uuid4() == "00000000-0000-0000-0000-000000000001" assert uuid.uuid4() == "00000000-0000-0000-0000-000000000002" assert uuid.uuid4() == "00000000-0000-0000-0000-000000000003" diff --git a/stix2/test/test_indicator.py b/stix2/test/test_indicator.py index 4ea818a..11197ed 100644 --- a/stix2/test/test_indicator.py +++ b/stix2/test/test_indicator.py @@ -6,7 +6,7 @@ import pytz import stix2 from .constants import FAKE_TIME, INDICATOR_ID, INDICATOR_KWARGS -from .fixtures import clock, uuid4, indicator +from .fixtures import clock, uuid4, indicator # noqa: F401 EXPECTED_INDICATOR = """{ "created": "2017-01-01T00:00:01Z", @@ -35,7 +35,7 @@ def test_indicator_with_all_required_fields(): now = dt.datetime(2017, 1, 1, 0, 0, 1, tzinfo=pytz.utc) epoch = dt.datetime(1970, 1, 1, 0, 0, 1, tzinfo=pytz.utc) - indicator = stix2.Indicator( + ind = stix2.Indicator( type="indicator", id=INDICATOR_ID, labels=['malicious-activity'], @@ -45,11 +45,11 @@ def test_indicator_with_all_required_fields(): valid_from=epoch, ) - assert str(indicator) == EXPECTED_INDICATOR - assert repr(indicator) == EXPECTED_INDICATOR_REPR + assert str(ind) == EXPECTED_INDICATOR + assert repr(ind) == EXPECTED_INDICATOR_REPR -def test_indicator_autogenerated_fields(indicator): +def test_indicator_autogenerated_fields(indicator): # noqa: F811 assert indicator.type == 'indicator' assert indicator.id == 'indicator--00000000-0000-0000-0000-000000000001' assert indicator.created == FAKE_TIME @@ -69,43 +69,43 @@ def test_indicator_autogenerated_fields(indicator): def test_indicator_type_must_be_indicator(): with pytest.raises(ValueError) as excinfo: - indicator = stix2.Indicator(type='xxx', **INDICATOR_KWARGS) + stix2.Indicator(type='xxx', **INDICATOR_KWARGS) assert str(excinfo.value) == "Invalid value for Indicator 'type': must equal 'indicator'." def test_indicator_id_must_start_with_indicator(): with pytest.raises(ValueError) as excinfo: - indicator = stix2.Indicator(id='my-prefix--', **INDICATOR_KWARGS) + stix2.Indicator(id='my-prefix--', **INDICATOR_KWARGS) assert str(excinfo.value) == "Invalid value for Indicator 'id': must start with 'indicator--'." def test_indicator_required_fields(): with pytest.raises(ValueError) as excinfo: - indicator = stix2.Indicator() + stix2.Indicator() assert str(excinfo.value) == "Missing required field(s) for Indicator: (labels, pattern)." def test_indicator_required_field_pattern(): with pytest.raises(ValueError) as excinfo: - indicator = stix2.Indicator(labels=['malicious-activity']) + stix2.Indicator(labels=['malicious-activity']) assert str(excinfo.value) == "Missing required field(s) for Indicator: (pattern)." def test_indicator_created_ref_invalid_format(): with pytest.raises(ValueError) as excinfo: - indicator = stix2.Indicator(created_by_ref='myprefix--12345678', **INDICATOR_KWARGS) + stix2.Indicator(created_by_ref='myprefix--12345678', **INDICATOR_KWARGS) assert str(excinfo.value) == "Invalid value for Indicator 'created_by_ref': must match --." def test_indicator_revoked_invalid(): with pytest.raises(ValueError) as excinfo: - indicator = stix2.Indicator(revoked='false', **INDICATOR_KWARGS) + stix2.Indicator(revoked='false', **INDICATOR_KWARGS) assert str(excinfo.value) == "Invalid value for Indicator 'revoked': must be a boolean value." -def test_cannot_assign_to_indicator_attributes(indicator): +def test_cannot_assign_to_indicator_attributes(indicator): # noqa: F811 with pytest.raises(ValueError) as excinfo: indicator.valid_from = dt.datetime.now() @@ -114,12 +114,12 @@ def test_cannot_assign_to_indicator_attributes(indicator): def test_invalid_kwarg_to_indicator(): with pytest.raises(TypeError) as excinfo: - indicator = stix2.Indicator(my_custom_property="foo", **INDICATOR_KWARGS) + stix2.Indicator(my_custom_property="foo", **INDICATOR_KWARGS) assert str(excinfo.value) == "unexpected keyword arguments: ['my_custom_property']" def test_created_modified_time_are_identical_by_default(): """By default, the created and modified times should be the same.""" - indicator = stix2.Indicator(**INDICATOR_KWARGS) + ind = stix2.Indicator(**INDICATOR_KWARGS) - assert indicator.created == indicator.modified + assert ind.created == ind.modified diff --git a/stix2/test/test_malware.py b/stix2/test/test_malware.py index 1b3af4b..0538920 100644 --- a/stix2/test/test_malware.py +++ b/stix2/test/test_malware.py @@ -6,7 +6,7 @@ import pytz import stix2 from .constants import FAKE_TIME, MALWARE_ID, MALWARE_KWARGS -from .fixtures import clock, uuid4, malware +from .fixtures import clock, uuid4, malware # noqa: F401 EXPECTED_MALWARE = """{ "created": "2016-05-12T08:17:27Z", @@ -23,7 +23,7 @@ EXPECTED_MALWARE = """{ def test_malware_with_all_required_fields(): now = dt.datetime(2016, 5, 12, 8, 17, 27, tzinfo=pytz.utc) - malware = stix2.Malware( + mal = stix2.Malware( type="malware", id=MALWARE_ID, created=now, @@ -32,10 +32,10 @@ def test_malware_with_all_required_fields(): name="Cryptolocker", ) - assert str(malware) == EXPECTED_MALWARE + assert str(mal) == EXPECTED_MALWARE -def test_malware_autogenerated_fields(malware): +def test_malware_autogenerated_fields(malware): # noqa: F811 assert malware.type == 'malware' assert malware.id == 'malware--00000000-0000-0000-0000-000000000001' assert malware.created == FAKE_TIME @@ -53,31 +53,31 @@ def test_malware_autogenerated_fields(malware): def test_malware_type_must_be_malware(): with pytest.raises(ValueError) as excinfo: - malware = stix2.Malware(type='xxx', **MALWARE_KWARGS) + stix2.Malware(type='xxx', **MALWARE_KWARGS) assert str(excinfo.value) == "Invalid value for Malware 'type': must equal 'malware'." def test_malware_id_must_start_with_malware(): with pytest.raises(ValueError) as excinfo: - malware = stix2.Malware(id='my-prefix--', **MALWARE_KWARGS) + stix2.Malware(id='my-prefix--', **MALWARE_KWARGS) assert str(excinfo.value) == "Invalid value for Malware 'id': must start with 'malware--'." def test_malware_required_fields(): with pytest.raises(ValueError) as excinfo: - malware = stix2.Malware() + stix2.Malware() assert str(excinfo.value) == "Missing required field(s) for Malware: (labels, name)." def test_malware_required_field_name(): with pytest.raises(ValueError) as excinfo: - malware = stix2.Malware(labels=['ransomware']) + stix2.Malware(labels=['ransomware']) assert str(excinfo.value) == "Missing required field(s) for Malware: (name)." -def test_cannot_assign_to_malware_attributes(malware): +def test_cannot_assign_to_malware_attributes(malware): # noqa: F811 with pytest.raises(ValueError) as excinfo: malware.name = "Cryptolocker II" @@ -86,5 +86,5 @@ def test_cannot_assign_to_malware_attributes(malware): def test_invalid_kwarg_to_malware(): with pytest.raises(TypeError) as excinfo: - malware = stix2.Malware(my_custom_property="foo", **MALWARE_KWARGS) + stix2.Malware(my_custom_property="foo", **MALWARE_KWARGS) assert str(excinfo.value) == "unexpected keyword arguments: ['my_custom_property']" diff --git a/stix2/test/test_relationship.py b/stix2/test/test_relationship.py index 9963eb9..a501ea6 100644 --- a/stix2/test/test_relationship.py +++ b/stix2/test/test_relationship.py @@ -7,7 +7,7 @@ import stix2 from .constants import FAKE_TIME, INDICATOR_ID, MALWARE_ID, RELATIONSHIP_ID from .constants import RELATIONSHIP_KWARGS -from .fixtures import clock, uuid4, indicator, malware, relationship +from .fixtures import clock, uuid4, indicator, malware, relationship # noqa: F401 EXPECTED_RELATIONSHIP = """{ @@ -24,7 +24,7 @@ EXPECTED_RELATIONSHIP = """{ def test_relationship_all_required_fields(): now = dt.datetime(2016, 4, 6, 20, 6, 37, tzinfo=pytz.utc) - relationship = stix2.Relationship( + rel = stix2.Relationship( type='relationship', id=RELATIONSHIP_ID, created=now, @@ -33,10 +33,10 @@ def test_relationship_all_required_fields(): source_ref=INDICATOR_ID, target_ref=MALWARE_ID, ) - assert str(relationship) == EXPECTED_RELATIONSHIP + assert str(rel) == EXPECTED_RELATIONSHIP -def test_relationship_autogenerated_fields(relationship): +def test_relationship_autogenerated_fields(relationship): # noqa: F811 assert relationship.type == 'relationship' assert relationship.id == 'relationship--00000000-0000-0000-0000-000000000001' assert relationship.created == FAKE_TIME @@ -56,41 +56,40 @@ def test_relationship_autogenerated_fields(relationship): def test_relationship_type_must_be_relationship(): with pytest.raises(ValueError) as excinfo: - relationship = stix2.Relationship(type='xxx', **RELATIONSHIP_KWARGS) + stix2.Relationship(type='xxx', **RELATIONSHIP_KWARGS) assert str(excinfo.value) == "Invalid value for Relationship 'type': must equal 'relationship'." def test_relationship_id_must_start_with_relationship(): with pytest.raises(ValueError) as excinfo: - relationship = stix2.Relationship(id='my-prefix--', **RELATIONSHIP_KWARGS) + stix2.Relationship(id='my-prefix--', **RELATIONSHIP_KWARGS) assert str(excinfo.value) == "Invalid value for Relationship 'id': must start with 'relationship--'." def test_relationship_required_field_relationship_type(): with pytest.raises(ValueError) as excinfo: - relationship = stix2.Relationship() + stix2.Relationship() assert str(excinfo.value) == "Missing required field(s) for Relationship: (relationship_type, source_ref, target_ref)." def test_relationship_missing_some_required_fields(): with pytest.raises(ValueError) as excinfo: - # relationship_type is checked first, so make sure that is provided - relationship = stix2.Relationship(relationship_type='indicates') + stix2.Relationship(relationship_type='indicates') assert str(excinfo.value) == "Missing required field(s) for Relationship: (source_ref, target_ref)." def test_relationship_required_field_target_ref(): with pytest.raises(ValueError) as excinfo: - relationship = stix2.Relationship( + stix2.Relationship( relationship_type='indicates', source_ref=INDICATOR_ID ) assert str(excinfo.value) == "Missing required field(s) for Relationship: (target_ref)." -def test_cannot_assign_to_relationship_attributes(relationship): +def test_cannot_assign_to_relationship_attributes(relationship): # noqa: F811 with pytest.raises(ValueError) as excinfo: relationship.relationship_type = "derived-from" @@ -99,27 +98,27 @@ def test_cannot_assign_to_relationship_attributes(relationship): def test_invalid_kwarg_to_relationship(): with pytest.raises(TypeError) as excinfo: - relationship = stix2.Relationship(my_custom_property="foo", **RELATIONSHIP_KWARGS) + stix2.Relationship(my_custom_property="foo", **RELATIONSHIP_KWARGS) assert str(excinfo.value) == "unexpected keyword arguments: ['my_custom_property']" in str(excinfo) -def test_create_relationship_from_objects_rather_than_ids(indicator, malware): - relationship = stix2.Relationship( +def test_create_relationship_from_objects_rather_than_ids(indicator, malware): # noqa: F811 + rel = stix2.Relationship( relationship_type="indicates", source_ref=indicator, target_ref=malware, ) - assert relationship.relationship_type == 'indicates' - assert relationship.source_ref == 'indicator--00000000-0000-0000-0000-000000000001' - assert relationship.target_ref == 'malware--00000000-0000-0000-0000-000000000002' - assert relationship.id == 'relationship--00000000-0000-0000-0000-000000000003' + assert rel.relationship_type == 'indicates' + assert rel.source_ref == 'indicator--00000000-0000-0000-0000-000000000001' + assert rel.target_ref == 'malware--00000000-0000-0000-0000-000000000002' + assert rel.id == 'relationship--00000000-0000-0000-0000-000000000003' -def test_create_relationship_with_positional_args(indicator, malware): - relationship = stix2.Relationship(indicator, 'indicates', malware) +def test_create_relationship_with_positional_args(indicator, malware): # noqa: F811 + rel = stix2.Relationship(indicator, 'indicates', malware) - assert relationship.relationship_type == 'indicates' - assert relationship.source_ref == 'indicator--00000000-0000-0000-0000-000000000001' - assert relationship.target_ref == 'malware--00000000-0000-0000-0000-000000000002' - assert relationship.id == 'relationship--00000000-0000-0000-0000-000000000003' + assert rel.relationship_type == 'indicates' + assert rel.source_ref == 'indicator--00000000-0000-0000-0000-000000000001' + assert rel.target_ref == 'malware--00000000-0000-0000-0000-000000000002' + assert rel.id == 'relationship--00000000-0000-0000-0000-000000000003'