Commit Graph

224 Commits (fe28f355dcdb1a3bd76e018e9ac2bc27dea4655c)

Author SHA1 Message Date
Christian Studer f6a53d1524 Merge branch 'master' of github.com:oasis-open/cti-python-stix2 2022-08-22 14:49:45 +02:00
Emily Ratliff 56396119e6
Merge pull request #542 from chisholm/fix_detect_spec_version
Fix detect_spec_version() with respect to 2.0 bundles
2022-08-02 10:54:10 -05:00
Christian Studer d229bd3cd1 Merge branch 'master' of github.com:oasis-open/cti-python-stix2 2022-05-16 10:35:51 +02:00
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
Michael Chisholm b5260c95f6 Fix utils.detect_spec_version() to use presence of the
spec_version property in a bundle to infer spec version, not
the property's value.  Update unit tests accordingly.
2022-02-18 21:33:13 -05:00
chrisr3d 8ab39f75f7 Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into main 2021-08-31 19:02:36 +02: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
chrisr3d 03f4ae1f4a
Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into main 2021-07-21 19:17:51 +02: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
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
chrisr3d 081f36068c Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into main 2021-06-30 15:30:13 +02: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
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
Emmanuelle Vargas-Gonzalez 40023ec987 forgot to add this in the rebase... 2021-03-31 18:55:55 -04:00
Emmanuelle Vargas-Gonzalez bc053da3c4 Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into dev-extensions-proposal 2021-03-31 18:53:02 -04:00
Michael Chisholm a8a65599bf Add back spec_version kwarg to HashesProperty, since it was used
to check key lengths.  Added some unit tests for hash keys.
Also added a library hash support test module I'd forgotten to
add before.
2021-03-31 16:20:33 -04:00
Michael Chisholm c590de8ea5 Add proper customization enforcement for open vocabs. This adds
a new OpenVocabProperty class.  It also requires a redesign of
HashesProperty and redoes general library support for hash
algorithms.
2021-03-31 16:20:28 -04:00
Michael Chisholm 62ee2b2b0a Pre-commit changes. Also remove a dupe test function which
slipped through due to a rather complex rebase... not too
surprising I missed it.
2021-03-31 15:32:54 -04:00
Michael Chisholm 414694d8fa Add support in ReferenceProperty for hybrid object type
constraints (i.e. both generic type categories and specific
types).  Also:
- more expansion/refinement of reference property unit tests
- bugfix: SROs are in OBJ_MAP too, it's not just SDOs!  Oops...
- pre-commit stylistic fixes
2021-03-31 15:32:51 -04:00
Michael Chisholm 986404b7b7 In the test_properties.py test suites, I thought code like
assert prop.clean(...)

doesn't test well enough since clean() methods on this branch
produce 2-tuples, and you should test what's in the tuple, not
just that it returned something non-empty.  So I fixed it in
several places to test the tuple contents.
2021-03-31 15:26:11 -04:00
Michael Chisholm 03c265c3a3 Add a check in ReferenceProperty constructor for an impossible
to satisfy type constraint: empty whitelist.  It would be silly
for anyone to do that, but I should check just in case I guess.
2021-03-31 15:26:11 -04:00
Michael Chisholm c7dd58ed89 Further ReferenceProperty refinements: make allow_custom=True
work when a whitelist of generic category types is used.
Disallow hybrid constraints (both generic and specific at the
same time).  Add more unit tests.
2021-03-31 15:26:09 -04:00
Michael Chisholm 387ce7e7cb Fix Report SDO: I'd fixed ReferenceProperty to work the way I
thought it should, but forgot to fix Report to use
ReferenceProperty in the way I thought it should!  Oops.
Added some tests to ensure Report is working property with
custom ID types in object_refs.
2021-03-31 15:22:00 -04:00
Michael Chisholm d2f960f2fc Initial revamp of customization enforcement and detection. 2021-03-31 15:21:55 -04:00
Emmanuelle Vargas-Gonzalez 6d285c47ae update test suite for use of .serialize(pretty=True) 2021-03-31 12:39:14 -04:00
chrisr3d 8093e07d1b Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into main 2021-03-24 12:36:49 +01:00
Chris Lenk 2743b90fc0
Merge pull request #500 from emmanvg/add-fp-serialize
fp write for STIX Objects
2021-03-19 21:13:30 -04:00
Emmanuelle Vargas-Gonzalez 19196654c5
Apply suggestions from code review
Co-authored-by: Chris Lenk <clenk@users.noreply.github.com>
2021-03-19 15:31:01 -04:00
Emmanuelle Vargas-Gonzalez 827f622c04 provide ability to stream STIX output to fp ``.write()`` file-like object 2021-03-17 15:01:49 -04:00
Chris Lenk ccf3b1a0fc
Merge pull request #480 from emmanvg/479-pagination-taxii-datastore
Support Pagination in TAXII DataStore
2021-03-15 09:33:42 -04:00
Emmanuelle Vargas-Gonzalez 7e5d31742c remove `six` from tests 2021-03-12 16:46:34 -05:00
Emmanuelle Vargas-Gonzalez fb6852b38f update test suite 2021-03-01 20:47:30 -05:00
Emmanuelle Vargas-Gonzalez ff5014c606 expose configuration options, combine weight dictionary, update tests 2021-03-01 12:27:52 -05:00
Emmanuelle Vargas-Gonzalez b3d0c7b58a styling changes 2021-02-20 00:13:36 -05:00
Emmanuelle Vargas-Gonzalez e4039231f4 missing link and test case 2021-02-20 00:10:38 -05:00
Emmanuelle Vargas-Gonzalez 9043a9dc8e Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into dev-extensions-proposal 2021-02-19 21:54:46 -05:00
Chris Lenk 4bccfd26bd
Merge pull request #492 from oasis-open/drop-six
Drop 'six' dependency (backwards breaking)
2021-02-18 23:45:13 -05:00
Chris Lenk 64608e7bea
Merge pull request #491 from emmanvg/graph-eq-changes
Graph Equivalence Changes
2021-02-18 23:44:39 -05:00
Emmanuelle Vargas-Gonzalez a8b6fa2100 Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into dev-extensions-proposal 2021-02-18 16:04:30 -05:00
Chris Lenk b4a0a9ea10 Remove six dependency (backwards breaking)
We've already removed Python 2 from our test harness, but this removes
all python 2 compatibility code left in.
2021-02-18 12:38:35 -05:00
Emmanuelle Vargas-Gonzalez c656d35da5 add more test coverage for new functions 2021-02-16 13:40:42 -05:00
Emmanuelle Vargas-Gonzalez f966c64b40 update test suite for environments 2021-02-16 01:05:46 -05:00
chrisr3d 24374e7a5f
Merge branch 'master' of github.com:oasis-open/cti-python-stix2 into main 2021-01-29 19:19:04 +01:00
Michael Chisholm 0dd6462d60 Add some unit tests which try to version marking-definitions. 2021-01-28 23:02:23 -05:00
Michael Chisholm c74d06aadc Improve versioning.new_version() to better handle custom objects
and dicts, and add better raised exception types if versioning
couldn't be done.  I changed workbench monkeypatching a bit, to
copy some class attributes over to the workbench wrapper
class-like callables, since some code expected those attributes
to be there (e.g. the versioning code).
2021-01-28 23:02:23 -05:00
Michael Chisholm 38067a6ec7 pre-commit stylistic fixes 2021-01-20 20:49:01 -05:00
Michael Chisholm fe2330af07 Improve is_sdo() et al utility functions with respect to
dict/mapping values: do a simple verification of the value's
STIX version, not just its type.  Added a lot more unit tests to
test behavior on dicts.  To make the implementation work, I had
to move the detect_spec_version() function out of the parsing
module and into utils.  So that required small changes at all
its previous call sites.
2021-01-20 16:59:39 -05:00