Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/reuse report ooi entities #4047

Merged
merged 141 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
141 commits
Select commit Hold shift + click to select a range
e2c1dfc
Add a recipe ID filter in the report API
Donnype Dec 5, 2024
f8d7b44
Introduce asset reports
Donnype Dec 24, 2024
bbaeee7
Finish Report API update
Donnype Jan 7, 2025
0283fb0
Fix report page bug: connector sends empty recipe_id
Donnype Jan 7, 2025
5a18202
Fix report generation through worker
Donnype Jan 7, 2025
f959131
Add reference date as TODO
Donnype Jan 8, 2025
633dded
Some field name changes and aggregate report fixes
Donnype Jan 8, 2025
9590d1d
Fix format_reference_human_readable for Report, HydratedReport and As…
Donnype Jan 8, 2025
034b3fd
Move some code
Donnype Jan 8, 2025
f366a86
Fixes on history page
madelondohmen Jan 8, 2025
ceddc13
Remove parent/child and report_id references for multi-report
Donnype Jan 9, 2025
8456b31
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 9, 2025
01ad906
Add report naming docs
Donnype Jan 9, 2025
958cbbf
Fix get report endpoint
Donnype Jan 9, 2025
d37a403
Fix report recipe variable names
madelondohmen Jan 9, 2025
f58adcd
Test and fix the newly implemented get_reports endpoint
Donnype Jan 9, 2025
94d78fc
Rename subreport to asset_report
Donnype Jan 9, 2025
e4c5231
Refactor report naming
Donnype Jan 9, 2025
6cc6f8f
Refactor aggregate report naming
Donnype Jan 9, 2025
9c9ef03
Fix generation of reports and merge conflicts
madelondohmen Jan 13, 2025
c993c84
Fix naming in SchedulerView
madelondohmen Jan 13, 2025
afa86b9
Fix tests
madelondohmen Jan 13, 2025
4137e84
Small fixes
madelondohmen Jan 14, 2025
360fdfe
Strict report name formats
Donnype Jan 14, 2025
a210f79
Make asset name format visible in export settings
madelondohmen Jan 14, 2025
e44aa70
Change children to assets
madelondohmen Jan 14, 2025
0c6454f
Merge branch 'main' of github.com:minvws/nl-kat-coordination into fix…
Rieven Jan 15, 2025
e9eb41b
Merge branch 'main' of github.com:minvws/nl-kat-coordination into fix…
Rieven Jan 15, 2025
5da5251
Fix report overview for single reports
madelondohmen Jan 15, 2025
857e6a5
madelondohmen Jan 15, 2025
64ea0b8
Small fixes in history and schedule tables
madelondohmen Jan 15, 2025
8c7af44
fix onboarding
Rieven Jan 15, 2025
9995486
fix onboarding
Rieven Jan 15, 2025
0819fbc
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 15, 2025
6ead47b
Fix scheduled reports name format for aggregate report
madelondohmen Jan 15, 2025
673d673
Refactor reporting logic to runner
Donnype Jan 15, 2025
5d9a437
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 15, 2025
f6e3acf
Fix create_asset_reports for aggregate report
madelondohmen Jan 15, 2025
0ffac28
Use a more consistent report data format
Donnype Jan 16, 2025
e9135c2
Changes for scheduled reports
Rieven Jan 16, 2025
b46b978
more fixes for schedule
Rieven Jan 16, 2025
8db8350
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 16, 2025
010e7a7
Fix report_name_format in template
madelondohmen Jan 20, 2025
859f1f0
Update rerun bulk action method
madelondohmen Jan 21, 2025
7050780
Merge branch 'fix/reuse-report-ooi-entities' of https://github.com/mi…
madelondohmen Jan 21, 2025
717ab87
Fix circular import
Donnype Jan 21, 2025
59dac41
Merge branch 'main' of github.com:minvws/nl-kat-coordination into fix…
Rieven Jan 21, 2025
31462c4
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 21, 2025
d0152aa
Change child and subreport to asset report in history template
madelondohmen Jan 21, 2025
1e0c462
Merge branch 'fix/reuse-report-ooi-entities' of https://github.com/mi…
madelondohmen Jan 21, 2025
f87522a
Fix report runner
Donnype Jan 21, 2025
ba07ba7
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 21, 2025
cf98dd2
Additional fixes for detail page
Donnype Jan 21, 2025
c46c4c3
fixes for onboarding
Rieven Jan 21, 2025
23c51ad
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 21, 2025
13434cd
fixes for report settings
Rieven Jan 21, 2025
eeb29d0
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 21, 2025
f8bc12b
Fix subreport page
madelondohmen Jan 21, 2025
2cf9b5c
Merge branch 'fix/reuse-report-ooi-entities' of https://github.com/mi…
madelondohmen Jan 21, 2025
b5a85e0
Several fixes for the input ooi typing and consistency
Donnype Jan 21, 2025
d6673d5
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 21, 2025
1f91a2c
Merge aggregate report saving and regular report saving
Donnype Jan 22, 2025
0fce11f
Avoid duplicate input ooi sets in the runner
Donnype Jan 22, 2025
eb00caa
Small fixes in tables and ReportList
madelondohmen Jan 22, 2025
35de0b8
Merge branch 'fix/reuse-report-ooi-entities' of https://github.com/mi…
madelondohmen Jan 22, 2025
64300bc
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 22, 2025
46ad12a
Style fix
Donnype Jan 22, 2025
9fd09da
Refactor lambda
Donnype Jan 22, 2025
2b392cb
Fixes in template texts
madelondohmen Jan 22, 2025
69677f9
Merge branch 'fix/reuse-report-ooi-entities' of https://github.com/mi…
madelondohmen Jan 22, 2025
d396960
Fix observerd_at inconsistency
Donnype Jan 22, 2025
8347dda
fix asset report view
Rieven Jan 22, 2025
9e1a4b4
Fix for aggregate reports data format
Donnype Jan 22, 2025
a1944af
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 22, 2025
c433d98
Fix for aggregate reports data format
Donnype Jan 22, 2025
d601b64
Hotfix
Donnype Jan 22, 2025
0fd5eaa
Style
Donnype Jan 22, 2025
e325e1f
fix asset report view same view
Rieven Jan 22, 2025
1d686f8
Bug fixes
madelondohmen Jan 22, 2025
7bc4933
Fix new Bytes API endpoint
Donnype Jan 22, 2025
815327b
Use new bytes endpoint naively in Rocky
Donnype Jan 22, 2025
f86be9c
Parallel bytes
Donnype Jan 22, 2025
059f2ba
fix input oois asset reports
Rieven Jan 22, 2025
67ac31e
Merge branch 'fix/report-flow' of github.com:minvws/nl-kat-coordinati…
Rieven Jan 22, 2025
3080210
Fix merge issue
Donnype Jan 22, 2025
6461e6c
Style
Donnype Jan 22, 2025
fb1f028
Fix rst style
Donnype Jan 22, 2025
1b796e0
Bulk load input oois
Donnype Jan 22, 2025
46ddeb1
Run on empty data as well for updates
Donnype Jan 22, 2025
317abf5
fix oois asset reports for aggregate report
Rieven Jan 22, 2025
9632ccb
fix oois asset reports for aggregate report
Rieven Jan 22, 2025
043c60f
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 22, 2025
b192503
Fix 0 input oois in templates
madelondohmen Jan 23, 2025
99b7234
fixes for reports while QAing
Rieven Jan 23, 2025
728cb7d
Add scan profiles to bulk API in Octopoes
Donnype Jan 23, 2025
e5d02b4
Add one-off jobs for report scheduler
jpbruinsslot Jan 23, 2025
98e59d2
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 23, 2025
12d0dab
Small template fixes
madelondohmen Jan 23, 2025
e56ec61
Default filtering on schedules should not be True
jpbruinsslot Jan 23, 2025
e16b672
fixes for onboarding an pagination
Rieven Jan 23, 2025
79ece65
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 23, 2025
76d2b57
Style fixes
Donnype Jan 23, 2025
bff6aa6
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 23, 2025
a0e2bb8
Fix risk level in vulnerability report
madelondohmen Jan 23, 2025
c5adccb
Merge branch 'fix/reuse-report-ooi-entities' of https://github.com/mi…
madelondohmen Jan 23, 2025
ba05c75
Add tests
jpbruinsslot Jan 23, 2025
edc2f77
Several mypy fixes
Donnype Jan 23, 2025
8c065ac
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 23, 2025
9c73454
Several mypy fixes
Donnype Jan 23, 2025
e314dbd
Pre commit
jpbruinsslot Jan 23, 2025
546e631
cosmetic fixes
Rieven Jan 23, 2025
23fa4f9
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Rieven Jan 23, 2025
e160498
Merge branch 'fix/mula/report-one-off-jobs' of github.com:minvws/nl-k…
Rieven Jan 23, 2025
81af019
Asset reports as input oois in ooi input data
Donnype Jan 23, 2025
4132d76
Fix runner integration test
Donnype Jan 23, 2025
52b99b3
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 23, 2025
3e73b3c
Style fixes
Donnype Jan 23, 2025
75fde87
Multi report first version in the runner
Donnype Jan 23, 2025
5cbec25
Fix rename reports
madelondohmen Jan 23, 2025
4f39c5a
Merge branch 'fix/reuse-report-ooi-entities' of https://github.com/mi…
madelondohmen Jan 23, 2025
fa1ab0c
Hotfix for runner
Donnype Jan 23, 2025
90744fe
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 23, 2025
391e92c
Fix ooi list showing reports
Rieven Jan 24, 2025
0c50c23
fix for scheduler rerun report and report types fixes
Rieven Jan 24, 2025
5f9c2c4
Update reports documentation
madelondohmen Jan 27, 2025
499d365
fix scheduler rerun for once
Rieven Jan 29, 2025
b4104f7
Merge branch 'fix/report-flow' of github.com:minvws/nl-kat-coordinati…
Rieven Jan 29, 2025
24938b5
Fix hash typo for caching
Donnype Jan 29, 2025
7b1d7a6
Merge branch 'fix/reuse-report-ooi-entities' of github.com:minvws/nl-…
Donnype Jan 29, 2025
88dc4d1
Fix a lot of tests
Donnype Jan 29, 2025
695290b
Fix rename for asset report
madelondohmen Jan 30, 2025
df8e323
Fix rename for asset report - part 2
madelondohmen Jan 30, 2025
cb47062
Remove asset report name format completely
madelondohmen Jan 30, 2025
f0a729a
Fix all unit tests
Donnype Jan 31, 2025
0ae86f8
Merge remote-tracking branch 'origin/fix/reuse-report-ooi-entities' i…
Donnype Jan 31, 2025
64796af
Fix all unit tests again
Donnype Jan 31, 2025
b249db4
Merge branch 'main' of github.com:minvws/nl-kat-coordination into fix…
Rieven Jan 31, 2025
8da8589
fix lang
Rieven Jan 31, 2025
fa26378
Fix integration tests
Donnype Feb 4, 2025
e94ff85
Fix unit tests that caught bug for id filtering for queries that don'…
Donnype Feb 4, 2025
1f0bbb0
Mypy fixes
Donnype Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 6 additions & 25 deletions boefjes/boefjes/job_handler.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import json
import os
import traceback
from collections.abc import Callable
Expand Down Expand Up @@ -132,40 +131,22 @@ def handle(self, boefje_meta: BoefjeMeta) -> None:

boefje_meta.arguments["input"] = ooi.serialize()

boefje_results: list[tuple[set, bytes | str]] = []
boefje_meta.runnable_hash = plugin.runnable_hash
boefje_meta.environment = get_environment_settings(boefje_meta, plugin.boefje_schema)

try:
logger.info("Getting environment settings for boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
boefje_meta.environment = get_environment_settings(boefje_meta, plugin.boefje_schema)

logger.info("Starting boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
boefje_meta.started_at = datetime.now(timezone.utc)
boefje_results = self.job_runner.run(boefje_meta, boefje_meta.environment)
logger.info("Starting boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))

except SettingsNotConformingToSchema:
logger.exception(
"Error running boefje due to settings/schema mismatch %s[%s]",
boefje_meta.boefje.id,
str(boefje_meta.id),
)
boefje_results = [
(
{"error/boefje"},
f"Error running boefje ({boefje_meta.id}) due to settings/schema mismatch: {0}".format(
json.dumps(plugin.boefje_schema)
),
)
]
boefje_meta.started_at = datetime.now(timezone.utc)

raise
boefje_results: list[tuple[set, bytes | str]] = []

try:
boefje_results = self.job_runner.run(boefje_meta, boefje_meta.environment)
except:
logger.exception("Error running boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
boefje_results = [({"error/boefje"}, traceback.format_exc())]

raise

finally:
boefje_meta.ended_at = datetime.now(timezone.utc)
logger.info("Saving to Bytes for boefje %s[%s]", boefje_meta.boefje.id, str(boefje_meta.id))
Expand Down
2 changes: 1 addition & 1 deletion boefjes/boefjes/local_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def _cached_resolve_normalizers(path: Path) -> dict[str, NormalizerResource]:

for path, package in paths_and_packages:
try:
normalizer_resources.append(get_normalizer_resource(path, package, hash(path)))
normalizer_resources.append(get_normalizer_resource(path, package, hash_path(path)))
except ModuleException as exc:
logger.exception(exc)

Expand Down
38 changes: 36 additions & 2 deletions bytes/bytes/api/router.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from base64 import b64decode
from base64 import b64decode, b64encode
from uuid import UUID

import structlog
Expand All @@ -8,7 +8,7 @@
from httpx import codes
from starlette.responses import JSONResponse

from bytes.api.models import BoefjeOutput
from bytes.api.models import BoefjeOutput, File
from bytes.auth import authenticate_token
from bytes.config import get_settings
from bytes.database.sql_meta_repository import MetaIntegrityError, ObjectNotFoundException, create_meta_data_repository
Expand Down Expand Up @@ -226,6 +226,7 @@ def get_raw(
organization: str | None = None,
boefje_meta_id: UUID | None = None,
normalized: bool | None = None,
raw_ids: list[UUID] | None = Query(None),
limit: int = 1,
mime_types: list[str] | None = Query(None),
meta_repository: MetaDataRepository = Depends(create_meta_data_repository),
Expand All @@ -237,6 +238,7 @@ def get_raw(
query_filter = RawDataFilter(
organization=organization,
boefje_meta_id=boefje_meta_id,
raw_ids=raw_ids,
normalized=normalized,
mime_types=parsed_mime_types,
limit=limit,
Expand All @@ -247,6 +249,38 @@ def get_raw(
return meta_repository.get_raw(query_filter)


@router.get("/raws", response_model=BoefjeOutput, tags=[RAW_TAG])
def get_raws(
organization: str | None = None,
boefje_meta_id: UUID | None = None,
raw_ids: list[UUID] | None = Query(None),
normalized: bool | None = None,
limit: int = 1,
mime_types: list[str] | None = Query(None),
meta_repository: MetaDataRepository = Depends(create_meta_data_repository),
) -> BoefjeOutput:
"""Get a filtered list of RawData"""

parsed_mime_types = [] if mime_types is None else [MimeType(value=mime_type) for mime_type in mime_types]

query_filter = RawDataFilter(
organization=organization,
boefje_meta_id=boefje_meta_id,
raw_ids=raw_ids,
normalized=normalized,
mime_types=parsed_mime_types,
limit=limit,
)

logger.info("mime_types: %s", parsed_mime_types)

raws = meta_repository.get_raws(query_filter)

return BoefjeOutput(
files=[File(name=raw_id, content=b64encode(raw.value), tags=raw.mime_types) for raw_id, raw in raws]
)


@router.get("/mime_types", response_model=dict[str, int], tags=[RAW_TAG])
def get_raw_count_per_mime_type(
organization: str | None = None,
Expand Down
9 changes: 9 additions & 0 deletions bytes/bytes/database/sql_meta_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,15 @@ def get_raw(self, query_filter: RawDataFilter) -> list[RawDataMeta]:

return [to_raw_meta(raw_file_in_db) for raw_file_in_db in query]

def get_raws(self, query_filter: RawDataFilter) -> list[tuple[uuid.UUID, RawData]]:
logger.debug("Querying raw data: %s", query_filter.model_dump_json())
query = self.session.query(RawFileInDB)
query = query_filter.apply(query)

raw_metas_pairs = [(raw_meta.id, to_boefje_meta(raw_meta.boefje_meta)) for raw_meta in query]

return self.raw_repository.get_raws(raw_metas_pairs)

def get_raw_by_id(self, raw_id: uuid.UUID) -> RawData:
raw_in_db: RawFileInDB | None = self.session.get(RawFileInDB, str(raw_id))

Expand Down
14 changes: 14 additions & 0 deletions bytes/bytes/raw/file_raw_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,20 @@ def get_raw(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> RawData:
contents = file_path.read_bytes()
return RawData(value=self.file_middleware.decode(contents), boefje_meta=boefje_meta)

def get_raws(self, raw_metas_pairs: list[tuple[UUID, BoefjeMeta]]) -> list[tuple[UUID, RawData]]:
try:
raws = [
(raw_id, self._raw_file_path(raw_id, boefje_meta).read_bytes(), boefje_meta)
for raw_id, boefje_meta in raw_metas_pairs
]
except FileNotFoundError:
raise BytesFileNotFoundException()

return [
(raw_id, RawData(value=self.file_middleware.decode(raw), boefje_meta=boefje_meta))
for raw_id, raw, boefje_meta in raws
]

def _raw_file_path(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> Path:
return self.base_path / boefje_meta.organization / self._index(raw_id) / str(raw_id)

Expand Down
7 changes: 7 additions & 0 deletions bytes/bytes/repositories/meta_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class NormalizerMetaFilter(BaseModel):
class RawDataFilter(BaseModel):
organization: str | None = None
boefje_meta_id: UUID | None = None
raw_ids: list[UUID] | None = None
normalized: bool | None = None
mime_types: list[MimeType] = Field(default_factory=list)
limit: int | None = 1
Expand All @@ -50,6 +51,9 @@ def apply(self, query: Query) -> Query:
if self.mime_types:
query = query.filter(RawFileInDB.mime_types.contains([m.value for m in self.mime_types]))

if self.raw_ids:
query = query.filter(RawFileInDB.id.in_([x.hex for x in self.raw_ids]))

return query.offset(self.offset).limit(self.limit)


Expand Down Expand Up @@ -87,6 +91,9 @@ def get_raw_by_id(self, raw_id: UUID) -> RawData:
def get_raw(self, query_filter: RawDataFilter) -> list[RawDataMeta]:
raise NotImplementedError()

def get_raws(self, query_filter: RawDataFilter) -> list[tuple[UUID, RawData]]:
raise NotImplementedError()

def has_raw(self, boefje_meta: BoefjeMeta, mime_types: list[MimeType]) -> bool:
raise NotImplementedError()

Expand Down
3 changes: 3 additions & 0 deletions bytes/bytes/repositories/raw_repository.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,6 @@ def save_raw(self, raw_id: UUID, raw: RawData) -> None:

def get_raw(self, raw_id: UUID, boefje_meta: BoefjeMeta) -> RawData:
raise NotImplementedError()

def get_raws(self, raw_metas_pairs: list[tuple[UUID, BoefjeMeta]]) -> list[tuple[UUID, RawData]]:
raise NotImplementedError()
14 changes: 12 additions & 2 deletions bytes/tests/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import httpx
from httpx import HTTPError, HTTPStatusError

from bytes.api.models import BoefjeOutput
from bytes.api.models import BoefjeOutput, File
from bytes.models import BoefjeMeta, NormalizerMeta, RawDataMeta
from bytes.repositories.meta_repository import BoefjeMetaFilter, NormalizerMetaFilter, RawDataFilter

Expand Down Expand Up @@ -157,11 +157,21 @@ def get_raw_meta(self, raw_id: UUID) -> RawDataMeta:
return RawDataMeta.model_validate(response.json())

@retry_with_login
def get_raws(self, query_filter: RawDataFilter) -> dict[str, str]:
def get_raw_metas(self, query_filter: RawDataFilter) -> dict[str, str]:
params = query_filter.model_dump(exclude_none=True)
params["mime_types"] = [m.value for m in query_filter.mime_types]

response = self.client.get("/bytes/raw", params=params)
self._verify_response(response)

return response.json() # type: ignore

@retry_with_login
def get_raws(self, query_filter: RawDataFilter) -> list[File]:
params = query_filter.model_dump(exclude_none=True)
params["mime_types"] = [m.value for m in query_filter.mime_types]

response = self.client.get("/bytes/raws", params=params)
self._verify_response(response)

return response.json().get("files", [])
33 changes: 27 additions & 6 deletions bytes/tests/integration/test_bytes_api.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import uuid
from base64 import b64encode
from base64 import b64decode, b64encode

import httpx
import pytest
Expand Down Expand Up @@ -262,7 +262,7 @@ def test_save_raw_with_one_mime_type(bytes_api_client: BytesAPIClient) -> None:
assert retrieved_raw == raw
assert (
len(
bytes_api_client.get_raws(
bytes_api_client.get_raw_metas(
RawDataFilter(boefje_meta_id=boefje_meta.id, normalized=False, mime_types=[MimeType(value="bad/mime")])
)
)
Expand Down Expand Up @@ -296,6 +296,27 @@ def test_save_raw_no_mime_types(bytes_api_client: BytesAPIClient) -> None:
assert get_raw_without_mime_type_response.content == raw


def test_get_many_actual_raw_files(bytes_api_client: BytesAPIClient) -> None:
boefje_meta = get_boefje_meta(meta_id=uuid.uuid4())
bytes_api_client.save_boefje_meta(boefje_meta)
mime_types = ["text/kat-test", "text/html"]
second_mime_types = ["text/kat-test", "text/status-code"]

raw = b"test 123456"
second_raw = b"second test 200"
first_id = bytes_api_client.save_raw(boefje_meta.id, raw, mime_types)
second_id = bytes_api_client.save_raw(boefje_meta.id, second_raw, second_mime_types)

result = bytes_api_client.get_raws(RawDataFilter(raw_ids=[first_id], limit=10))
assert len(result) == 1
assert b64decode(result[0]["content"]) == raw

result = bytes_api_client.get_raws(RawDataFilter(raw_ids=[first_id, second_id], limit=10))
assert len(result) == 2
assert b64decode(result[0]["content"]) == raw
assert b64decode(result[1]["content"]) == second_raw


def test_raw_mimes(bytes_api_client: BytesAPIClient) -> None:
boefje_meta = get_boefje_meta(meta_id=uuid.uuid4())
bytes_api_client.save_boefje_meta(boefje_meta)
Expand All @@ -317,21 +338,21 @@ def test_raw_mimes(bytes_api_client: BytesAPIClient) -> None:
assert bytes_api_client.get_raw(first_id) == raw
assert bytes_api_client.get_raw(second_id) == second_raw

retrieved_raws = bytes_api_client.get_raws(
retrieved_raws = bytes_api_client.get_raw_metas(
RawDataFilter(
boefje_meta_id=boefje_meta.id, normalized=False, mime_types=[MimeType(value=x) for x in mime_types]
)
)
assert len(retrieved_raws) == 1
assert {x["value"] for x in retrieved_raws[0]["mime_types"]} == set(mime_types)

retrieved_raws = bytes_api_client.get_raws(
retrieved_raws = bytes_api_client.get_raw_metas(
RawDataFilter(boefje_meta_id=boefje_meta.id, normalized=False, mime_types=[MimeType(value="text/html")])
)
assert len(retrieved_raws) == 1
assert {x["value"] for x in retrieved_raws[0]["mime_types"]} == set(mime_types)

retrieved_raws = bytes_api_client.get_raws(
retrieved_raws = bytes_api_client.get_raw_metas(
RawDataFilter(boefje_meta_id=boefje_meta.id, normalized=False, mime_types=[MimeType(value="bad/mime")])
)
assert len(retrieved_raws) == 0
Expand All @@ -342,7 +363,7 @@ def test_raw_mimes(bytes_api_client: BytesAPIClient) -> None:
mime_types=[MimeType(value="text/kat-test")],
limit=3,
)
retrieved_raws = bytes_api_client.get_raws(query_filter)
retrieved_raws = bytes_api_client.get_raw_metas(query_filter)

assert len(retrieved_raws) == 2
assert (
Expand Down
Binary file removed docs/source/boefjes/img/add-variant.png
Binary file not shown.
Binary file not shown.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@

There are two ways to create a Boefje. The first is to create a Boefje with the User Interface (UI). The second option is to create it in the backend.

.. \_boefje-variants:

## Boefje variants

Boefje variants are Boefjes that use the same container image. In OpenKAT, all Boefjes with the same container image will be seen as 'variants' of each other and will be shown together on those Boefje detail pages.
Expand Down
1 change: 0 additions & 1 deletion docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ Welcome to the OpenKAT documentation!
:caption: Contents

introduction/index
katalogus/index
manual/index
modules/index
installation-and-deployment/index
Expand Down
64 changes: 0 additions & 64 deletions docs/source/katalogus/boefjes.rst

This file was deleted.

Binary file removed docs/source/katalogus/img/add-variant.png
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Loading