Commit Graph

1386 Commits (aab27b6559c449c85cfc3e422dcfcf7e8a7edf6c)

Author SHA1 Message Date
Michael Chisholm 3dba3f74f9 Fix more pre-commit style issues. 2022-04-28 21:39:59 -04:00
Michael Chisholm 724122db65 pre-commit styling changes 2022-04-28 21:23:05 -04:00
Michael Chisholm e534e41865 Complete the addition of AST node class override support which
was begun by frank7y.  Added some unit tests.

Also address a design flaw which prevented the AST builder
function create_pattern_object() from honoring module_suffix
and module_name parameters after the first call.
2022-04-28 21:10:12 -04:00
francescosettanni 1e4b6caf3f improved pattern visitor support of custom classes 2022-01-31 10:48:01 +01:00
Michael Chisholm 3086b7ab5b Fix pattern semantic equivalence bug: comparison expression
DNF transform could trigger an error from the AST code which
does the SCO type checks on comparison expression ANDs.  The
transform had been ignoring SCO types.  Now, it will catch
the exception and drop the AND from the pattern.  Added a
couple new unit tests for this.
2021-12-23 00:59:41 -05:00
Chris Lenk 81550cab92 Bump version: 3.0.0 → 3.0.1 2021-09-24 09:34:37 -04:00
Michael Chisholm 659e1fd90d Fix transform from Filter object to TAXII filter to look at
the filter operator; TAXII filters only support equals.
2021-08-26 20:55:35 -04:00
Michael Chisholm a4ce0222bf Move and edit a comment about HTTP status code 416 to reduce
confusion.
2021-08-24 15:04:05 -04:00
Michael Chisholm a3d1056122 Fix TAXIICollectionSource.query() to propagate HTTPErrors
instead of ignoring them.  Special-cased 416, since that can
occur naturally while paging with TAXII 2.0.
2021-08-24 00:15:50 -04:00
maybe-sybr bd897c9848 improv: Check reference prop types for all customs
Previously the requirement that properties ending in `_ref(s)` were
instances of an appropriate type capable of containing a STIX
`identifier` (the current interpretation of section 3.1 of the STIX 2.1
spec) was only enforced for custom observables. This change refactors
the property checks for custom objects to enforce this and the STIX 2.1
property name requirement (also from section 3.1) in a common helper,
therefore extending the enforcement of both requirements to all custom
object types created by downstream projects.

There is a special case carved out for STIX 2.0 observables which are
required to contain "object references" rather than identifiers. This
special logic is encoded in the reference property validation helper and
enabled by a kwarg which is passed exclusively by the custom observable
registration helper.
2021-07-22 14:55:14 +10:00
Michael Chisholm d7981dce9f Stop the flake8 hook from complaining about a line in a unit
test that it is misunderstanding and shouldn't be complaining
about.
2021-07-12 14:40:54 -04:00
Michael Chisholm b2108e90c6 pre-commit stylistic fixes 2021-07-12 14:33:56 -04:00
Michael Chisholm f0779d7802 Add unit tests for self-enabling extensions support, and for
compliance checking on toplevel extension property names.
2021-07-09 20:28:32 -04:00
Michael Chisholm 945e3375aa Fix extension registration to not only check nested properties
for spec compliance, but also the toplevel properties, if any.
2021-07-09 20:24:31 -04:00
Michael Chisholm e99be67c1e Remove registration._get_extension_class() since it's redundant
with registry.class_for_type().
2021-07-09 18:11:11 -04:00
Michael Chisholm 34e82e489f Fix marking definition extension unit test to use a plain
old CustomExtension.

Add a unit test for a custom extension-based marking definition
where the extension is of type "toplevel-property-extension".
2021-07-08 23:06:57 -04:00
Michael Chisholm d27e9e6e55 Back out changes to the CustomMarking decorator and registration,
to revert its behavior to what it did before: register a type
for old-style non-extension custom markings.
2021-07-08 22:18:28 -04:00
Rich Piazza 26bc1d5220 Bump version: 2.1.0 → 3.0.0 2021-07-08 14:57:59 -04:00
chisholm 17170e65d1
Merge pull request #517 from oasis-open/fix-links
Fix links
2021-07-07 16:16:52 -04:00
Rich Piazza 3ce193aca6
Merge pull request #468 from oasis-open/dev-extensions-proposal
Extensions Support
2021-07-07 16:10:01 -04:00
Michael Chisholm bb164ad1ae Small change to a unit test 2021-07-07 16:06:04 -04:00
Rich Piazza 3a0297c597 replaced links with stix-v2.1-os 2021-07-07 15:03:28 -04:00
Rich Piazza 02bf33eedf Merge branch 'dev-extensions-proposal' of github.com:oasis-open/cti-python-stix2 into dev-extensions-proposal 2021-07-07 13:43:10 -04:00
Michael Chisholm 638689c481 Add another check to the test_toplevel_ext_prop_meta()
unit test.
2021-07-07 13:03:13 -04:00
Rich Piazza d6a1aa9f74 Merge branch 'dev-extensions-proposal' of github.com:oasis-open/cti-python-stix2 into dev-extensions-proposal 2021-07-07 11:02:05 -04:00
Michael Chisholm 99a8ade4cd pre-commit stylistic fixes 2021-07-06 20:40:50 -04:00
Michael Chisholm 2cda97cf5e Changed STIX object initialization to formulate a property order
and process properties in that order.  This establishes iteration
order on object properties, making the object_properties() method
unnecessary.  So the latter method has been deleted.  All uses
of that method have been removed.

Removed unnecessary deepcopy() in STIXJSONEncoder, to improve
efficiency.  This uncovered a bug which had been affecting
STIXdatetime instances.  Not deepcopying doesn't trip the bug,
which can change serialization format.  This caused a unit
test to fail, which was checking serialization format.  I fixed
the unit test.

Fixed a bug in _STIXBase.__repr__ which caused it to omit all
properties with falsey values.  This caused several unit tests
to break, since they were written against the old buggy repr
format.  Notably, 'revoked=False' was never included in reprs
before, but it is now.
2021-07-06 20:32:58 -04:00
Rich Piazza 55808d9747
Merge pull request #504 from oasis-open/sighting_last_seen
Fix sighting.last_seen check
2021-07-06 17:19:17 -04:00
Rich Piazza e82067a205 Merge branch 'master' into dev-extensions-proposal 2021-07-06 16:15:57 -04:00
Rich Piazza bb1155e678
Merge pull request #515 from oasis-open/infrastructure-type-ov
Add new infrastructure-type-ov entries
2021-07-06 16:04:59 -04:00
Rich Piazza be320fff15
Merge pull request #514 from oasis-open/network-traffic-2.1cs03
Update Network Traffic for CS03
2021-07-06 16:02:28 -04:00
Michael Chisholm 8bbf5fa461 Make extension instances work the same as other objects, with
respect to properties.  Before, properties were declared on
toplevel-property-extension extensions as if they were going
to be used in the normal way (as actual properties on instances
of the extension), but they were not used that way, and there
was some ugly hackage to make it work.  Despite the fact that
property instances were given during extension registration,
they were not used to typecheck, set defaults, etc on toplevel
property extension properties.

I changed how registration and object initialization works with
respect to properties associated with extensions.  Now,
extensions work the same as any other object and code is
cleaner.  Property instances associated with registered toplevel
extensions are used to enforce requirements like any other
object.

Added some unit tests specifically for property cleaning for
extensions.

Property order (for those contexts where it matters) is updated
to be spec-defined, toplevel extension, custom.
2021-07-06 14:27:40 -04:00
Michael Chisholm 93d2524d45 Remove excessive nested lists from CusomObservable decorator.
Remove iterable chaining from CustomObject decorator.  If all
values are guaranteed lists now, it no longer makes sense to use
it.  Simpler and clearer to use plain old list concatenation.
2021-07-02 21:10:52 -04:00
Michael Chisholm b9eba77008 Move the CustomExtension decorator from the v21.observables module
to v21.common.  Custom extensions are not specific to SCOs, so I
don't know why it was in that module.  Now, ExtensionDefinition
and CustomExtension are together in the same module, just like
MarkingDefinition and CustomMarking are together.  Made sense to
me.
2021-07-02 20:54:54 -04:00
Michael Chisholm 6fc39a70ea pre-commit stylistic fixes 2021-07-01 20:08:09 -04:00
Michael Chisholm ac8e46f491 Improve customization detection in the face of
toplevel-property-extension style extensions.  If an unregistered
extension of that type is encountered, all unrecognized toplevel
props will now be considered extension properties (not custom).
It will no longer turn on the allow_custom flag, which would
allow customizations everywhere.

Also, if all extensions of the aforementioned type are registered,
their properties are now used to properly distinguish between
extension and custom properties.  There need not be any ambiguity
in that case.
2021-06-30 20:20:29 -04:00
Michael Chisholm d87718c15c Bug fixes, hackage removal, and some pre-commit stylistic
fixes.

- Fixed bugged logic in _STIXBase._check_at_least_one_property(),
and revamped the code to be simpler and clearer.

- Changed custom extension registration to auto-create an
"extension_type" property based on the attribute of that
name on the custom class, if present.

- The custom extension registration change above uncovered
what seemed like a bug in a unit test: a custom extension
was registered, but it was not given an extension type.  The
test used the extension as extension_type="property-extension";
this now causes a standard error about an extra property.  I
fixed the test to assign the custom extension the proper type.
2021-06-30 17:50:00 -04:00
Chris Lenk 5504001f92 Add new infrastructure-type-ov entries 2021-06-25 23:01:11 -04:00
Chris Lenk 7a9d052a0d Update Network Traffic for CS03
- `end` must be greater than or equal to `start`
- `extensions` and `end` are now id-contributing properties
2021-06-25 22:48:00 -04:00
Michael Chisholm c7b4840232 Code style and behavioral improvements in ExtensionsProperty:
- Changed an error message "Cannot determine extension type."
At that point in the code, we in fact have a registered
extension type and the class for it, so it didn't seem to make
any sense.  I changed it to say that an extension of that type
couldn't be created from type of value given.  Because this is
really about typing (in both the old and new code), I also
changed the exception class to TypeError.

- Changed customization behavior: unregistered
"extension-definition--" style extensions are no longer
considered custom.  Their mere presence can no longer be
considered a customization, since it doesn't fit the
criteria, and in fact the extension mechanism is supposed to
supplant the old customization system anyway.  Unregistered
extensions of other types are still considered custom.

- Fixed up unit tests according to the exception message
change.

- Added a unit test for unregistered "extension-definition--"
style extensions.
2021-06-25 22:20:02 -04:00
Michael Chisholm 70718063d3 Remove relics of the old way customization was handled and
enforced, from _STIXBase20 and _STIXBase21.  That awkwardness
is no longer necessary.
2021-06-25 22:10:31 -04:00
Michael Chisholm 47b864cb4d Fix v21 ExtensionDefinition class to use the enum constant from
the vocab module for extension-type-enum, instead of replicating
that list.
2021-06-25 22:06:52 -04:00
Michael Chisholm e17f3e6c1c Add constants to the v21 vocab module for extension-type-enum 2021-06-25 22:04:59 -04:00
Chris Lenk a95a463619 Add Sighting.summary default value
See also #507.
2021-06-21 10:56:44 -04:00
Chris Lenk 94859a0daf Fix tests, add a loophole to allow custom content
The "loophole" occurs when an object contains an unregistered top-level
extension. Since it's unregistered we can't tell if any custom
properties on the object were defined in that extension so we assume
that they are.
2021-06-14 17:34:06 -04:00
Chris Lenk 2528077eb0 Merge branch 'master' into dev-extensions-proposal 2021-06-13 01:48:33 -04:00
Chris Lenk 5cce864304 Test invalid_types ReferenceProperty with custom 2021-06-11 14:00:46 -04:00
Chris Lenk 7209346f0b Improve error message for invalid reference types 2021-06-11 13:59:48 -04:00
Michael Chisholm 2b064872a4 Add variables for each individual enum value in the vocab modules. 2021-04-15 22:06:57 -04:00
Chris Lenk bafe699f3d Fix sighting.last_seen check
It is allowed to be equal to first_seen
2021-04-15 20:51:27 -04:00