stoobly-agent 1.2.3__py3-none-any.whl → 1.3.0__py3-none-any.whl
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.
- stoobly_agent/__init__.py +1 -1
- stoobly_agent/app/cli/helpers/certificate_authority.py +1 -5
- stoobly_agent/app/cli/scaffold/app.py +14 -32
- stoobly_agent/app/cli/scaffold/app_command.py +4 -7
- stoobly_agent/app/cli/scaffold/app_config.py +15 -2
- stoobly_agent/app/cli/scaffold/app_create_command.py +18 -2
- stoobly_agent/app/cli/scaffold/command.py +1 -1
- stoobly_agent/app/cli/scaffold/constants.py +9 -3
- stoobly_agent/app/cli/scaffold/docker/app_builder.py +3 -7
- stoobly_agent/app/cli/scaffold/docker/constants.py +0 -1
- stoobly_agent/app/cli/scaffold/docker/service/builder.py +12 -11
- stoobly_agent/app/cli/scaffold/docker/workflow/builder.py +14 -31
- stoobly_agent/app/cli/scaffold/docker/workflow/mock_decorator.py +6 -2
- stoobly_agent/app/cli/scaffold/docker/workflow/reverse_proxy_decorator.py +6 -2
- stoobly_agent/app/cli/scaffold/service.py +1 -1
- stoobly_agent/app/cli/scaffold/service_command.py +1 -1
- stoobly_agent/app/cli/scaffold/service_workflow_validate_command.py +6 -8
- stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.context +2 -4
- stoobly_agent/app/cli/scaffold/templates/app/.Makefile +37 -21
- stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml +8 -13
- stoobly_agent/app/cli/scaffold/templates/app/Makefile +1 -1
- stoobly_agent/app/cli/scaffold/templates/app/build/.docker-compose.base.yml +8 -4
- stoobly_agent/app/cli/scaffold/templates/app/build/mock/.docker-compose.mock.yml +2 -6
- stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/.configure +3 -0
- stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/.init +3 -0
- stoobly_agent/app/cli/scaffold/templates/app/build/record/.docker-compose.record.yml +2 -6
- stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/.configure +3 -0
- stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/.init +3 -0
- stoobly_agent/app/cli/scaffold/templates/app/build/test/.docker-compose.test.yml +2 -6
- stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/.configure +3 -0
- stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/.init +3 -0
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.docker-compose.base.yml +2 -0
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/.docker-compose.mock.yml +2 -8
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/.docker-compose.record.yml +2 -8
- stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/.docker-compose.test.yml +2 -8
- stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/.docker-compose.exec.yml +2 -3
- stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.logs +1 -0
- stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/mock/.docker-compose.mock.yml +1 -2
- stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/record/.docker-compose.record.yml +1 -2
- stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/.configure +3 -0
- stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/.init +7 -1
- stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/.configure +3 -0
- stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/.init +7 -1
- stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/.configure +3 -0
- stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/.init +7 -1
- stoobly_agent/app/cli/scaffold/validate_command.py +2 -2
- stoobly_agent/app/cli/scaffold/workflow.py +5 -4
- stoobly_agent/app/cli/scaffold/workflow_command.py +3 -3
- stoobly_agent/app/cli/scaffold/workflow_run_command.py +72 -36
- stoobly_agent/app/cli/scaffold_cli.py +51 -45
- stoobly_agent/app/cli/snapshot_cli.py +6 -2
- stoobly_agent/app/models/adapters/joined_request_adapter.py +6 -0
- stoobly_agent/app/models/factories/resource/local_db/helpers/scenario_snapshot.py +3 -1
- stoobly_agent/app/models/helpers/apply.py +34 -17
- stoobly_agent/app/models/helpers/create_request_params_service.py +4 -0
- stoobly_agent/app/proxy/replay/body_parser_service.py +11 -3
- stoobly_agent/config/data_dir.py +2 -1
- stoobly_agent/config/schema.yml +2 -2
- stoobly_agent/test/app/cli/scaffold/cli_invoker.py +1 -2
- stoobly_agent/test/app/cli/snapshot/snapshot_apply_test.py +162 -1
- stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION +1 -1
- stoobly_agent/test/mock_data/scaffold/docker-compose-assets-service.yml +1 -3
- {stoobly_agent-1.2.3.dist-info → stoobly_agent-1.3.0.dist-info}/METADATA +1 -1
- {stoobly_agent-1.2.3.dist-info → stoobly_agent-1.3.0.dist-info}/RECORD +67 -68
- stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.proxy +0 -34
- {stoobly_agent-1.2.3.dist-info → stoobly_agent-1.3.0.dist-info}/LICENSE +0 -0
- {stoobly_agent-1.2.3.dist-info → stoobly_agent-1.3.0.dist-info}/WHEEL +0 -0
- {stoobly_agent-1.2.3.dist-info → stoobly_agent-1.3.0.dist-info}/entry_points.txt +0 -0
stoobly_agent/config/schema.yml
CHANGED
@@ -6,13 +6,13 @@ cli:
|
|
6
6
|
proxy:
|
7
7
|
data: map(include('data_rules'), key=include('project_id'))
|
8
8
|
firewall: map(list(include('firewall_rule')), key=include('project_id'))
|
9
|
-
match: map(list(include('match_rule')), key=include('project_id'))
|
9
|
+
match: map(list(include('match_rule')), key=include('project_id'), required=False)
|
10
10
|
rewrite: map(list(include('rewrite_rule')), key=include('project_id'))
|
11
11
|
intercept:
|
12
12
|
active: bool()
|
13
13
|
mode: include('mode')
|
14
14
|
project_key: str()
|
15
|
-
url: str()
|
15
|
+
url: str(required=False)
|
16
16
|
proxy_config_path: str(required=False)
|
17
17
|
remote:
|
18
18
|
api_url: str()
|
@@ -1,3 +1,4 @@
|
|
1
|
+
import os
|
1
2
|
import pdb
|
2
3
|
import pytest
|
3
4
|
import time
|
@@ -13,6 +14,10 @@ from stoobly_agent.lib.orm.request import Request
|
|
13
14
|
from stoobly_agent.lib.orm.scenario import Scenario
|
14
15
|
from stoobly_agent.test.test_helper import assert_orm_request_equivalent, DETERMINISTIC_GET_REQUEST_URL, NON_DETERMINISTIC_GET_REQUEST_URL, reset
|
15
16
|
|
17
|
+
def write_junk(path: str):
|
18
|
+
with open(path, 'w') as fp:
|
19
|
+
fp.write('junk')
|
20
|
+
|
16
21
|
@pytest.fixture(scope='module')
|
17
22
|
def runner():
|
18
23
|
return CliRunner()
|
@@ -386,4 +391,160 @@ class TestApply():
|
|
386
391
|
apply_result = runner.invoke(snapshot, ['apply'])
|
387
392
|
assert apply_result.exit_code == 0
|
388
393
|
|
389
|
-
assert log.version == expected_version
|
394
|
+
assert log.version == expected_version
|
395
|
+
|
396
|
+
class TestWhenMalformedScenarioMetadata():
|
397
|
+
|
398
|
+
@pytest.fixture(scope='class')
|
399
|
+
def created_scenario(self, runner: CliRunner):
|
400
|
+
create_result = runner.invoke(scenario, ['create', 'test'])
|
401
|
+
assert create_result.exit_code == 0
|
402
|
+
return Scenario.last()
|
403
|
+
|
404
|
+
@pytest.fixture(scope='class', autouse=True)
|
405
|
+
def put_event(self, runner: CliRunner, created_scenario: Scenario):
|
406
|
+
snapshot_result = runner.invoke(scenario, ['snapshot', created_scenario.key()])
|
407
|
+
assert snapshot_result.exit_code == 0
|
408
|
+
|
409
|
+
log = Log()
|
410
|
+
events = log.events
|
411
|
+
event = events[len(events) - 1]
|
412
|
+
metadata_path = event.snapshot().metadata_path
|
413
|
+
with open(metadata_path, 'w') as fp:
|
414
|
+
fp.write('junk')
|
415
|
+
|
416
|
+
return event
|
417
|
+
|
418
|
+
@pytest.fixture(scope='class', autouse=True)
|
419
|
+
def removed_scenario(self, created_scenario: Scenario):
|
420
|
+
created_scenario.delete()
|
421
|
+
assert Scenario.find(created_scenario.id) == None
|
422
|
+
|
423
|
+
def test_creates_scenario_with_uuid_name(self, runner: CliRunner, created_scenario: Scenario):
|
424
|
+
apply_result = runner.invoke(snapshot, ['apply'])
|
425
|
+
assert apply_result.exit_code == 0
|
426
|
+
|
427
|
+
recreated_scenario = Scenario.find_by(uuid=created_scenario.uuid)
|
428
|
+
assert recreated_scenario.name == created_scenario.uuid
|
429
|
+
|
430
|
+
class TestWhenMissingScenarioMetadata():
|
431
|
+
|
432
|
+
@pytest.fixture(scope='class')
|
433
|
+
def created_scenario(self, runner: CliRunner):
|
434
|
+
create_result = runner.invoke(scenario, ['create', 'test'])
|
435
|
+
assert create_result.exit_code == 0
|
436
|
+
return Scenario.last()
|
437
|
+
|
438
|
+
@pytest.fixture(scope='class', autouse=True)
|
439
|
+
def put_event(self, runner: CliRunner, created_scenario: Scenario):
|
440
|
+
snapshot_result = runner.invoke(scenario, ['snapshot', created_scenario.key()])
|
441
|
+
assert snapshot_result.exit_code == 0
|
442
|
+
|
443
|
+
log = Log()
|
444
|
+
events = log.events
|
445
|
+
event = events[len(events) - 1]
|
446
|
+
metadata_path = event.snapshot().metadata_path
|
447
|
+
os.remove(metadata_path)
|
448
|
+
|
449
|
+
return event
|
450
|
+
|
451
|
+
@pytest.fixture(scope='class', autouse=True)
|
452
|
+
def removed_scenario(self, created_scenario: Scenario):
|
453
|
+
created_scenario.delete()
|
454
|
+
assert Scenario.find(created_scenario.id) == None
|
455
|
+
|
456
|
+
def test_skips_scenario(self, runner: CliRunner, created_scenario: Scenario):
|
457
|
+
apply_result = runner.invoke(snapshot, ['apply'])
|
458
|
+
assert apply_result.exit_code == 0
|
459
|
+
|
460
|
+
recreated_scenario = Scenario.find_by(uuid=created_scenario.uuid)
|
461
|
+
assert recreated_scenario == None
|
462
|
+
|
463
|
+
class TestWhenMalformedRequest():
|
464
|
+
|
465
|
+
@pytest.fixture(scope='class')
|
466
|
+
def recorded_request(self, runner: CliRunner):
|
467
|
+
record_result = runner.invoke(record, [DETERMINISTIC_GET_REQUEST_URL])
|
468
|
+
assert record_result.exit_code == 0
|
469
|
+
return Request.last()
|
470
|
+
|
471
|
+
@pytest.fixture(autouse=True, scope='class')
|
472
|
+
def put_event(self, runner: CliRunner, recorded_request: Request):
|
473
|
+
snapshot_result = runner.invoke(request, ['snapshot', recorded_request.key()])
|
474
|
+
assert snapshot_result.exit_code == 0
|
475
|
+
|
476
|
+
log = Log()
|
477
|
+
events = log.events
|
478
|
+
event = events[len(events) - 1]
|
479
|
+
|
480
|
+
with open(event.snapshot().path, 'w') as fp:
|
481
|
+
fp.write('junk')
|
482
|
+
|
483
|
+
return event
|
484
|
+
|
485
|
+
@pytest.fixture(scope='class', autouse=True)
|
486
|
+
def removed_request(self, recorded_request: Request):
|
487
|
+
recorded_request.delete()
|
488
|
+
assert Request.find(recorded_request.id) == None
|
489
|
+
|
490
|
+
def test_it_creates_request(self, runner: CliRunner, recorded_request: Request):
|
491
|
+
apply_result = runner.invoke(snapshot, ['apply'])
|
492
|
+
assert apply_result.exit_code == 1
|
493
|
+
|
494
|
+
assert Request.find_by(uuid=recorded_request.uuid) == None
|
495
|
+
|
496
|
+
def test_idempotent(self, runner: CliRunner, recorded_request: Request, put_event: LogEvent):
|
497
|
+
apply_result = runner.invoke(snapshot, ['apply', put_event.uuid])
|
498
|
+
assert apply_result.exit_code == 1
|
499
|
+
|
500
|
+
assert Request.find_by(uuid=recorded_request.uuid) == None
|
501
|
+
|
502
|
+
class TestWhenMalformedScenarioRequest():
|
503
|
+
|
504
|
+
@pytest.fixture(scope='class')
|
505
|
+
def created_scenario(self, runner: CliRunner):
|
506
|
+
create_result = runner.invoke(scenario, ['create', 'test'])
|
507
|
+
assert create_result.exit_code == 0
|
508
|
+
return Scenario.last()
|
509
|
+
|
510
|
+
@pytest.fixture(scope='class', autouse=True)
|
511
|
+
def created_scenario_requests(self, runner: CliRunner, created_scenario: Scenario):
|
512
|
+
record_result = runner.invoke(record, ['--scenario-key', created_scenario.key(), DETERMINISTIC_GET_REQUEST_URL])
|
513
|
+
assert record_result.exit_code == 0
|
514
|
+
|
515
|
+
return created_scenario.requests
|
516
|
+
|
517
|
+
@pytest.fixture(scope='class', autouse=True)
|
518
|
+
def put_event(self, runner: CliRunner, created_scenario: Scenario):
|
519
|
+
snapshot_result = runner.invoke(scenario, ['snapshot', created_scenario.key()])
|
520
|
+
assert snapshot_result.exit_code == 0
|
521
|
+
|
522
|
+
log = Log()
|
523
|
+
events = log.events
|
524
|
+
event = events[len(events) - 1]
|
525
|
+
event.snapshot().iter_request_snapshots(lambda snapshot: write_junk(snapshot.path))
|
526
|
+
|
527
|
+
return event
|
528
|
+
|
529
|
+
@pytest.fixture(scope='class', autouse=True)
|
530
|
+
def removed_scenario(self, created_scenario: Scenario):
|
531
|
+
created_scenario.delete()
|
532
|
+
assert Scenario.find(created_scenario.id) == None
|
533
|
+
|
534
|
+
def test_skips_scenario(self, runner: CliRunner, created_scenario: Scenario):
|
535
|
+
apply_result = runner.invoke(snapshot, ['apply'])
|
536
|
+
assert apply_result.exit_code == 1
|
537
|
+
|
538
|
+
recreated_scenario = Scenario.find_by(uuid=created_scenario.uuid)
|
539
|
+
assert recreated_scenario
|
540
|
+
|
541
|
+
assert len(recreated_scenario.requests) == 0
|
542
|
+
|
543
|
+
def test_idempotent(self, runner: CliRunner, created_scenario: Scenario, put_event: LogEvent):
|
544
|
+
apply_result = runner.invoke(snapshot, ['apply', put_event.uuid])
|
545
|
+
assert apply_result.exit_code == 1
|
546
|
+
|
547
|
+
recreated_scenario = Scenario.find_by(uuid=created_scenario.uuid)
|
548
|
+
assert recreated_scenario
|
549
|
+
|
550
|
+
assert len(recreated_scenario.requests) == 0
|
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.2.3
|
@@ -1,5 +1,4 @@
|
|
1
1
|
# Define services here
|
2
|
-
|
3
2
|
networks:
|
4
3
|
app:
|
5
4
|
external: true
|
@@ -7,12 +6,11 @@ networks:
|
|
7
6
|
|
8
7
|
services:
|
9
8
|
assets:
|
10
|
-
image: nginx:1.27
|
11
9
|
hostname: assets
|
10
|
+
image: nginx:1.27
|
12
11
|
networks:
|
13
12
|
- app
|
14
13
|
volumes:
|
15
14
|
- ./index.html:/usr/share/nginx/html/index.html
|
16
15
|
profiles: &id001
|
17
16
|
- test
|
18
|
-
|
@@ -1,4 +1,4 @@
|
|
1
|
-
stoobly_agent/__init__.py,sha256=
|
1
|
+
stoobly_agent/__init__.py,sha256=pBJnahl3uuwrh8cQ3dATcVYEyoC7nYTZCn3HqojNHZY,44
|
2
2
|
stoobly_agent/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
stoobly_agent/app/api/__init__.py,sha256=ctkB8KR-eXO0SFhj602huHiyvQ3PslFWd8fkcufgrAI,1000
|
4
4
|
stoobly_agent/app/api/application_http_request_handler.py,sha256=jf4fkqjOiCeI2IM5Ro7ie0v_C6y0-7-5TIE_IKMPOfg,5513
|
@@ -28,7 +28,7 @@ stoobly_agent/app/cli/feature_cli.py,sha256=d-MUTbK3gbZxZNJUjM43fioZyhPyzetQNKjI
|
|
28
28
|
stoobly_agent/app/cli/handlers/request_cli_handler.py,sha256=IPToK9OfiDda-mkq8HpiSSqK2m-UR15-8f8LVoLAHTA,6965
|
29
29
|
stoobly_agent/app/cli/handlers/scenario_cli_handler.py,sha256=1KSsfhR1mmPUCmhjzWTjf_L9NcQglLvVK3KURrPt92A,7425
|
30
30
|
stoobly_agent/app/cli/helpers/__init__.py,sha256=26ODsQi5NoJPwq4Ya7_lmtRalhhXOr_jfdZQWGLy6Gc,161
|
31
|
-
stoobly_agent/app/cli/helpers/certificate_authority.py,sha256=
|
31
|
+
stoobly_agent/app/cli/helpers/certificate_authority.py,sha256=xLfZR5CdyrwOqxInviy6Fd4uZEOgh_u6HQQI9zDhThc,7194
|
32
32
|
stoobly_agent/app/cli/helpers/context.py,sha256=Jv97ueNnqea5UDm57VOUiQSHKWBeNlCcrq5-qW2tcwQ,1624
|
33
33
|
stoobly_agent/app/cli/helpers/endpoint_facade.py,sha256=_1TR9PcRnqpl9Q4njFHMM_Btqpr6cCf757FFcywa3oU,2318
|
34
34
|
stoobly_agent/app/cli/helpers/endpoints_apply_context.py,sha256=PvUzJLXNKl6wIQj2q8YZK1MAm1yqzDLLlpCYMoyWb9I,1831
|
@@ -67,78 +67,77 @@ stoobly_agent/app/cli/project_cli.py,sha256=EXjeLjbnq9PhfCjvyfZ0UnJ2tejeCS0SIAo3
|
|
67
67
|
stoobly_agent/app/cli/report_cli.py,sha256=ZxJw0Xkx7KFZJn9e45BSKRKon8AD0Msrwy1fbPfbv0c,2543
|
68
68
|
stoobly_agent/app/cli/request_cli.py,sha256=THNloW111l9MLE0oPg4y7hVXL1U7OXoz760g0A1CtJ0,7747
|
69
69
|
stoobly_agent/app/cli/scaffold/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
70
|
-
stoobly_agent/app/cli/scaffold/app.py,sha256=
|
71
|
-
stoobly_agent/app/cli/scaffold/app_command.py,sha256=
|
72
|
-
stoobly_agent/app/cli/scaffold/app_config.py,sha256=
|
73
|
-
stoobly_agent/app/cli/scaffold/app_create_command.py,sha256=
|
74
|
-
stoobly_agent/app/cli/scaffold/command.py,sha256=
|
70
|
+
stoobly_agent/app/cli/scaffold/app.py,sha256=qrafaQc6rCN-s6MEXAbV4u2GPQ7YAKa_ssyR9t1sO6M,3427
|
71
|
+
stoobly_agent/app/cli/scaffold/app_command.py,sha256=qtOdG08ehdRk1wujiTL7LCQXoJkGpwExepO2qYBXBNA,2027
|
72
|
+
stoobly_agent/app/cli/scaffold/app_config.py,sha256=Gs-BynV1vY7_PpTOenn2mqc7lBIu0vBx6as9vtEU1sk,818
|
73
|
+
stoobly_agent/app/cli/scaffold/app_create_command.py,sha256=sy4017eiir9MK0TEbTi1NyG9mhOGlenGGVnq0GsGUrQ,966
|
74
|
+
stoobly_agent/app/cli/scaffold/command.py,sha256=aoTsdkkBzyu7TkVSMdNQQGk0Gj874jNgFcjR14y3TuM,254
|
75
75
|
stoobly_agent/app/cli/scaffold/config.py,sha256=HZU5tkvr3dkPr4JMXZtrJlu2wxxO-134Em6jReFFcq0,688
|
76
|
-
stoobly_agent/app/cli/scaffold/constants.py,sha256=
|
76
|
+
stoobly_agent/app/cli/scaffold/constants.py,sha256=3PoMOnmYtvrFMiSmf1A1ktMuPaZncWxRbSAp-WrSsdg,2191
|
77
77
|
stoobly_agent/app/cli/scaffold/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
|
-
stoobly_agent/app/cli/scaffold/docker/app_builder.py,sha256=
|
78
|
+
stoobly_agent/app/cli/scaffold/docker/app_builder.py,sha256=7z5pk5JKlRDHx2USxY-WurttLyyUkIVYfl34_u1x9dE,501
|
79
79
|
stoobly_agent/app/cli/scaffold/docker/builder.py,sha256=OE7r8vEdEkW3vwpmIctePiO0S5jvao5zMJNpxc-Yayw,2851
|
80
|
-
stoobly_agent/app/cli/scaffold/docker/constants.py,sha256=
|
80
|
+
stoobly_agent/app/cli/scaffold/docker/constants.py,sha256=fGnuo0ULYJa4CT3A4nPB7hZq8nFpdoCOSvrdJegdjMg,422
|
81
81
|
stoobly_agent/app/cli/scaffold/docker/service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
82
|
stoobly_agent/app/cli/scaffold/docker/service/build_decorator.py,sha256=ZU7z4bkvdS3OK5O4fJhlA9_PNwnFtZW6t7vNF7V5obQ,1003
|
83
|
-
stoobly_agent/app/cli/scaffold/docker/service/builder.py,sha256=
|
83
|
+
stoobly_agent/app/cli/scaffold/docker/service/builder.py,sha256=a7jxzXEwHaNcnG281BrOtNlf5Nmc4Z97DQrm68xdCCU,3219
|
84
84
|
stoobly_agent/app/cli/scaffold/docker/service/set_gateway_ports.py,sha256=MH71h24nX5lAd6xNfSjjNyw6PjBsAXv-3kOFEe86huk,1417
|
85
85
|
stoobly_agent/app/cli/scaffold/docker/service/types.py,sha256=qB-yYHlu-PZDc0HYgTUvE5bWNpHxaSThC3JUG8okR1k,88
|
86
86
|
stoobly_agent/app/cli/scaffold/docker/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
87
87
|
stoobly_agent/app/cli/scaffold/docker/workflow/build_decorator.py,sha256=vbmME0cbN2EnNRlzQ2umj7Y3L7aZT-EHqEpkBFMfe8U,758
|
88
|
-
stoobly_agent/app/cli/scaffold/docker/workflow/builder.py,sha256=
|
88
|
+
stoobly_agent/app/cli/scaffold/docker/workflow/builder.py,sha256=G9zyw_jS0HEHtzl0EvoDQ9MlpTavlyWz0xFpgEZoyVc,6844
|
89
89
|
stoobly_agent/app/cli/scaffold/docker/workflow/decorators_factory.py,sha256=oi0Hkii2W9338IeG7BG2medQxqZUbBp71Cvj-qDunII,987
|
90
90
|
stoobly_agent/app/cli/scaffold/docker/workflow/development_decorator.py,sha256=cs00Cc2DuOYrGD8W9849PjHz6k2xyx0fSizqJlM7yR8,946
|
91
|
-
stoobly_agent/app/cli/scaffold/docker/workflow/mock_decorator.py,sha256=
|
92
|
-
stoobly_agent/app/cli/scaffold/docker/workflow/reverse_proxy_decorator.py,sha256=
|
91
|
+
stoobly_agent/app/cli/scaffold/docker/workflow/mock_decorator.py,sha256=V9y4RIyEIT8SiGm3U9OcmU1dr22wqpbSbGO_Z2EMYEI,1197
|
92
|
+
stoobly_agent/app/cli/scaffold/docker/workflow/reverse_proxy_decorator.py,sha256=s1l99Y-2h-sSLVtPhcgaa1YRTbSvb6QdgaUeBLHYc4w,1804
|
93
93
|
stoobly_agent/app/cli/scaffold/env.py,sha256=e-Ve4p3RUgzFx22B3SIYttvJ_yLuDtA27oDACZ8n-6E,1140
|
94
94
|
stoobly_agent/app/cli/scaffold/hosts_file_reader.py,sha256=gYkkrOlY7QG2JNsET6DKq4djrQAH0UGJtTkF7UwYT5o,1748
|
95
95
|
stoobly_agent/app/cli/scaffold/managed_services_docker_compose.py,sha256=-wLBXUi7DCWsfm5KzZzd_kdJKOTl1NT924XR7dyjbSY,574
|
96
|
-
stoobly_agent/app/cli/scaffold/service.py,sha256=
|
97
|
-
stoobly_agent/app/cli/scaffold/service_command.py,sha256=
|
96
|
+
stoobly_agent/app/cli/scaffold/service.py,sha256=YM_thxXI5JfRT-e67V0doX_olEaXJTNLA6oDI6fIlCk,513
|
97
|
+
stoobly_agent/app/cli/scaffold/service_command.py,sha256=9kIKiFC5Jo425VWYD4NDvUOdMP-pNyq2D5Ip1ZAPj3A,1054
|
98
98
|
stoobly_agent/app/cli/scaffold/service_config.py,sha256=XFwTgf1JTfVVWmVyGTIadtfxSoPaoUV-70l3lAtSCzU,3485
|
99
99
|
stoobly_agent/app/cli/scaffold/service_create_command.py,sha256=bmLGgx9qnh-X_i2_XfdWSQIer0gGkaQx6lXZSIzy-LI,2793
|
100
100
|
stoobly_agent/app/cli/scaffold/service_delete_command.py,sha256=_nBDQjm8eL62MQpzSCxgUHlW04ZXKG8MDlN1BXxlqww,986
|
101
101
|
stoobly_agent/app/cli/scaffold/service_docker_compose.py,sha256=OMUN1-ujQYIZXxDvS4XBf5C9wGalQULkwOiBBQPZbHY,820
|
102
102
|
stoobly_agent/app/cli/scaffold/service_workflow.py,sha256=sQ_Edy_wGHKMXpD0DmhnOWkGEKz7gSgEGNI8f7aXOdg,444
|
103
|
-
stoobly_agent/app/cli/scaffold/service_workflow_validate_command.py,sha256=
|
103
|
+
stoobly_agent/app/cli/scaffold/service_workflow_validate_command.py,sha256=c_ObTOjOkcHJNoZ_69Ni_sSvAA8ZCneYwlpXxjZlaVo,9943
|
104
104
|
stoobly_agent/app/cli/scaffold/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
|
-
stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.context,sha256=
|
106
|
-
stoobly_agent/app/cli/scaffold/templates/app/.
|
107
|
-
stoobly_agent/app/cli/scaffold/templates/app/.
|
108
|
-
stoobly_agent/app/cli/scaffold/templates/app
|
109
|
-
stoobly_agent/app/cli/scaffold/templates/app/Makefile,sha256=t7xRaCc9q3k7W34S0h9KX02GljSVwGpPnFmiLUvWxsw,80
|
105
|
+
stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.context,sha256=UXQD9W-XdNl_uwwyfu1OgZ2whb0FRZMDxrpAkjRdrG0,158
|
106
|
+
stoobly_agent/app/cli/scaffold/templates/app/.Makefile,sha256=NFfm_-53R37ntyT6gRNNhVldqzyGY27yWpdCJLoIDMs,6223
|
107
|
+
stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml,sha256=YblNDTUPndYNxupgZ3X8RP6NS4c0u_QwLklyWrpq_qs,295
|
108
|
+
stoobly_agent/app/cli/scaffold/templates/app/Makefile,sha256=TEmPG7Bf0KZOnmfsgdzza3UdwcVMmM5Lj1YdLc4cgjA,79
|
110
109
|
stoobly_agent/app/cli/scaffold/templates/app/build/.config.yml,sha256=8Wt8ZZ5irvBYYS44xGrR_EWlZDuXH9kyWmquzsh7s8g,19
|
111
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/.docker-compose.base.yml,sha256=
|
112
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/mock/.docker-compose.mock.yml,sha256=
|
113
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/.configure,sha256=
|
114
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/.init,sha256=
|
110
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/.docker-compose.base.yml,sha256=H43dtzQkuwWeeB-XzwQNqdKqwS04Ph_Al8AVCOjxCkQ,420
|
111
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/mock/.docker-compose.mock.yml,sha256=3DJ8LTq3QScaz0SA_tXQqJ0kljSCeqkPyDbhLOxBJvc,414
|
112
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/.configure,sha256=dix1ZVrqllsX6eYmQz7Jwslu-F3nA__IKmtRxb_KGSo,185
|
113
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/.init,sha256=4PElJS6sdbdDftf0R2An5bJ8mdOL6MnW5OasEbzh2S4,182
|
115
114
|
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
|
116
115
|
stoobly_agent/app/cli/scaffold/templates/app/build/mock/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
|
117
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/record/.docker-compose.record.yml,sha256=
|
118
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/.configure,sha256=
|
119
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/.init,sha256=
|
116
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/record/.docker-compose.record.yml,sha256=hgPOxIInxGAzGr28-ytB4tVfmsqgpZdPMOpMRbV2R0g,418
|
117
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/.configure,sha256=dix1ZVrqllsX6eYmQz7Jwslu-F3nA__IKmtRxb_KGSo,185
|
118
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/.init,sha256=4PElJS6sdbdDftf0R2An5bJ8mdOL6MnW5OasEbzh2S4,182
|
120
119
|
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
|
121
120
|
stoobly_agent/app/cli/scaffold/templates/app/build/record/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
|
122
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/test/.docker-compose.test.yml,sha256=
|
123
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/.configure,sha256=
|
124
|
-
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/.init,sha256=
|
121
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/test/.docker-compose.test.yml,sha256=Rn_7qL1MVK1jNlRepSvNHH9_iFrlE86_aRxjwIim0mY,414
|
122
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/.configure,sha256=dix1ZVrqllsX6eYmQz7Jwslu-F3nA__IKmtRxb_KGSo,185
|
123
|
+
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/.init,sha256=4PElJS6sdbdDftf0R2An5bJ8mdOL6MnW5OasEbzh2S4,182
|
125
124
|
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
|
126
125
|
stoobly_agent/app/cli/scaffold/templates/app/build/test/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
|
127
126
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.config.yml,sha256=T9VQz6OwAQpKdIoFrnfKAxuX_to0c6EhuWRLKM34Sr4,22
|
128
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.docker-compose.base.yml,sha256=
|
129
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/.docker-compose.mock.yml,sha256
|
127
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/.docker-compose.base.yml,sha256=IHLz4eJyZDfQdKd8HG218Zc3egtOCK1IR8vfkMNJ0Ug,491
|
128
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/.docker-compose.mock.yml,sha256=-YbHd6BrAlBpT8PYg8kOsq0GyDeZ3g_q8IB0B0rGluU,551
|
130
129
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/.configure,sha256=XuPxv-MprVjmv3S6WbJy9WsC3wizlx8TkFvNNhGyEJ8,254
|
131
130
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/.init,sha256=5xJbfpwGOmRj5lwK5e0JNlVpNd3WFUkZ0GaCUK40aDk,97
|
132
131
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
|
133
132
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
|
134
133
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/mock/docker-compose.yml,sha256=Zh8h8yUqVXZMi_Y4aUPE48qw2DU-ONO4-rrSTh4E_Ts,591
|
135
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/.docker-compose.record.yml,sha256=
|
134
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/.docker-compose.record.yml,sha256=aIcgjelss4V86lxS3-xN8j_2eR-0YkzhtN_b-g3Y0nE,555
|
136
135
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/.configure,sha256=Jp7ozDgj0x9D8PYS8CMhGNs4VfwJhVwBqzss8ygbLJU,258
|
137
136
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/.init,sha256=5xJbfpwGOmRj5lwK5e0JNlVpNd3WFUkZ0GaCUK40aDk,97
|
138
137
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
|
139
138
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/bin/init,sha256=O7czui9GFHbcoEC5I9MwkRyZvDGY42IwlyQwIWcgylY,12
|
140
139
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/record/docker-compose.yml,sha256=5n4bZBHI9MtwBF55ugu1RTdwMy7T6SsYGQ_3sulFUj8,595
|
141
|
-
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/.docker-compose.test.yml,sha256=
|
140
|
+
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/.docker-compose.test.yml,sha256=9-qPnSisun4adnrDcZsJiyeMjhIlCHBJap_cmdzUPVg,552
|
142
141
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/.configure,sha256=XuPxv-MprVjmv3S6WbJy9WsC3wizlx8TkFvNNhGyEJ8,254
|
143
142
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/.init,sha256=5xJbfpwGOmRj5lwK5e0JNlVpNd3WFUkZ0GaCUK40aDk,97
|
144
143
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/configure,sha256=Nme7aSLA-IH1NXgmqRMPzOlKcUSRXqZd-kcuZa47IEk,11
|
@@ -150,54 +149,54 @@ stoobly_agent/app/cli/scaffold/templates/app/gateway/mock/.docker-compose.mock.y
|
|
150
149
|
stoobly_agent/app/cli/scaffold/templates/app/gateway/record/.docker-compose.record.yml,sha256=4pwMuBdfaf9hX1RVJ3KU3FY4E5BXYSPFsfUGKmiuXPk,234
|
151
150
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/.config.yml,sha256=XnLQZMzzMMIwVycjyPN5QXsmRztkTFAna1kIHYuDfJQ,19
|
152
151
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/.docker-compose.base.yml,sha256=GO3dIJ1WlazBDik_PDo1YvrSXcqeT5MMJjbb_iBdH6g,106
|
153
|
-
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/.docker-compose.exec.yml,sha256=
|
152
|
+
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/.docker-compose.exec.yml,sha256=n-p_lIfsmpOJ78Zd0J2TdnV2M8hcn-K2TP9qOccbw1c,306
|
154
153
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.create,sha256=EZe84bLAKB-mrB9PGMx-amyMjp6x-ESUZKC8wxrWdLE,245
|
155
154
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.delete,sha256=RspRDQ7WT5jpN2o-6qXOlH-A2VpN4981pD4ZJljk9Rw,260
|
156
155
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.disable,sha256=xVf4Pk1RLvJm7Ff0rbGoWhYHPv0ME5e93fxS2yFqLnE,45
|
157
156
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.down,sha256=3xROM9J45s2C-qWZ5_IW23AU9U8YyNXI2ka_xGYNHeQ,232
|
158
157
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.enable,sha256=sfUSPG4uHdXX95BLgivXQYLbsLBP2DjJIiSTXRtvXuY,188
|
159
158
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.list,sha256=BdX3ARC-Piuwk0vFzBrcxEwtHjdFncpORzqP-hP4IwE,84
|
160
|
-
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.logs,sha256=
|
159
|
+
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.logs,sha256=k-2a3p6LL8QOnU6o240g6an8tVhJeztR3ZsNoI5G2wc,211
|
161
160
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.mkcert,sha256=vyHaXmvy-7oL2RD8rIxwT-fdJS5kXmB0yHK5fRMo_cM,46
|
162
161
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.reset,sha256=_pvbLk-ektsCHEh_egDtd6c0sVqCPunwUWggarfoli0,238
|
163
162
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.snapshot,sha256=Kav1QNhKG7f0DBzc4-9dmxZMmmVTxmPqakT_W4kVYKk,241
|
164
163
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.up,sha256=MZbIZpLlKpn-8jMFIFeIw6lfd8mc8A8GMONP-UOYwMI,267
|
165
|
-
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/mock/.docker-compose.mock.yml,sha256=
|
166
|
-
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/record/.docker-compose.record.yml,sha256=
|
164
|
+
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/mock/.docker-compose.mock.yml,sha256=FnCn64DjxyAiB2P_1JUwFmXslMR961nVZHkYiEXytlg,232
|
165
|
+
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/record/.docker-compose.record.yml,sha256=t34FNYZboJSfrKnIB2oJ3UuE_mJaW77-hcbSn3sfWec,235
|
167
166
|
stoobly_agent/app/cli/scaffold/templates/constants.py,sha256=TjuWAZuAbWxS1hZR4jViF1LTBzT8iKLIJE65AvWRKNI,1460
|
168
167
|
stoobly_agent/app/cli/scaffold/templates/factory.py,sha256=zzDMi56w-BWOUOw0DDGgmvrWep_JSqRjp-jQemfQwOo,1759
|
169
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/.configure,sha256=
|
170
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/.init,sha256=
|
168
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/.configure,sha256=z135hJDmBWYOhZbjuzC8-C6a0VtQ9NPx5mfCpVZliEA,210
|
169
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/.init,sha256=Qwkc9ckplXTmGDdcYm9g_0zOa7WAvOjruGAtaf1U7eU,328
|
171
170
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/configure,sha256=BgZGK2dQz46wD9wKpUgkXXQhfL6WIMEMrnAp9_AmT5c,460
|
172
171
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
173
172
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/fixtures/.keep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
174
173
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/fixtures.yml,sha256=8DW2LN5WYg1hxmZkqr8o5dxLgDxHtBARFSUiNjz009Y,226
|
175
174
|
stoobly_agent/app/cli/scaffold/templates/workflow/mock/lifecycle_hooks.py,sha256=U7mlzT_wBR3uhHSG6CAyt5tBUNAvdIrCw33gdB-F294,467
|
176
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/.configure,sha256=
|
177
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/.init,sha256=
|
175
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/.configure,sha256=z135hJDmBWYOhZbjuzC8-C6a0VtQ9NPx5mfCpVZliEA,210
|
176
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/.init,sha256=GekadmBjLyAxgTJbCA_NKgUXRwKFs8iX4qtV5YlvUXk,329
|
178
177
|
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/configure,sha256=qBYEj_7kvYqf7wmRLPhX9y_cx2Msmn1VcDrq02hWT4w,744
|
179
178
|
stoobly_agent/app/cli/scaffold/templates/workflow/record/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
180
179
|
stoobly_agent/app/cli/scaffold/templates/workflow/record/lifecycle_hooks.py,sha256=4vaVc_gnDTCLEqtcZybIk5dcmXrKmGuesF6gc3-_kX8,473
|
181
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/.configure,sha256=
|
182
|
-
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/.init,sha256=
|
180
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/.configure,sha256=z135hJDmBWYOhZbjuzC8-C6a0VtQ9NPx5mfCpVZliEA,210
|
181
|
+
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/.init,sha256=Qwkc9ckplXTmGDdcYm9g_0zOa7WAvOjruGAtaf1U7eU,328
|
183
182
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/configure,sha256=ItenTr7B0h5h6I_ThE11X_al7HgsKbskJpU4dXt3X-g,454
|
184
183
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/bin/init,sha256=YxWVVQMEdGarcMtBcE1Sj2kdLgUgwY9kXp3MjPsVcmg,46
|
185
184
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/fixtures/.keep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
186
185
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/fixtures.yml,sha256=8DW2LN5WYg1hxmZkqr8o5dxLgDxHtBARFSUiNjz009Y,226
|
187
186
|
stoobly_agent/app/cli/scaffold/templates/workflow/test/lifecycle_hooks.py,sha256=U7mlzT_wBR3uhHSG6CAyt5tBUNAvdIrCw33gdB-F294,467
|
188
|
-
stoobly_agent/app/cli/scaffold/validate_command.py,sha256=
|
187
|
+
stoobly_agent/app/cli/scaffold/validate_command.py,sha256=OjAbX-YNx165od6HCwKmgdyF3upNdyQsL_vXTsOK2mo,2426
|
189
188
|
stoobly_agent/app/cli/scaffold/validate_exceptions.py,sha256=Jtjl4OkbbSRWm0hy7Kf_50zcFh2J324HhNcnwJKH_Oc,54
|
190
|
-
stoobly_agent/app/cli/scaffold/workflow.py,sha256=
|
191
|
-
stoobly_agent/app/cli/scaffold/workflow_command.py,sha256=
|
189
|
+
stoobly_agent/app/cli/scaffold/workflow.py,sha256=KlbWT9CIo9EpZxKU1WVZtmodhxK7CpmLUHPNk4Mh6DA,1570
|
190
|
+
stoobly_agent/app/cli/scaffold/workflow_command.py,sha256=NjLxmkAtv-WjcDi9Sa35GLr0PVQXOP2CcecCslC_3-U,3295
|
192
191
|
stoobly_agent/app/cli/scaffold/workflow_copy_command.py,sha256=R9hh5dWVz7vGld7pENAA_a9gW56EkgG2K35nBQYXwyI,1462
|
193
192
|
stoobly_agent/app/cli/scaffold/workflow_create_command.py,sha256=5xnRYrVb2KlSDARZFjLGGWeURXRu63OHoRLEhO-EAvw,3401
|
194
193
|
stoobly_agent/app/cli/scaffold/workflow_env.py,sha256=x8V5pJmIiklD3f2q2-qq-CORf4YaXYq_r2JpR2MmSwk,416
|
195
194
|
stoobly_agent/app/cli/scaffold/workflow_log_command.py,sha256=Bke4lMOMxuDUFuAx9nlXHbKgYMO4KAg9ASHvjz4aVWc,1372
|
196
|
-
stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=
|
195
|
+
stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=PYHZka-AV_1h8KELw1HO6Jpi61z8gdjEyauA1RMF1eY,9671
|
197
196
|
stoobly_agent/app/cli/scaffold/workflow_validate_command.py,sha256=fhHciJXg_u32Wmh8us8LhgQj8D1SxkBADtuBBF4K0FM,4377
|
198
|
-
stoobly_agent/app/cli/scaffold_cli.py,sha256=
|
197
|
+
stoobly_agent/app/cli/scaffold_cli.py,sha256=VWMh8R7l21GVF8YrlmA7iygt4zKjphCCLgL0Kip56XM,20956
|
199
198
|
stoobly_agent/app/cli/scenario_cli.py,sha256=3J1EiJOvunkfWrEkOsanw-XrKkOk78ij_GjBlE9p7CE,8229
|
200
|
-
stoobly_agent/app/cli/snapshot_cli.py,sha256=
|
199
|
+
stoobly_agent/app/cli/snapshot_cli.py,sha256=yYxw3_ZpdkfQZ6CdIXeiLjteqYFTQyWemLkfJMzVxKU,10045
|
201
200
|
stoobly_agent/app/cli/trace_cli.py,sha256=K7E-vx3JUcqEDSWOdIOi_AieKNQz7dBfmRrVvKDkzFI,4605
|
202
201
|
stoobly_agent/app/cli/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
203
202
|
stoobly_agent/app/cli/types/output.py,sha256=2wazv56g5IwLQeJCWfJXXAxTB9Y5WH1cKMHbpjbXNeo,439
|
@@ -207,7 +206,7 @@ stoobly_agent/app/cli/types/scenario.py,sha256=28WxmOlbm2Bsek1uu7yc4hJGz-d5oHbYA
|
|
207
206
|
stoobly_agent/app/cli/types/test.py,sha256=1c458B7DFBWsEk5Q1CrZ2CUi84YzEzcs-W4qTcudwAk,714
|
208
207
|
stoobly_agent/app/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
209
208
|
stoobly_agent/app/models/adapters/__init__.py,sha256=cEEE--Bvrvk6DAsHx_uPgFhLnZJETP4zSBtWjMqyIKc,233
|
210
|
-
stoobly_agent/app/models/adapters/joined_request_adapter.py,sha256=
|
209
|
+
stoobly_agent/app/models/adapters/joined_request_adapter.py,sha256=Myp9iukUXRB6dCTjYaNEnRW4AlII3DENsMNsFg-RLFs,2600
|
211
210
|
stoobly_agent/app/models/adapters/mitmproxy/__init__.py,sha256=f14D_0y3_Pz6NpRXQMIwJQiWBGhwKk0Wk_AmlY3twh0,105
|
212
211
|
stoobly_agent/app/models/adapters/mitmproxy/request/__init__.py,sha256=UZeK_-vxQKD02Tuu-YHBtpR92k5mK3XFgwmd99h2VHA,281
|
213
212
|
stoobly_agent/app/models/adapters/mitmproxy/request/python_adapter.py,sha256=lWSppm63oOv7RDmTsUI0EmQkUWlQhRGdjtViBEDU-AA,377
|
@@ -253,7 +252,7 @@ stoobly_agent/app/models/factories/resource/local_db/helpers/log.py,sha256=4LWxg
|
|
253
252
|
stoobly_agent/app/models/factories/resource/local_db/helpers/log_event.py,sha256=vYZ-tgl5brQREj2eQ9LPsWfwDIXN45ip6VE1ZZBKc10,3364
|
254
253
|
stoobly_agent/app/models/factories/resource/local_db/helpers/request_builder.py,sha256=PyVvsYmi5bBQ6PsUPxQ4nJM9rhhjGVOTd7ipuc2tMMM,3227
|
255
254
|
stoobly_agent/app/models/factories/resource/local_db/helpers/request_snapshot.py,sha256=TmcUSmUGtp2RglpuzDrjVY7ZVBFgss5aw14IZGxItg0,1847
|
256
|
-
stoobly_agent/app/models/factories/resource/local_db/helpers/scenario_snapshot.py,sha256=
|
255
|
+
stoobly_agent/app/models/factories/resource/local_db/helpers/scenario_snapshot.py,sha256=LWQyhw_LxIzCx4rW5u0_jkJVbXf4myG9ItwJdAhH8Uc,4684
|
257
256
|
stoobly_agent/app/models/factories/resource/local_db/helpers/search.py,sha256=A7KVcmxj9c3CT2rh26YH6khiEPkB_4U1UHhiYelNaws,782
|
258
257
|
stoobly_agent/app/models/factories/resource/local_db/helpers/snapshot.py,sha256=8GNlt33L4zV8yIkkhmb2iLSMYegSiP91HrPyJkE9daE,733
|
259
258
|
stoobly_agent/app/models/factories/resource/local_db/helpers/snapshot_service.py,sha256=fbqh5J5sMj0n_YFQFei2xhXLrSGU9vNmSX_uifA3U3M,1671
|
@@ -278,8 +277,8 @@ stoobly_agent/app/models/factories/resource/stoobly/request_adapter.py,sha256=Zr
|
|
278
277
|
stoobly_agent/app/models/factories/resource/stoobly/scenario_adapter.py,sha256=HnM4g5Qdv16QXj8u4JCiJm2Dbw9OhAxmn9e_R8oaHG4,1105
|
279
278
|
stoobly_agent/app/models/header_model.py,sha256=m91upRZr8GfE5um0d5dguUESKigBMWhSyu_X3HFk28Y,1406
|
280
279
|
stoobly_agent/app/models/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
281
|
-
stoobly_agent/app/models/helpers/apply.py,sha256=
|
282
|
-
stoobly_agent/app/models/helpers/create_request_params_service.py,sha256=
|
280
|
+
stoobly_agent/app/models/helpers/apply.py,sha256=3o2XKHjYHaHyqNeC93O3GPuO-UQm2Kdazzu0Q8jDmXE,8283
|
281
|
+
stoobly_agent/app/models/helpers/create_request_params_service.py,sha256=_CQD3SNU5nJiWwGHYEEHE1Zil-7u2danVBVnrWE4_h8,2096
|
283
282
|
stoobly_agent/app/models/model.py,sha256=77ZTByQmH5sWBcSrCF3kG_C4muHggcFyH1DWsOhIgvg,1180
|
284
283
|
stoobly_agent/app/models/query_param_model.py,sha256=EBj76phSJ9_45KgP0vIZGbkkG6-tSn_U1fNW_7qLy_4,1455
|
285
284
|
stoobly_agent/app/models/replayed_response_model.py,sha256=YSxDnUJb1XfB4eNK8ygax9ugBD-niZlK5V4C24tDeic,1819
|
@@ -338,7 +337,7 @@ stoobly_agent/app/proxy/record/upload_request_service.py,sha256=J61cGToRrZO9S53b
|
|
338
337
|
stoobly_agent/app/proxy/replay/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
339
338
|
stoobly_agent/app/proxy/replay/alias_context.py,sha256=u_CL64wrLcZiIYWvyOMFlpVcAsigC-8IqrE0iDeRMro,748
|
340
339
|
stoobly_agent/app/proxy/replay/alias_resolver.py,sha256=0t7dISfVoFIa_fOqhUZQr0IbTR3sN3nmGPK3OkM7GSw,3493
|
341
|
-
stoobly_agent/app/proxy/replay/body_parser_service.py,sha256=
|
340
|
+
stoobly_agent/app/proxy/replay/body_parser_service.py,sha256=rZftmJMDx9TY9JSvJiUPulbT5cvj3FU8GvIxlgjOy4U,3853
|
342
341
|
stoobly_agent/app/proxy/replay/context.py,sha256=_dtU2-OmTVY_zsXRU7gdL9E7zbx9a9jSfkm9_H6vfp0,796
|
343
342
|
stoobly_agent/app/proxy/replay/multipart.py,sha256=LzvBdNgWKy0sRSIzD23uoZbXpV26HSrZJxKhhIv2aMg,2309
|
344
343
|
stoobly_agent/app/proxy/replay/replay_request_service.py,sha256=ZxSD_7DhGgqS-BGUTpVgjLmE5O5qUwv-kOPSu6VEBkA,7045
|
@@ -422,9 +421,9 @@ stoobly_agent/config/constants/statuses.py,sha256=dR88qHHnDR_5ppuKijwc0R24D_fWc6
|
|
422
421
|
stoobly_agent/config/constants/test_filter.py,sha256=rQ-eMZ8kpq49pqS1PQhaRx59dlRicd-Ag4sjgoXfpY8,109
|
423
422
|
stoobly_agent/config/constants/test_output_level.py,sha256=yrn8cs-lexrK0Ckpc_SX3NhsZPfVhNpmjzjSP62LCro,135
|
424
423
|
stoobly_agent/config/constants/test_strategy.py,sha256=d6-WgKqElB3q_csP-QYFkhR4XvlPGfGdCJ-SBEDEoL4,152
|
425
|
-
stoobly_agent/config/data_dir.py,sha256=
|
424
|
+
stoobly_agent/config/data_dir.py,sha256=zNp-diJRcW6tl3YHWMcShwJgRIxc8Bq7DJ2WR9hJFIM,7777
|
426
425
|
stoobly_agent/config/mitmproxy.py,sha256=z9L1JSWwQFsn4gMZk8Dcz5mOcUc6dYnW1ZugrYTEttw,1902
|
427
|
-
stoobly_agent/config/schema.yml,sha256=
|
426
|
+
stoobly_agent/config/schema.yml,sha256=aLSrTI7c6_K-fGOyoGFUdA2Prx9zQwpF3IC43LvXupo,1993
|
428
427
|
stoobly_agent/config/settings.yml.sample,sha256=muxP1bWrtknVaSgdseFaw23tuwduILNdQTVy7aB519M,404
|
429
428
|
stoobly_agent/config/source_dir.py,sha256=3oYwWmIrid0YsIf91AIUI2itAA3pdPA10eHaC-nmelQ,1146
|
430
429
|
stoobly_agent/db/migrations/2022_03_17_060144_create_requests.py,sha256=UAKfkAi4EhECWneDME3tCH7J3JhN72ImDz6L61PPHPQ,890
|
@@ -664,7 +663,7 @@ stoobly_agent/test/app/cli/request/request_reset_test.py,sha256=5My6Z452eideAOUu
|
|
664
663
|
stoobly_agent/test/app/cli/request/request_response_test.py,sha256=Fu-A8tIn016DKme4WIaPzo3YeFY-CPtTOpaSFigUVVM,1263
|
665
664
|
stoobly_agent/test/app/cli/request/request_snapshot_test.py,sha256=0013aoiMZin-2YEtHzEmQspAPA3SUd_6XiItbX0U7Ok,4425
|
666
665
|
stoobly_agent/test/app/cli/request/request_test_test.py,sha256=-cJNXKjgryVVfVt-7IN5fIhBwe3NjFoPmeavDH8lAjU,5527
|
667
|
-
stoobly_agent/test/app/cli/scaffold/cli_invoker.py,sha256=
|
666
|
+
stoobly_agent/test/app/cli/scaffold/cli_invoker.py,sha256=_nGDLUsYxqkeqs5DdhvAeXy3IuotpgqKHXKVzu6GDF4,3700
|
668
667
|
stoobly_agent/test/app/cli/scaffold/cli_test.py,sha256=sMNvO845MIu5DVGa1HmwXQDmKDcwrfNTdEb3fK5886w,4557
|
669
668
|
stoobly_agent/test/app/cli/scaffold/e2e_test.py,sha256=fd_LWwkkjMbQQ39hxG0SwrwXeR-_cycT0Bmz3QOzpss,12978
|
670
669
|
stoobly_agent/test/app/cli/scaffold/hosts_file_reader_test.py,sha256=zGx-fvYTT3N-WS09guOICcRHl8Ann43NHLGTt33FR1s,2279
|
@@ -674,7 +673,7 @@ stoobly_agent/test/app/cli/scenario/scenario_replay_test.py,sha256=XqR-GDrR8uUtx
|
|
674
673
|
stoobly_agent/test/app/cli/scenario/scenario_reset_test.py,sha256=QOyytOoFu1FALny3-xwp9r4bfOE9fftgnhkDJWYxXh0,2021
|
675
674
|
stoobly_agent/test/app/cli/scenario/scenario_snapshot_test.py,sha256=vk572Oxp1c8Y4utqq3L24nTkFj5Fttig0R2cWXUzg3E,3395
|
676
675
|
stoobly_agent/test/app/cli/scenario/scenario_test_integration_test.py,sha256=BdXGe1xfb79tCCTKtp4sqI6CkZL_KamvQKLK8Wwb4u0,5543
|
677
|
-
stoobly_agent/test/app/cli/snapshot/snapshot_apply_test.py,sha256=
|
676
|
+
stoobly_agent/test/app/cli/snapshot/snapshot_apply_test.py,sha256=p0Nyv66agEPOKY23lMNBZQNAXNL1zoYJz2N5ev4rvO0,21729
|
678
677
|
stoobly_agent/test/app/cli/snapshot/snapshot_copy_test.py,sha256=Yg78-FhSiG_r6Jpm-sN8sn0LjVXTwTOXt6hg8ni2GIY,1953
|
679
678
|
stoobly_agent/test/app/cli/snapshot/snapshot_prune_test.py,sha256=Hi8-rpQ9ryy1Jdl_KB9ERXgbLHLKmuFQZaxn5EVFj9I,3752
|
680
679
|
stoobly_agent/test/app/cli/snapshot/snapshot_update_test.py,sha256=fILsX2M5j4wuLRP6LJTHe4CPB8gvaEbsSoYmFCHmKVk,4514
|
@@ -692,7 +691,7 @@ stoobly_agent/test/app/models/factories/resource/local_db/helpers/log_test.py,sh
|
|
692
691
|
stoobly_agent/test/app/models/factories/resource/local_db/helpers/tiebreak_scenario_request_test.py,sha256=5IFGVGn3ogvRT0fzZgXzhrYlSfSlr8IR1p_XExaegMQ,3399
|
693
692
|
stoobly_agent/test/app/models/factories/resource/local_db/request_adapter_test.py,sha256=Pzq1cBPnP9oSWG-p0c-VoymoHxgp483QmNwmV1b78RA,8453
|
694
693
|
stoobly_agent/test/app/models/factories/resource/local_db/response_adapter_test.py,sha256=9P95EKH5rZGOrmRkRIDlQZqtiLJHk9735og18Ffwpfw,2204
|
695
|
-
stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION,sha256=
|
694
|
+
stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION,sha256=xH9bGLikMOaYuf4V5R9hGZhOeDNLzz9F4hDTDDfvL54,5
|
696
695
|
stoobly_agent/test/app/models/schemas/.stoobly/db/stoobly_agent.sqlite3,sha256=ch8gNx6zIelLKQx65gwFx_LRNqUD3EC5xcHZ0ukIQiU,188416
|
697
696
|
stoobly_agent/test/app/models/schemas/.stoobly/settings.yml,sha256=vLwMjweKOdod6tSLtIlyBefPQuNXq9wio4kBaODKtAU,726
|
698
697
|
stoobly_agent/test/app/models/schemas/.stoobly/tmp/options.json,sha256=OTRzarwus48CTrItedXCrgQttJHSEZonEYc7R_knvYg,2212
|
@@ -724,13 +723,13 @@ stoobly_agent/test/mock_data/petstore-references.yaml,sha256=OpNrCSb5-qKmUBIO9oG
|
|
724
723
|
stoobly_agent/test/mock_data/petstore-swagger-io.yaml,sha256=FbOEaArZKl1dV7jEf1hyJQv9jdAb5jXfsRRZB5i4-0Y,22094
|
725
724
|
stoobly_agent/test/mock_data/petstore.yaml,sha256=CCdliJky04Az4FIOkFA883uunwFDHLr2Y8ohtozFi_Q,2714
|
726
725
|
stoobly_agent/test/mock_data/request_show_response.py,sha256=K_a0fP0QT58T8sX9PaM6hqtX1A1depZsqg_GsNPf--k,707
|
727
|
-
stoobly_agent/test/mock_data/scaffold/docker-compose-assets-service.yml,sha256=
|
726
|
+
stoobly_agent/test/mock_data/scaffold/docker-compose-assets-service.yml,sha256=TJpkkkSjUlfz3t8Oxsz6Ery1JX7Ed79Fh6oiEuKI4i0,275
|
728
727
|
stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml,sha256=x7hYB1R9RtDDcU1NS1bkhXlTCwCgCPrOW7Y9tyAVUjs,249
|
729
728
|
stoobly_agent/test/mock_data/scaffold/index.html,sha256=qJwuYajKZ4ihWZrJQ3BNObV5kf1VGnnm_vqlPJzdqLE,258
|
730
729
|
stoobly_agent/test/mock_data/uspto.yaml,sha256=6U5se7C3o-86J4m9xpOk9Npias399f5CbfWzR87WKwE,7835
|
731
730
|
stoobly_agent/test/test_helper.py,sha256=m_oAI7tmRYCNZdKfNqISWhMv3e44tjeYViQ3nTUfnos,1007
|
732
|
-
stoobly_agent-1.
|
733
|
-
stoobly_agent-1.
|
734
|
-
stoobly_agent-1.
|
735
|
-
stoobly_agent-1.
|
736
|
-
stoobly_agent-1.
|
731
|
+
stoobly_agent-1.3.0.dist-info/LICENSE,sha256=8QKGyy45eN76Zk52h8gu1DKX2B_gbWgZ3nzDLofEbaE,548
|
732
|
+
stoobly_agent-1.3.0.dist-info/METADATA,sha256=bt_uMnloOVPMpxtK06lQ4OiE6vD_YL5PTFIaBA8Bm1Q,3384
|
733
|
+
stoobly_agent-1.3.0.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
734
|
+
stoobly_agent-1.3.0.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
|
735
|
+
stoobly_agent-1.3.0.dist-info/RECORD,,
|
@@ -1,34 +0,0 @@
|
|
1
|
-
FROM ubuntu:24.04 AS build
|
2
|
-
|
3
|
-
WORKDIR /tmp
|
4
|
-
|
5
|
-
RUN apt-get update && apt-get install -y curl
|
6
|
-
RUN curl -JLO "https://dl.filippo.io/mkcert/v1.4.4?for=linux/amd64" && \
|
7
|
-
chmod +x mkcert-v1.4.4-linux-amd64
|
8
|
-
|
9
|
-
FROM ubuntu:24.04 AS cert
|
10
|
-
|
11
|
-
ARG SERVICE_HOSTNAME
|
12
|
-
|
13
|
-
COPY --from=build /tmp/mkcert-v1.4.4-linux-amd64 /bin/mkcert
|
14
|
-
|
15
|
-
RUN useradd -m mkcert
|
16
|
-
|
17
|
-
USER mkcert
|
18
|
-
WORKDIR /home/mkcert
|
19
|
-
|
20
|
-
RUN mkcert $SERVICE_HOSTNAME && mkcert -pkcs12 $SERVICE_HOSTNAME && cat $SERVICE_HOSTNAME.pem >> $SERVICE_HOSTNAME-joined.pem && cat $SERVICE_HOSTNAME-key.pem >> $SERVICE_HOSTNAME-joined.pem
|
21
|
-
|
22
|
-
FROM stoobly/agent:1.2
|
23
|
-
|
24
|
-
ARG SERVICE_HOSTNAME
|
25
|
-
ARG USER_ID
|
26
|
-
|
27
|
-
# Allow running stoobly on port 443
|
28
|
-
RUN apt-get update && apt-get install -y curl libcap2-bin
|
29
|
-
RUN setcap 'cap_net_bind_service=+ep' /usr/local/bin/python3.12
|
30
|
-
|
31
|
-
# Change user id of stoobly user to that of host's user id
|
32
|
-
RUN if [ -n "$USER_ID" ]; then groupmod -g $USER_ID stoobly; usermod -u $USER_ID stoobly; fi
|
33
|
-
|
34
|
-
COPY --chown=stoobly:stoobly --from=cert /home/mkcert/$SERVICE_HOSTNAME-joined.pem /etc/ssl/certs
|
File without changes
|
File without changes
|
File without changes
|