Merge branch 'master' of github.com:oasis-open/cti-python-stix2

master
chrisr3d 2019-01-14 12:16:12 +01:00
commit 407f346eb8
20 changed files with 83 additions and 25 deletions

View File

@ -1,6 +1,13 @@
CHANGELOG CHANGELOG
========= =========
1.1.1 - 2019-01-11
* #234 Update documentation structure to better navigate between v20/v21 objects
* #232 FileSystemStore now raises an exception if you attempt to overwrite an existing file
* #236 Fix a serialization problem with the WindowsRegistryKey observable object
* #238 Fix a problem with the LanguageContent object not allowing its creation with an empty dictionary
1.1.0 - 2018-12-11 1.1.0 - 2018-12-11
- Most (if not all) STIX 2.1 SDOs/SROs and core objects have been implemented according to the latest CSD/WD document - Most (if not all) STIX 2.1 SDOs/SROs and core objects have been implemented according to the latest CSD/WD document

5
docs/api/stix2.v20.rst Normal file
View File

@ -0,0 +1,5 @@
v20
=========
.. automodule:: stix2.v20
:members:

5
docs/api/stix2.v21.rst Normal file
View File

@ -0,0 +1,5 @@
v21
=========
.. automodule:: stix2.v21
:members:

View File

@ -2,4 +2,4 @@ common
================ ================
.. automodule:: stix2.v20.common .. automodule:: stix2.v20.common
:members: :members:

View File

@ -2,4 +2,4 @@ observables
===================== =====================
.. automodule:: stix2.v20.observables .. automodule:: stix2.v20.observables
:members: :members:

View File

@ -2,4 +2,4 @@ sdo
============= =============
.. automodule:: stix2.v20.sdo .. automodule:: stix2.v20.sdo
:members: :members:

View File

@ -2,4 +2,4 @@ sro
============= =============
.. automodule:: stix2.v20.sro .. automodule:: stix2.v20.sro
:members: :members:

View File

@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 1.1.0 current_version = 1.1.1
commit = True commit = True
tag = True tag = True

View File

@ -12,16 +12,8 @@
patterns patterns
properties properties
utils utils
v20.bundle v20
v20.common v21
v20.observables
v20.sdo
v20.sro
v21.bundle
v21.common
v21.observables
v21.sdo
v21.sro
workbench workbench
""" """

View File

@ -1,21 +1,19 @@
"""Python STIX2 FileSystem Source/Sink""" """Python STIX2 FileSystem Source/Sink"""
# Temporary while we address TODO statement
from __future__ import print_function
import errno import errno
import io import io
import json import json
import os import os
import re import re
import stat import stat
import sys
import six import six
from stix2 import v20, v21 from stix2 import v20, v21
from stix2.base import _STIXBase from stix2.base import _STIXBase
from stix2.core import parse from stix2.core import parse
from stix2.datastore import DataSink, DataSource, DataStoreMixin from stix2.datastore import (
DataSink, DataSource, DataSourceError, DataStoreMixin,
)
from stix2.datastore.filters import Filter, FilterSet, apply_common_filters from stix2.datastore.filters import Filter, FilterSet, apply_common_filters
from stix2.utils import format_datetime, get_type_from_id, is_marking from stix2.utils import format_datetime, get_type_from_id, is_marking
@ -544,9 +542,8 @@ class FileSystemSink(DataSink):
else: else:
stix_obj = v20.Bundle(stix_obj, allow_custom=self.allow_custom) stix_obj = v20.Bundle(stix_obj, allow_custom=self.allow_custom)
# TODO: Better handling of the overwriting case.
if os.path.isfile(file_path): if os.path.isfile(file_path):
print("Attempted to overwrite file!", file_path, file=sys.stderr) raise DataSourceError("Attempted to overwrite file (!) at: {}".format(file_path))
else: else:
with io.open(file_path, 'w', encoding=encoding) as f: with io.open(file_path, 'w', encoding=encoding) as f:
stix_obj = stix_obj.serialize(pretty=True, encoding=encoding, ensure_ascii=False) stix_obj = stix_obj.serialize(pretty=True, encoding=encoding, ensure_ascii=False)

View File

@ -9,6 +9,7 @@ import pytest
import pytz import pytz
import stix2 import stix2
from stix2.datastore import DataSourceError
from stix2.datastore.filesystem import ( from stix2.datastore.filesystem import (
AuthSet, _find_search_optimizations, _get_matching_dir_entries, AuthSet, _find_search_optimizations, _get_matching_dir_entries,
_timestamp2filename, _timestamp2filename,
@ -420,6 +421,33 @@ def test_filesystem_sink_add_objects_list(fs_sink, fs_source):
os.remove(camp7filepath) os.remove(camp7filepath)
def test_filesystem_attempt_stix_file_overwrite(fs_store):
# add python stix object
camp8 = stix2.v20.Campaign(
name="George Washington",
objective="Create an awesome country",
aliases=["Georgey"],
)
fs_store.add(camp8)
camp8_r = fs_store.get(camp8.id)
assert camp8_r.id == camp8_r.id
assert camp8_r.name == camp8.name
filepath = os.path.join(
FS_PATH, "campaign", camp8_r.id,
_timestamp2filename(camp8_r.modified) + ".json",
)
# Now attempt to overwrite the existing file
with pytest.raises(DataSourceError) as excinfo:
fs_store.add(camp8)
assert "Attempted to overwrite file" in str(excinfo)
os.remove(filepath)
def test_filesystem_sink_marking(fs_sink): def test_filesystem_sink_marking(fs_sink):
marking = stix2.v20.MarkingDefinition( marking = stix2.v20.MarkingDefinition(
definition_type="tlp", definition_type="tlp",

View File

@ -1,4 +1,16 @@
"""STIX 2.0 API Objects.""" """STIX 2.0 API Objects.
.. autosummary::
:toctree: v20
bundle
common
observables
sdo
sro
|
"""
# flake8: noqa # flake8: noqa

View File

@ -1,4 +1,16 @@
"""STIX 2.1 API Objects.""" """STIX 2.1 API Objects.
.. autosummary::
:toctree: v21
bundle
common
observables
sdo
sro
|
"""
# flake8: noqa # flake8: noqa

View File

@ -1 +1 @@
__version__ = "1.1.0" __version__ = "1.1.1"