stix2arango 1.0.3__tar.gz → 1.1.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of stix2arango might be problematic. Click here for more details.

Files changed (106) hide show
  1. {stix2arango-1.0.3 → stix2arango-1.1.1}/.github/workflows/run-tests.yml +16 -12
  2. {stix2arango-1.0.3 → stix2arango-1.1.1}/PKG-INFO +1 -1
  3. {stix2arango-1.0.3 → stix2arango-1.1.1}/pyproject.toml +1 -1
  4. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/services/arangodb_service.py +5 -2
  5. {stix2arango-1.0.3 → stix2arango-1.1.1}/.env.example +0 -0
  6. {stix2arango-1.0.3 → stix2arango-1.1.1}/.env.markdown +0 -0
  7. {stix2arango-1.0.3 → stix2arango-1.1.1}/.github/workflows/create-release.yml +0 -0
  8. {stix2arango-1.0.3 → stix2arango-1.1.1}/.gitignore +0 -0
  9. {stix2arango-1.0.3 → stix2arango-1.1.1}/LICENSE +0 -0
  10. {stix2arango-1.0.3 → stix2arango-1.1.1}/README.md +0 -0
  11. {stix2arango-1.0.3 → stix2arango-1.1.1}/docs/README.md +0 -0
  12. {stix2arango-1.0.3 → stix2arango-1.1.1}/docs/stix2arango.png +0 -0
  13. {stix2arango-1.0.3 → stix2arango-1.1.1}/requirements.txt +0 -0
  14. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/__init__.py +0 -0
  15. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/__main__.py +0 -0
  16. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/config.py +0 -0
  17. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/services/__init__.py +0 -0
  18. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/services/version_annotator.py +0 -0
  19. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/stix2arango/__init__.py +0 -0
  20. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/stix2arango/bundle_loader.py +0 -0
  21. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/stix2arango/stix2arango.py +0 -0
  22. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/templates/marking-definition.json +0 -0
  23. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango/utils.py +0 -0
  24. {stix2arango-1.0.3 → stix2arango-1.1.1}/stix2arango.py +0 -0
  25. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/README.md +0 -0
  26. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/custom-sco-original.json +0 -0
  27. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/custom-sco-updated.json +0 -0
  28. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/custom-sdo-original.json +0 -0
  29. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/custom-sdo-updated.json +0 -0
  30. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/duplicate-objects-all-properties-same.json +0 -0
  31. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/duplicate-objects-properties-different.json +0 -0
  32. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/embedded-ref-object-removed.json +0 -0
  33. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/embedded-ref-object-updated.json +0 -0
  34. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/embedded-ref-object.json +0 -0
  35. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/embedded-ref-sdo-sco-sro-smo.json +0 -0
  36. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/nested-embedded-ref.json +0 -0
  37. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/non-standard-embedded-relationship.json +0 -0
  38. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sco-original.json +0 -0
  39. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sco-updated.json +0 -0
  40. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sigma-rule-bundle-another.json +0 -0
  41. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sigma-rule-bundle-condensed-original.json +0 -0
  42. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sigma-rule-bundle-condensed-update-1.json +0 -0
  43. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sigma-rule-bundle-condensed-update-2.json +0 -0
  44. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sigma-rule-bundle-yet-another.json +0 -0
  45. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sigma-rule-bundle.json +0 -0
  46. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/smo-embedded-ref-1.json +0 -0
  47. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/smo-embedded-ref-2.json +0 -0
  48. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/smo-original.json +0 -0
  49. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/smo-updated-2.json +0 -0
  50. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/smo-updated.json +0 -0
  51. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/source-object-does-not-exist.json +0 -0
  52. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sro-original.json +0 -0
  53. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/sro-updated.json +0 -0
  54. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/target-object-does-not-exist.json +0 -0
  55. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/update_with_diff_modified_times_1.json +0 -0
  56. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/files/stix2arango/update_with_diff_modified_times_2.json +0 -0
  57. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/requirements.txt +0 -0
  58. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/__init__.py +0 -0
  59. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/base_test.py +0 -0
  60. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_00-basic-import-logic-with-embedded.py +0 -0
  61. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_01-basic-import-no-embedded.py +0 -0
  62. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_02-basic-import-no-stix2arango_note.py +0 -0
  63. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_03-import-with-no-update-detected.py +0 -0
  64. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_04-update-detected-because-of-stix2arango-note.py +0 -0
  65. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_05-update-detected-because-of-modified-time-change.py +0 -0
  66. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_06-update-detected-because-of-modified-time-change-not-in-order.py +0 -0
  67. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_07-test-default-imported-objects.py +0 -0
  68. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_08-duplicate-objects-in-bundle-all-identical.py +0 -0
  69. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_09-duplicate-objects-but-diff-times-in-bundle.py +0 -0
  70. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_10-updating-object-no-modified-time.py +0 -0
  71. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_11-custom-sdos.py +0 -0
  72. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_12-custom-scos.py +0 -0
  73. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_13-updating-smos.py +0 -0
  74. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_14-non-standard-embedded-relationship.py +0 -0
  75. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_15-testing-when-sro-target-not-in-collection.py +0 -0
  76. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_16-testing-when-sro-source-not-in-collection.py +0 -0
  77. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_17-testing-update-of-embedded-refs.py +0 -0
  78. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_18-testing-nested-embedded-ref.py +0 -0
  79. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_19_update_with_diff_created_times.py +0 -0
  80. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_20-embedded-sro-update-for-sdo.py +0 -0
  81. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_21-embedded-sro-update-for-sco.py +0 -0
  82. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_22-embedded-sro-update-for-smo.py +0 -0
  83. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_23-embedded-sro-removed.py +0 -0
  84. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_24-test-hidden-properties.py +0 -0
  85. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_25-ignore-embedded-rels-smo.py +0 -0
  86. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/full_tests/test_26-ignore-embedded-rels-sro.py +0 -0
  87. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/test_bundle_loader.py +0 -0
  88. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/src/test_stix2arango.py +0 -0
  89. {stix2arango-1.0.3 → stix2arango-1.1.1}/tests/tests.env +0 -0
  90. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/README.md +0 -0
  91. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_atlas.py +0 -0
  92. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_attack_enterprise.py +0 -0
  93. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_attack_ics.py +0 -0
  94. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_attack_mobile.py +0 -0
  95. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_capec.py +0 -0
  96. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_cwe.py +0 -0
  97. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_disarm.py +0 -0
  98. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_locations.py +0 -0
  99. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_sigma_rules.py +0 -0
  100. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_tlp.py +0 -0
  101. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cti_processor/insert_archive_yara_rules.py +0 -0
  102. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cve_processor/README.md +0 -0
  103. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cve_processor/insert_archive_cve.py +0 -0
  104. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/arango_cve_processor/manager.py +0 -0
  105. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/stix2arango/add_ref_types.py +0 -0
  106. {stix2arango-1.0.3 → stix2arango-1.1.1}/utilities/stix2arango/update_taxii_index_with_date_transform.py +0 -0
@@ -1,15 +1,19 @@
1
1
  name: Run Tests
2
2
 
3
+ permissions:
4
+ contents: read
5
+
3
6
  on:
4
7
  push:
5
8
  branches:
6
9
  - main
7
10
  pull_request:
8
- permissions:
9
- contents: read
11
+ types:
12
+ - opened
13
+ - synchronize
10
14
 
11
15
  jobs:
12
- run-tests:
16
+ test-pipeline:
13
17
  runs-on: ubuntu-latest
14
18
  environment: test_pipeline
15
19
 
@@ -24,10 +28,10 @@ jobs:
24
28
  with:
25
29
  python-version: "3.11"
26
30
 
27
- - name: start arangodb
31
+ - name: Start ArangoDB
32
+ id: start_arango_db
28
33
  run: |
29
34
  docker run --name s2a-action-arangodb -d -p 8529:8529 -e ARANGO_ROOT_PASSWORD= arangodb/arangodb:latest
30
-
31
35
  RETRY_DELAY=3
32
36
  RETRY_COUNT=10
33
37
  echo "Waiting for server to start"
@@ -37,31 +41,31 @@ jobs:
37
41
  exit 1
38
42
  fi
39
43
 
40
-
41
- - name: Set .env testing purpose
44
+ - name: Setup environment
45
+ id: setup_environment
42
46
  run: |
43
47
  set -a;
44
48
  source tests/tests.env
45
49
  set +a;
46
-
47
50
  cp tests/tests.env .env
48
51
 
49
- - name: test all
50
- id: test-all
52
+ - name: Run tests
53
+ id: run_tests
51
54
  run: |
52
55
  pip install -r tests/requirements.txt
53
56
  pip install -e .
54
-
55
57
  pytest --cov --cov-branch --cov-report=xml --junitxml=junit.xml -o junit_family=legacy tests/
56
58
 
57
59
  - name: Upload coverage reports to Codecov
60
+ id: upload_unit_test_coverage
58
61
  if: ${{ !cancelled() }}
59
62
  uses: codecov/codecov-action@v5
60
63
  with:
61
64
  token: ${{ secrets.CODECOV_TOKEN }}
62
65
 
63
66
  - name: Upload test results to Codecov
67
+ id: upload_unit_test_results
64
68
  if: ${{ !cancelled() }}
65
69
  uses: codecov/test-results-action@v1
66
70
  with:
67
- token: ${{ secrets.CODECOV_TOKEN }}
71
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stix2arango
3
- Version: 1.0.3
3
+ Version: 1.1.1
4
4
  Summary: stix2arango is a command line tool that takes a group of STIX 2.1 objects in a bundle and inserts them into ArangoDB. It can also handle updates to existing objects in ArangoDB imported in a bundle.
5
5
  Project-URL: Homepage, https://github.com/muchdogesec/stix2arango
6
6
  Project-URL: Issues, https://github.com/muchdogesec/stix2arango/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "stix2arango"
7
- version = "1.0.3"
7
+ version = "1.1.1"
8
8
  authors = [
9
9
  { name = "dogesec" }
10
10
  ]
@@ -220,7 +220,8 @@ class ArangoDBService:
220
220
  )
221
221
  out = [dict(zip(('id', '_key', 'modified', '_record_modified', '_is_latest', '_id'), obj_tuple)) for obj_tuple in out]
222
222
  annotated, deprecated = annotate_versions(out)
223
- self.db.collection(collection_name).update_many(annotated, sync=True, keep_none=False)
223
+ for chunk in utils.chunked(annotated, 10_000):
224
+ self.db.collection(collection_name).update_many(chunk, sync=True, keep_none=False)
224
225
  return deprecated
225
226
 
226
227
 
@@ -297,8 +298,9 @@ class ArangoDBService:
297
298
  @contextlib.contextmanager
298
299
  def transactional(self, write=None, exclusive=None, sync=True):
299
300
  original_db = self.db
300
- transactional_db = self.db.begin_transaction(allow_implicit=True, write=write, exclusive=exclusive, sync=sync)
301
+ transactional_db = self.db.begin_transaction(allow_implicit=True, write=write, exclusive=exclusive, sync=sync, lock_timeout=300)
301
302
  try:
303
+ logging.info(f"entering transaction: {transactional_db.transaction_status()}")
302
304
  self.db = transactional_db
303
305
  yield self
304
306
  transactional_db.commit_transaction()
@@ -306,4 +308,5 @@ class ArangoDBService:
306
308
  transactional_db.abort_transaction()
307
309
  raise
308
310
  finally:
311
+ logging.info(f"exiting transaction: {transactional_db.transaction_status()}")
309
312
  self.db = original_db
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes