stoobly-agent 1.5.3__py3-none-any.whl → 1.5.5__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/ca_cert_cli.py +7 -6
- stoobly_agent/app/cli/helpers/certificate_authority.py +1 -1
- stoobly_agent/app/cli/scaffold/app.py +1 -1
- stoobly_agent/app/cli/scaffold/docker/builder.py +4 -4
- stoobly_agent/app/cli/scaffold/docker/constants.py +1 -1
- stoobly_agent/app/cli/scaffold/templates/app/.Makefile +5 -5
- stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml +1 -6
- stoobly_agent/app/cli/scaffold/templates/app/gateway/mock/.docker-compose.mock.yml +2 -2
- stoobly_agent/app/cli/scaffold/templates/app/gateway/record/.docker-compose.record.yml +2 -2
- stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/.docker-compose.base.yml +1 -1
- stoobly_agent/app/cli/scaffold/workflow_run_command.py +1 -0
- stoobly_agent/app/cli/scaffold_cli.py +7 -2
- stoobly_agent/app/proxy/run.py +4 -0
- stoobly_agent/app/proxy/utils/rewrite.py +1 -1
- stoobly_agent/cli.py +2 -2
- stoobly_agent/config/data_dir.py +15 -47
- stoobly_agent/config/mitmproxy.py +0 -17
- stoobly_agent/test/app/cli/helpers/certificate_authority_test.py +1 -2
- stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION +1 -1
- stoobly_agent/test/config/data_dir_test.py +1 -10
- stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml +2 -2
- {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/METADATA +1 -1
- {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/RECORD +27 -28
- stoobly_agent/config/constants/mitmproxy.py +0 -4
- {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/LICENSE +0 -0
- {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/WHEEL +0 -0
- {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/entry_points.txt +0 -0
stoobly_agent/__init__.py
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
COMMAND = 'stoobly-agent'
|
2
|
-
VERSION = '1.5.
|
2
|
+
VERSION = '1.5.5'
|
@@ -15,13 +15,13 @@ def ca_cert(ctx):
|
|
15
15
|
pass
|
16
16
|
|
17
17
|
@ca_cert.command()
|
18
|
-
@click.option('--ca-certs-dir-path', default=DataDir.instance().
|
18
|
+
@click.option('--ca-certs-dir-path', default=DataDir.instance().ca_certs_dir_path, help='Path to ca certs directory used to sign SSL certs.')
|
19
19
|
@click.option('--certs-dir-path', default=DataDir.instance().certs_dir_path, help='Output directory.')
|
20
20
|
@click.argument('hostname')
|
21
21
|
def mkcert(**kwargs):
|
22
|
-
|
22
|
+
ca_certs_dir_path = kwargs['ca_certs_dir_path']
|
23
23
|
|
24
|
-
installer = CertificateAuthority(
|
24
|
+
installer = CertificateAuthority(ca_certs_dir_path)
|
25
25
|
|
26
26
|
try:
|
27
27
|
installer.sign(kwargs['hostname'], kwargs['certs_dir_path'])
|
@@ -30,10 +30,11 @@ def mkcert(**kwargs):
|
|
30
30
|
sys.exit(1)
|
31
31
|
|
32
32
|
@ca_cert.command()
|
33
|
-
@click.option('--ca-certs-dir-path', default=DataDir.instance().
|
33
|
+
@click.option('--ca-certs-dir-path', default=DataDir.instance().ca_certs_dir_path, help='Path to ca certs directory.')
|
34
34
|
def install(**kwargs):
|
35
|
-
|
36
|
-
|
35
|
+
pdb.set_trace()
|
36
|
+
ca_certs_dir_path = kwargs['ca_certs_dir_path']
|
37
|
+
installer = CertificateAuthority(ca_certs_dir_path)
|
37
38
|
|
38
39
|
try:
|
39
40
|
installer.install()
|
@@ -21,7 +21,7 @@ MITMPROXY_CN = 'mitmproxy'
|
|
21
21
|
|
22
22
|
class CertificateAuthority():
|
23
23
|
|
24
|
-
def __init__(self, certs_dir = DataDir.instance().
|
24
|
+
def __init__(self, certs_dir = DataDir.instance().ca_certs_dir_path, cn = MITMPROXY_CN):
|
25
25
|
self.certs_dir = certs_dir
|
26
26
|
self.cn = cn
|
27
27
|
self.key_size = 2048
|
@@ -10,7 +10,7 @@ class App():
|
|
10
10
|
data_dir: DataDir = DataDir.instance(path)
|
11
11
|
|
12
12
|
self.__data_dir_path = data_dir.path
|
13
|
-
self.__ca_certs_dir_path = kwargs.get('ca_certs_dir_path') or data_dir.
|
13
|
+
self.__ca_certs_dir_path = kwargs.get('ca_certs_dir_path') or data_dir.ca_certs_dir_path
|
14
14
|
self.__certs_dir_path = kwargs.get('certs_dir_path') or data_dir.certs_dir_path
|
15
15
|
self.__context_dir_path = kwargs.get('context_dir_path') or data_dir.context_dir_path
|
16
16
|
self.__data_dir = data_dir
|
@@ -3,7 +3,7 @@ import pathlib
|
|
3
3
|
import pdb
|
4
4
|
import yaml
|
5
5
|
|
6
|
-
from .constants import APP_NETWORK,
|
6
|
+
from .constants import APP_NETWORK, APP_NETWORK_NAME, DOCKER_COMPOSE_CUSTOM
|
7
7
|
|
8
8
|
class Builder():
|
9
9
|
|
@@ -36,11 +36,11 @@ class Builder():
|
|
36
36
|
|
37
37
|
@property
|
38
38
|
def public_network(self):
|
39
|
-
return self.__networks.get(
|
39
|
+
return self.__networks.get(APP_NETWORK_NAME)
|
40
40
|
|
41
41
|
@property
|
42
42
|
def public_network_name(self):
|
43
|
-
return
|
43
|
+
return APP_NETWORK_NAME
|
44
44
|
|
45
45
|
@property
|
46
46
|
def networks(self):
|
@@ -91,7 +91,7 @@ class Builder():
|
|
91
91
|
return self
|
92
92
|
|
93
93
|
def with_public_network(self, network = APP_NETWORK):
|
94
|
-
self.__networks[
|
94
|
+
self.__networks[APP_NETWORK_NAME] = {
|
95
95
|
'external': True,
|
96
96
|
'name': network,
|
97
97
|
}
|
@@ -1,10 +1,10 @@
|
|
1
|
+
APP_NETWORK_NAME = 'app'
|
1
2
|
APP_NETWORK = '${APP_NETWORK}'
|
2
3
|
DOCKER_COMPOSE_BASE = '.docker-compose.base.yml'
|
3
4
|
DOCKER_COMPOSE_BASE_TEMPLATE = '.docker-compose.base.template.yml'
|
4
5
|
DOCKER_COMPOSE_CUSTOM = 'docker-compose.yml'
|
5
6
|
DOCKERFILE_CONTEXT = '.Dockerfile.context'
|
6
7
|
DOCKERFILE_SERVICE = 'Dockerfile.source'
|
7
|
-
GATEWAY_NETWORK = 'gateway'
|
8
8
|
|
9
9
|
# TODO: add scaffold container name templates here
|
10
10
|
|
@@ -16,14 +16,14 @@ CONTEXT_DIR_DEFAULT := $(realpath $(DIR)/../..)
|
|
16
16
|
|
17
17
|
# Configuration
|
18
18
|
app_dir=$$(realpath "$${STOOBLY_APP_DIR:-$(CONTEXT_DIR_DEFAULT)}")
|
19
|
-
ca_certs_dir=$$(realpath "$${STOOBLY_CA_CERTS_DIR
|
19
|
+
ca_certs_dir=$$(realpath "$${STOOBLY_CA_CERTS_DIR:-$(app_data_dir)/ca_certs}")
|
20
20
|
certs_dir=$$(realpath "$${STOOBLY_CERTS_DIR:-$(app_data_dir)/certs}")
|
21
21
|
context_dir=$$(realpath "$${STOOBLY_CONTEXT_DIR:-$(CONTEXT_DIR_DEFAULT)}")
|
22
|
+
workflow_service_options=$(shell echo $$STOOBLY_WORKFLOW_SERVICE_OPTIONS)
|
22
23
|
|
23
24
|
user_id_option=--user-id $(USER_ID)
|
24
25
|
stoobly_exec_options=--profile $(EXEC_WORKFLOW_NAME) -p $(EXEC_WORKFLOW_NAME)
|
25
|
-
workflow_down_options
|
26
|
-
workflow_service_options=$(shell echo $$STOOBLY_WORKFLOW_SERVICE_OPTIONS)
|
26
|
+
workflow_down_options=--from-make $(user_id_option)
|
27
27
|
workflow_up_options=--app-dir-path $(app_dir) --context-dir-path $(context_dir) --ca-certs-dir-path $(ca_certs_dir) --certs-dir-path $(certs_dir) --from-make $(user_id_option)
|
28
28
|
|
29
29
|
app_data_dir=$(app_dir)/.stoobly
|
@@ -58,11 +58,11 @@ stoobly_exec_run_env=$(source_env) && $(exec_env) CONTEXT_DIR="$(app_dir)"
|
|
58
58
|
workflow_run=$(source_env) && bash "$(workflow_run_script)"
|
59
59
|
|
60
60
|
ca-cert/install: stoobly/install
|
61
|
-
@if [
|
61
|
+
@if [ -z "$$(ls $(ca_certs_dir) 2> /dev/null)" ]; then \
|
62
62
|
read -p "Installing CA certificate is required for $(WORKFLOW)ing requests, continue? (y/N) " confirm && \
|
63
63
|
if [ "$$confirm" = "y" ] || [ "$$confirm" = "Y" ]; then \
|
64
64
|
echo "Running stoobly-agent ca-cert install..."; \
|
65
|
-
stoobly-agent ca-cert install; \
|
65
|
+
stoobly-agent ca-cert install --ca-certs-dir-path $(ca_certs_dir); \
|
66
66
|
else \
|
67
67
|
echo "You can install the CA certificate later by running: stoobly-agent ca-cert install"; \
|
68
68
|
fi \
|
@@ -6,9 +6,4 @@ services:
|
|
6
6
|
- ${CONTEXT_DIR}/.stoobly:/home/stoobly/.stoobly
|
7
7
|
- ${APP_DIR}/.stoobly/docker:/home/stoobly/.stoobly/docker
|
8
8
|
stoobly_base:
|
9
|
-
image: stoobly.${USER_ID}
|
10
|
-
ui_base:
|
11
|
-
extends:
|
12
|
-
service: context_base
|
13
|
-
volumes:
|
14
|
-
- ${CA_CERTS_DIR}:/home/stoobly/.mitmproxy
|
9
|
+
image: stoobly.${USER_ID}
|
@@ -104,7 +104,7 @@ def create(**kwargs):
|
|
104
104
|
help="Scaffold app service certs"
|
105
105
|
)
|
106
106
|
@click.option('--app-dir-path', default=current_working_dir, help='Path to application directory.')
|
107
|
-
@click.option('--ca-certs-dir-path', default=data_dir.
|
107
|
+
@click.option('--ca-certs-dir-path', default=data_dir.ca_certs_dir_path, help='Path to ca certs directory used to sign SSL certs.')
|
108
108
|
@click.option('--certs-dir-path', help='Path to certs directory. Defaults to the certs dir of the context.')
|
109
109
|
@click.option('--context-dir-path', default=data_dir.context_dir_path, help='Path to Stoobly data directory.')
|
110
110
|
@click.option('--service', multiple=True, help='Select which services to run. Defaults to all.')
|
@@ -292,6 +292,7 @@ def copy(**kwargs):
|
|
292
292
|
@click.option('--context-dir-path', default=data_dir.context_dir_path, help='Path to Stoobly data directory.')
|
293
293
|
@click.option('--dry-run', default=False, is_flag=True)
|
294
294
|
@click.option('--extra-entrypoint-compose-path', help='Path to extra entrypoint compose file.')
|
295
|
+
@click.option('--from-make', is_flag=True, help='Set if run from scaffolded Makefile.')
|
295
296
|
@click.option('--log-level', default=INFO, type=click.Choice([DEBUG, INFO, WARNING, ERROR]), help='''
|
296
297
|
Log levels can be "debug", "info", "warning", or "error"
|
297
298
|
''')
|
@@ -365,6 +366,10 @@ def down(**kwargs):
|
|
365
366
|
else:
|
366
367
|
print(remove_network_command)
|
367
368
|
|
369
|
+
# Options are no longer valid
|
370
|
+
if kwargs['from_make'] and os.path.exists(data_dir.mitmproxy_options_json_path):
|
371
|
+
os.remove(data_dir.mitmproxy_options_json_path)
|
372
|
+
|
368
373
|
@workflow.command()
|
369
374
|
@click.option('--app-dir-path', default=current_working_dir, help='Path to application directory.')
|
370
375
|
@click.option(
|
@@ -425,7 +430,7 @@ def logs(**kwargs):
|
|
425
430
|
@workflow.command()
|
426
431
|
@click.option('--app-dir-path', default=current_working_dir, help='Path to application directory.')
|
427
432
|
@click.option('--build', is_flag=True, help='Build images before starting containers.')
|
428
|
-
@click.option('--ca-certs-dir-path', default=data_dir.
|
433
|
+
@click.option('--ca-certs-dir-path', default=data_dir.ca_certs_dir_path, help='Path to ca certs directory used to sign SSL certs.')
|
429
434
|
@click.option('--certs-dir-path', help='Path to certs directory. Defaults to the certs dir of the context.')
|
430
435
|
@click.option('--context-dir-path', default=data_dir.context_dir_path, help='Path to Stoobly data directory.')
|
431
436
|
@click.option('--detached', is_flag=True, help='If set, will not run the highest priority service in the foreground.')
|
stoobly_agent/app/proxy/run.py
CHANGED
@@ -101,6 +101,7 @@ def __filter_options(options):
|
|
101
101
|
Filter out non-mitmproxy options
|
102
102
|
'''
|
103
103
|
|
104
|
+
options['confdir'] = options['ca_certs_dir_path']
|
104
105
|
options['listen_host'] = options['proxy_host']
|
105
106
|
options['listen_port'] = options['proxy_port']
|
106
107
|
options['mode'] = options['proxy_mode']
|
@@ -108,6 +109,9 @@ def __filter_options(options):
|
|
108
109
|
if 'api_url' in options:
|
109
110
|
del options['api_url']
|
110
111
|
|
112
|
+
if 'ca_certs_dir_path' in options:
|
113
|
+
del options['ca_certs_dir_path']
|
114
|
+
|
111
115
|
if 'certs' in options and not options['certs']:
|
112
116
|
del options['certs']
|
113
117
|
|
@@ -16,7 +16,7 @@ def select_request_rewrite_rules(rewrite_rules: List[RewriteRule]):
|
|
16
16
|
rewrite_rule.parameter_rules or []
|
17
17
|
))
|
18
18
|
|
19
|
-
if len(parameter_rules) > 0:
|
19
|
+
if len(parameter_rules) > 0 or len(rewrite_rule.url_rules) > 0:
|
20
20
|
rewrite_rule = RewriteRule(rewrite_rule.to_dict())
|
21
21
|
rewrite_rule.url_rules = rewrite_rule.url_rules
|
22
22
|
rewrite_rule.parameter_rules = parameter_rules
|
stoobly_agent/cli.py
CHANGED
@@ -11,7 +11,7 @@ from stoobly_agent.app.cli.helpers.handle_mock_service import print_raw_response
|
|
11
11
|
from stoobly_agent.app.cli.helpers.validations import validate_project_key, validate_scenario_key
|
12
12
|
from stoobly_agent.app.proxy.constants import custom_response_codes
|
13
13
|
from stoobly_agent.app.proxy.replay.replay_request_service import replay as replay_request
|
14
|
-
from stoobly_agent.config.constants import env_vars,
|
14
|
+
from stoobly_agent.config.constants import env_vars, mode
|
15
15
|
from stoobly_agent.config.data_dir import DataDir
|
16
16
|
from stoobly_agent.lib.utils.conditional_decorator import ConditionalDecorator
|
17
17
|
|
@@ -79,6 +79,7 @@ def init(**kwargs):
|
|
79
79
|
help="Run proxy and/or UI",
|
80
80
|
)
|
81
81
|
@ConditionalDecorator(lambda f: click.option('--api-url', help='API URL.')(f), is_remote)
|
82
|
+
@click.option('--ca-certs-dir-path', default=DataDir.instance().ca_certs_dir_path, help='Path to ca certs directory used to sign SSL certs.')
|
82
83
|
@click.option('--certs', help='''
|
83
84
|
SSL certificates of the form "[domain=]path". The domain may include a wildcard, and is equal to "*" if not specified. The file at path is a certificate in PEM format. If a private key is included in the
|
84
85
|
PEM, it is used, else the default key in the conf dir is used. The PEM file should contain the full certificate chain, with the leaf certificate as the first entry. May be passed multiple times.
|
@@ -87,7 +88,6 @@ def init(**kwargs):
|
|
87
88
|
Passphrase for decrypting the private key provided in the --cert option. Note that passing cert_passphrase on the command line makes your passphrase visible in your system's process list. Specify it in
|
88
89
|
config.yaml to avoid this.
|
89
90
|
''')
|
90
|
-
@click.option('--confdir', default=mitmproxy.DEFAULT_CONF_DIR_PATH, help='Location of the default mitmproxy configuration files.')
|
91
91
|
@click.option('--connection-strategy', help=', '.join(CONNECTION_STRATEGIES), type=click.Choice(CONNECTION_STRATEGIES))
|
92
92
|
@click.option('--flow-detail', default='1', type=click.Choice(['0', '1', '2', '3', '4']), help='''
|
93
93
|
The display detail level for flows in mitmdump: 0 (quiet) to 4 (very verbose).
|
stoobly_agent/config/data_dir.py
CHANGED
@@ -24,17 +24,7 @@ class DataDir:
|
|
24
24
|
self.__data_dir_path = os.path.join(path, DATA_DIR_NAME)
|
25
25
|
else:
|
26
26
|
cwd = os.getcwd()
|
27
|
-
self.__data_dir_path =
|
28
|
-
|
29
|
-
# If the current working directory does not contain a .stoobly folder,
|
30
|
-
# then search in the parent directories until the home directory.
|
31
|
-
if not os.path.exists(self.__data_dir_path):
|
32
|
-
data_dir = self.find_data_dir(cwd)
|
33
|
-
|
34
|
-
if not data_dir:
|
35
|
-
self.__data_dir_path = os.path.join(os.path.expanduser('~'), DATA_DIR_NAME)
|
36
|
-
else:
|
37
|
-
self.__data_dir_path = data_dir
|
27
|
+
self.__data_dir_path = self.find_data_dir(cwd)
|
38
28
|
|
39
29
|
if not os.path.exists(self.__data_dir_path):
|
40
30
|
self.create(os.path.dirname(self.__data_dir_path))
|
@@ -115,29 +105,13 @@ class DataDir:
|
|
115
105
|
return os.path.join(self.tmp_dir_path, MITMPROXY_OPTIONS_FILE_NAME)
|
116
106
|
|
117
107
|
@property
|
118
|
-
def
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
options_json = self.mitmproxy_options_json_path
|
124
|
-
if os.path.exists(options_json):
|
125
|
-
try:
|
126
|
-
with open(options_json, 'r') as fp:
|
127
|
-
import json
|
128
|
-
contents = fp.read()
|
129
|
-
options = json.loads(contents)
|
130
|
-
_conf_dir = options.get('confdir')
|
131
|
-
|
132
|
-
if _conf_dir and os.path.exists(_conf_dir):
|
133
|
-
conf_dir = _conf_dir
|
134
|
-
except Exception:
|
135
|
-
pass
|
136
|
-
else:
|
137
|
-
if not os.path.exists(conf_dir):
|
138
|
-
os.makedirs(conf_dir)
|
108
|
+
def ca_certs_dir_path(self):
|
109
|
+
path = os.path.join(self.path, 'ca_certs')
|
110
|
+
|
111
|
+
if not os.path.exists(path):
|
112
|
+
os.makedirs(path)
|
139
113
|
|
140
|
-
return
|
114
|
+
return path
|
141
115
|
|
142
116
|
@property
|
143
117
|
def settings_file_path(self):
|
@@ -227,6 +201,7 @@ class DataDir:
|
|
227
201
|
with open(os.path.join(self.__data_dir_path, '.gitignore'), 'w') as fp:
|
228
202
|
fp.write(
|
229
203
|
"\n".join([
|
204
|
+
'ca_certs',
|
230
205
|
'certs',
|
231
206
|
'db',
|
232
207
|
'settings.yml',
|
@@ -236,28 +211,21 @@ class DataDir:
|
|
236
211
|
])
|
237
212
|
)
|
238
213
|
|
239
|
-
|
214
|
+
# If the current working directory does not contain a .stoobly folder,
|
215
|
+
# then search in the parent directories until the home directory.
|
240
216
|
def find_data_dir(self, start_path: str) -> str:
|
241
|
-
# Note: these paths won't work for Windows
|
242
217
|
root_dir = os.path.abspath(os.sep)
|
243
|
-
home_dir = os.path.expanduser("~")
|
244
|
-
root_reached = False
|
245
218
|
|
246
|
-
while
|
219
|
+
while True:
|
247
220
|
data_dir_path = os.path.join(start_path, DATA_DIR_NAME)
|
248
|
-
|
249
|
-
if os.path.exists(data_dir_path):
|
221
|
+
if os.path.exists(data_dir_path) and os.stat(data_dir_path).st_uid == os.getuid():
|
250
222
|
return data_dir_path
|
251
223
|
|
252
|
-
|
253
|
-
break
|
254
|
-
|
224
|
+
# Root reached
|
255
225
|
if start_path == root_dir:
|
256
|
-
|
257
|
-
start_path = home_dir
|
226
|
+
break
|
258
227
|
|
259
228
|
# Move up one directory
|
260
229
|
start_path = os.path.dirname(start_path)
|
261
230
|
|
262
|
-
return
|
263
|
-
|
231
|
+
return os.path.join(os.path.expanduser('~'), DATA_DIR_NAME)
|
@@ -1,12 +1,9 @@
|
|
1
1
|
import json
|
2
|
-
import os
|
3
2
|
import pdb
|
4
3
|
|
5
4
|
from stoobly_agent.config.data_dir import DataDir
|
6
5
|
|
7
6
|
class MitmproxyConfig():
|
8
|
-
MITMPROXY_DIR_NAME = '.mitmproxy'
|
9
|
-
|
10
7
|
__instance = None
|
11
8
|
__master = None
|
12
9
|
|
@@ -16,11 +13,6 @@ class MitmproxyConfig():
|
|
16
13
|
else:
|
17
14
|
self.__master = master
|
18
15
|
|
19
|
-
self.__mitmproxy_dir_path = DataDir.instance().mitmproxy_conf_dir_path
|
20
|
-
|
21
|
-
if not os.path.exists(self.__mitmproxy_dir_path):
|
22
|
-
os.mkdir(self.__mitmproxy_dir_path)
|
23
|
-
|
24
16
|
@classmethod
|
25
17
|
def instance(cls, master = None):
|
26
18
|
if cls.__instance is None:
|
@@ -28,15 +20,6 @@ class MitmproxyConfig():
|
|
28
20
|
|
29
21
|
return cls.__instance
|
30
22
|
|
31
|
-
@property
|
32
|
-
def ca_cert_pem_path(self):
|
33
|
-
path = os.path.join(self.__mitmproxy_dir_path, 'mitmproxy-ca-cert.pem')
|
34
|
-
|
35
|
-
if not os.path.exists(path):
|
36
|
-
return ''
|
37
|
-
|
38
|
-
return path
|
39
|
-
|
40
23
|
def with_master(self, master):
|
41
24
|
from mitmproxy.tools.dump import DumpMaster
|
42
25
|
self.__master: DumpMaster = master
|
@@ -3,7 +3,6 @@ import pytest
|
|
3
3
|
|
4
4
|
from stoobly_agent.test.test_helper import reset
|
5
5
|
|
6
|
-
from stoobly_agent.config.constants.mitmproxy import DEFAULT_CONF_DIR_PATH
|
7
6
|
from stoobly_agent.config.data_dir import DataDir
|
8
7
|
from stoobly_agent.app.cli.helpers.certificate_authority import CertificateAuthority
|
9
8
|
|
@@ -33,7 +32,7 @@ class TestCertificateAuthority():
|
|
33
32
|
return CertificateAuthority()
|
34
33
|
|
35
34
|
def test_defaults_to_mitmproxy_confdir(self, certificate_authority: CertificateAuthority):
|
36
|
-
assert certificate_authority.certs_dir ==
|
35
|
+
assert certificate_authority.certs_dir == DataDir.instance().ca_certs_dir_path
|
37
36
|
|
38
37
|
class TestSign():
|
39
38
|
|
@@ -1 +1 @@
|
|
1
|
-
1.5.
|
1
|
+
1.5.5
|
@@ -5,7 +5,6 @@ import pytest
|
|
5
5
|
|
6
6
|
from stoobly_agent.config.constants.env_vars import ENV
|
7
7
|
from stoobly_agent.config.constants.mode import NONE
|
8
|
-
from stoobly_agent.config.constants.mitmproxy import DEFAULT_CONF_DIR_PATH
|
9
8
|
from stoobly_agent.config.data_dir import DataDir, DATA_DIR_NAME
|
10
9
|
from stoobly_agent.test.test_helper import reset
|
11
10
|
|
@@ -83,12 +82,4 @@ class TestDataDir():
|
|
83
82
|
|
84
83
|
finally:
|
85
84
|
shutil.rmtree(temp_dir)
|
86
|
-
os.chdir(original_cwd)
|
87
|
-
|
88
|
-
class TestMitmproxyConfDirPath():
|
89
|
-
@pytest.fixture(autouse=True, scope='class')
|
90
|
-
def settings(self):
|
91
|
-
return reset()
|
92
|
-
|
93
|
-
def test_default_path(self):
|
94
|
-
assert DataDir.instance().mitmproxy_conf_dir_path == DEFAULT_CONF_DIR_PATH
|
85
|
+
os.chdir(original_cwd)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# Define services here
|
2
2
|
|
3
3
|
networks:
|
4
|
-
|
4
|
+
app:
|
5
5
|
external: true
|
6
6
|
name: ${APP_NETWORK}
|
7
7
|
|
@@ -10,7 +10,7 @@ services:
|
|
10
10
|
image: kennethreitz/httpbin:latest
|
11
11
|
hostname: my-httpbin.com
|
12
12
|
networks:
|
13
|
-
-
|
13
|
+
- app
|
14
14
|
profiles: &id001
|
15
15
|
- record
|
16
16
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
stoobly_agent/__init__.py,sha256=
|
1
|
+
stoobly_agent/__init__.py,sha256=k2GUVD_jITrYKZvYERMD1wyJG91qJoFCvlHil6fA6pQ,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=ZgCfmdr5um-OFAiuRHdBxFqPIeph9WqYkVg-oVQWw-E,5543
|
@@ -17,7 +17,7 @@ stoobly_agent/app/api/scenarios_controller.py,sha256=zJViyme9l36mlJDQONRu4N-A0kd
|
|
17
17
|
stoobly_agent/app/api/simple_http_request_handler.py,sha256=ZdJ4kKEcPDpck74dJu--M7zw76wQzpo_AQArZwN9Bes,4466
|
18
18
|
stoobly_agent/app/api/statuses_controller.py,sha256=gQsl28h-3mZ_bByEHpc4mRy3KFvUz5PeAgVB0cPx_Ao,1791
|
19
19
|
stoobly_agent/app/cli/__init__.py,sha256=uS4KJgMAhm0JVnEUC-ONW-Bq6A8I9v7Fk-_Ka7gXlrU,470
|
20
|
-
stoobly_agent/app/cli/ca_cert_cli.py,sha256=
|
20
|
+
stoobly_agent/app/cli/ca_cert_cli.py,sha256=Jx3faedvkUrLG986D5YmMD6u6IROKqhP9I1i6JBgeyU,1407
|
21
21
|
stoobly_agent/app/cli/config_cli.py,sha256=Ljr2Ir8P0dhGXALQQcq7fwthrcipPlvxS2G_0bNE6fY,15727
|
22
22
|
stoobly_agent/app/cli/decorators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
23
|
stoobly_agent/app/cli/decorators/config.py,sha256=AWrDGZm_gjCWFYlRwdla3iE6H7OSlM4FxkaXRNovBZA,2428
|
@@ -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=gYFSf2b6LOR5AymX43h_f2Wsus8nCIoOug3XuH_60Vo,7368
|
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,7 +67,7 @@ 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=
|
70
|
+
stoobly_agent/app/cli/scaffold/app.py,sha256=bgNc_dWZtgkuDAkS9aHSCMxCrjX907Phlfb2bOasswI,3435
|
71
71
|
stoobly_agent/app/cli/scaffold/app_command.py,sha256=qtOdG08ehdRk1wujiTL7LCQXoJkGpwExepO2qYBXBNA,2027
|
72
72
|
stoobly_agent/app/cli/scaffold/app_config.py,sha256=Gs-BynV1vY7_PpTOenn2mqc7lBIu0vBx6as9vtEU1sk,818
|
73
73
|
stoobly_agent/app/cli/scaffold/app_create_command.py,sha256=sy4017eiir9MK0TEbTi1NyG9mhOGlenGGVnq0GsGUrQ,966
|
@@ -76,8 +76,8 @@ stoobly_agent/app/cli/scaffold/config.py,sha256=HZU5tkvr3dkPr4JMXZtrJlu2wxxO-134
|
|
76
76
|
stoobly_agent/app/cli/scaffold/constants.py,sha256=Vn7TLVmxbiLOb7_wFDE4mlwkcr4vs0ZEgMxhS1ANizA,2084
|
77
77
|
stoobly_agent/app/cli/scaffold/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
78
|
stoobly_agent/app/cli/scaffold/docker/app_builder.py,sha256=7z5pk5JKlRDHx2USxY-WurttLyyUkIVYfl34_u1x9dE,501
|
79
|
-
stoobly_agent/app/cli/scaffold/docker/builder.py,sha256=
|
80
|
-
stoobly_agent/app/cli/scaffold/docker/constants.py,sha256=
|
79
|
+
stoobly_agent/app/cli/scaffold/docker/builder.py,sha256=BQzjpDZmkUrii3VDcRCBXQkocxRwdS1omJFy5AkzJzw,2856
|
80
|
+
stoobly_agent/app/cli/scaffold/docker/constants.py,sha256=xfFBSF-1GQKNnUPTlz08Nm9HZDspUnvPvjwaLViQwVw,419
|
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
83
|
stoobly_agent/app/cli/scaffold/docker/service/builder.py,sha256=a7jxzXEwHaNcnG281BrOtNlf5Nmc4Z97DQrm68xdCCU,3219
|
@@ -103,8 +103,8 @@ stoobly_agent/app/cli/scaffold/service_workflow.py,sha256=sQ_Edy_wGHKMXpD0DmhnOW
|
|
103
103
|
stoobly_agent/app/cli/scaffold/service_workflow_validate_command.py,sha256=iORyPZEQurgWVxrdMgkdD3VsCz3ar2D15dmyY3RoeKw,9904
|
104
104
|
stoobly_agent/app/cli/scaffold/templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
105
|
stoobly_agent/app/cli/scaffold/templates/app/.Dockerfile.context,sha256=EVoSqGJH_H7Xw1Ktan5GH2SWaOXIr916NUpptr2hkiA,158
|
106
|
-
stoobly_agent/app/cli/scaffold/templates/app/.Makefile,sha256=
|
107
|
-
stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml,sha256=
|
106
|
+
stoobly_agent/app/cli/scaffold/templates/app/.Makefile,sha256=l0P-cytgs_hV-GfIQMMdXpl22uH12-iORZ-9etB6JNc,8062
|
107
|
+
stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml,sha256=6tFqXh3ine8vaD0FCL5TMoY5NjKx2wLUR8XpW3tJtew,245
|
108
108
|
stoobly_agent/app/cli/scaffold/templates/app/Makefile,sha256=TEmPG7Bf0KZOnmfsgdzza3UdwcVMmM5Lj1YdLc4cgjA,79
|
109
109
|
stoobly_agent/app/cli/scaffold/templates/app/build/.config.yml,sha256=8Wt8ZZ5irvBYYS44xGrR_EWlZDuXH9kyWmquzsh7s8g,19
|
110
110
|
stoobly_agent/app/cli/scaffold/templates/app/build/.docker-compose.base.yml,sha256=H43dtzQkuwWeeB-XzwQNqdKqwS04Ph_Al8AVCOjxCkQ,420
|
@@ -145,10 +145,10 @@ stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/bin/init,sha256=O7c
|
|
145
145
|
stoobly_agent/app/cli/scaffold/templates/app/entrypoint/test/docker-compose.yml,sha256=E4gGJwHfnZoFo9-0vM17-Qg5LPjx7vIPpcz2K7eiZg0,591
|
146
146
|
stoobly_agent/app/cli/scaffold/templates/app/gateway/.config.yml,sha256=XnLQZMzzMMIwVycjyPN5QXsmRztkTFAna1kIHYuDfJQ,19
|
147
147
|
stoobly_agent/app/cli/scaffold/templates/app/gateway/.docker-compose.base.template.yml,sha256=bgBvyDhyehS75D2ObEi7sl9DLGV6U3c9JhCAncsvjq8,251
|
148
|
-
stoobly_agent/app/cli/scaffold/templates/app/gateway/mock/.docker-compose.mock.yml,sha256=
|
149
|
-
stoobly_agent/app/cli/scaffold/templates/app/gateway/record/.docker-compose.record.yml,sha256=
|
148
|
+
stoobly_agent/app/cli/scaffold/templates/app/gateway/mock/.docker-compose.mock.yml,sha256=_nlhrpml5dm9AWqgDIaEPwrQiD1vAKVHSsY2mTIds2k,224
|
149
|
+
stoobly_agent/app/cli/scaffold/templates/app/gateway/record/.docker-compose.record.yml,sha256=FvPqOUs1k6Vc-rncnpgiRTZeEQlrizmcGkT8a4HdvUE,226
|
150
150
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/.config.yml,sha256=XnLQZMzzMMIwVycjyPN5QXsmRztkTFAna1kIHYuDfJQ,19
|
151
|
-
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/.docker-compose.base.yml,sha256=
|
151
|
+
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/.docker-compose.base.yml,sha256=bxrtZqf3YtaJCukzScslh5PgWC5q8xkGIP1wKJf33LA,111
|
152
152
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/.docker-compose.exec.yml,sha256=n-p_lIfsmpOJ78Zd0J2TdnV2M8hcn-K2TP9qOccbw1c,306
|
153
153
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.create,sha256=EZe84bLAKB-mrB9PGMx-amyMjp6x-ESUZKC8wxrWdLE,245
|
154
154
|
stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/exec/bin/.delete,sha256=RspRDQ7WT5jpN2o-6qXOlH-A2VpN4981pD4ZJljk9Rw,260
|
@@ -193,9 +193,9 @@ stoobly_agent/app/cli/scaffold/workflow_copy_command.py,sha256=R9hh5dWVz7vGld7pE
|
|
193
193
|
stoobly_agent/app/cli/scaffold/workflow_create_command.py,sha256=bjNRph9TiOzleDiG6vYAExHWLVLAROBCPt6bPxtAmDo,3408
|
194
194
|
stoobly_agent/app/cli/scaffold/workflow_env.py,sha256=x8V5pJmIiklD3f2q2-qq-CORf4YaXYq_r2JpR2MmSwk,416
|
195
195
|
stoobly_agent/app/cli/scaffold/workflow_log_command.py,sha256=Bke4lMOMxuDUFuAx9nlXHbKgYMO4KAg9ASHvjz4aVWc,1372
|
196
|
-
stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=
|
196
|
+
stoobly_agent/app/cli/scaffold/workflow_run_command.py,sha256=GXteRAgco7NCb0Ov1B2_xs1DMyLg8vdDsCvH7whrlcE,9854
|
197
197
|
stoobly_agent/app/cli/scaffold/workflow_validate_command.py,sha256=fhHciJXg_u32Wmh8us8LhgQj8D1SxkBADtuBBF4K0FM,4377
|
198
|
-
stoobly_agent/app/cli/scaffold_cli.py,sha256=
|
198
|
+
stoobly_agent/app/cli/scaffold_cli.py,sha256=EAAHY5ixodV7dKCmj6q4s5AzdHTTV3weCdXSK98AYkM,26977
|
199
199
|
stoobly_agent/app/cli/scenario_cli.py,sha256=3J1EiJOvunkfWrEkOsanw-XrKkOk78ij_GjBlE9p7CE,8229
|
200
200
|
stoobly_agent/app/cli/snapshot_cli.py,sha256=cpCjxFYBuVwLuq_b2lIUu-5zWqupRlrp4xWgDytirSM,10047
|
201
201
|
stoobly_agent/app/cli/trace_cli.py,sha256=K7E-vx3JUcqEDSWOdIOi_AieKNQz7dBfmRrVvKDkzFI,4605
|
@@ -346,7 +346,7 @@ stoobly_agent/app/proxy/replay/replay_request_service.py,sha256=UuTPPef6jchrJSjV
|
|
346
346
|
stoobly_agent/app/proxy/replay/replay_scenario_service.py,sha256=9jV-iO5EBg8geUblEtjjWRFIkom_Pqmo7P-lTc3S4Xw,2824
|
347
347
|
stoobly_agent/app/proxy/replay/rewrite_params_service.py,sha256=jEHlT6_OHq_VBa09Hd6QaRyErv7tZnziDvW7m3Q8CQg,2234
|
348
348
|
stoobly_agent/app/proxy/replay/trace_context.py,sha256=lKpnQWVCUTcMPE-SOi90za3U1yL0VeBlIgj_KP63VsE,10435
|
349
|
-
stoobly_agent/app/proxy/run.py,sha256=
|
349
|
+
stoobly_agent/app/proxy/run.py,sha256=SfzMsaY6Ugsg4XEkQeU25lTyiMC0GRDEiYR70GUUaN4,4145
|
350
350
|
stoobly_agent/app/proxy/settings.py,sha256=R0LkSa9HrkUXvCd-nur4syJePjbQZdlnAnOPpGnCx38,2172
|
351
351
|
stoobly_agent/app/proxy/simulate_intercept_service.py,sha256=R-L2dh2dfYFebttWXU0NwyxFI_jP6Ud36oKPC-T8HiI,1942
|
352
352
|
stoobly_agent/app/proxy/test/__init__.py,sha256=uW0Ab27oyH2odTeVRjcuUJF8A1FLbTT5sBMzhGZr1so,89
|
@@ -376,7 +376,7 @@ stoobly_agent/app/proxy/utils/allowed_request_service.py,sha256=dk4xnHzCgxyvD2Ih
|
|
376
376
|
stoobly_agent/app/proxy/utils/publish_change_service.py,sha256=vSpFt0Ox9fceJlalHji61N6StdkEZwAvVXhHXO6fwEI,1259
|
377
377
|
stoobly_agent/app/proxy/utils/request_handler.py,sha256=VscAXf2_F1C1yrt2gNImPkatosuGj356pARTd_WnTUE,846
|
378
378
|
stoobly_agent/app/proxy/utils/response_handler.py,sha256=t5spjycvPDOZi0YU39gpavnYLhb7C29HnRe9RmzGCtU,1749
|
379
|
-
stoobly_agent/app/proxy/utils/rewrite.py,sha256
|
379
|
+
stoobly_agent/app/proxy/utils/rewrite.py,sha256=nYrzzvVbNT1EZck5Lh5vCG1ol7ml0AN_dJ4cNq2NHrs,2494
|
380
380
|
stoobly_agent/app/proxy/utils/rewrite_rules_to_ignored_components_service.py,sha256=TEWakpZ7C468PW8lVJsRwqkRElpaCR5EOgNNzyGAleY,1043
|
381
381
|
stoobly_agent/app/settings/__init__.py,sha256=Fm9Y4e0g_wQyPULavyv9IJopINTml7RYck6mJAPtEHY,6071
|
382
382
|
stoobly_agent/app/settings/cli_settings.py,sha256=amAeOYTYreZMr5-cCkaBCjiQ8Vkg6qkkKUbVtIejoOg,487
|
@@ -406,7 +406,7 @@ stoobly_agent/app/settings/types/remote_settings.py,sha256=4PvEGKULXM0zv29XTDzV7
|
|
406
406
|
stoobly_agent/app/settings/types/ui_settings.py,sha256=BqPy2F32AbODqzi2mp2kRk28QVUydQIwVmvftn46pco,84
|
407
407
|
stoobly_agent/app/settings/ui_settings.py,sha256=YDEUMPuJFh0SLHaGz6O-Gpz8nwsunNzeuc-TzO9OUbM,1170
|
408
408
|
stoobly_agent/app/settings/url_rule.py,sha256=Qx7YrIpVRSC-4LeNiCAfCtE50Jou4423hojMW-4qUYg,954
|
409
|
-
stoobly_agent/cli.py,sha256=
|
409
|
+
stoobly_agent/cli.py,sha256=sw8Ke5mCvzQ50X-zsb2Ld_zW4T6S58P0fN5GyKNOrcQ,10255
|
410
410
|
stoobly_agent/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
411
411
|
stoobly_agent/config/constants/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
412
412
|
stoobly_agent/config/constants/alias_resolve_strategy.py,sha256=_R1tVqFnyGxCraVS5-dhSskaDj_X8-NthsY7i_bEt9M,119
|
@@ -415,7 +415,6 @@ stoobly_agent/config/constants/env_vars.py,sha256=HAR_ZIdXXbpWQgCDaRR5RtpVyGXCsM
|
|
415
415
|
stoobly_agent/config/constants/headers.py,sha256=Hfv7R8_NPXAGaMiZPqywGZDnr0qcVUyfenPb4g465rE,169
|
416
416
|
stoobly_agent/config/constants/intercept_policy.py,sha256=5hIgOft8PQmCRdOHb5OEvEj10tU66DIQF3GYltlWyM8,25
|
417
417
|
stoobly_agent/config/constants/lifecycle_hooks.py,sha256=aobclZmcND_mUnFKkUgpxgwd5EU3pjgAvB-NFf2dCgE,846
|
418
|
-
stoobly_agent/config/constants/mitmproxy.py,sha256=AhaxRGMb7OC4DBqNvyBP0OVQSByCeA-itefzmMoIS14,116
|
419
418
|
stoobly_agent/config/constants/mock_policy.py,sha256=oS3eKL5Ezpnm_4zvztcLvvtKppxm7eKvOOBHYKyKpeU,133
|
420
419
|
stoobly_agent/config/constants/mode.py,sha256=J35vV1LPQRhD2ob6DaJ7mLGJrMhv-CVnC6IHWd7b_GM,160
|
421
420
|
stoobly_agent/config/constants/query_params.py,sha256=b-QQGKTqf-HePt0X4ltFksf5ETiIFPgBvh-kFrF7kUk,63
|
@@ -426,8 +425,8 @@ stoobly_agent/config/constants/statuses.py,sha256=dR88qHHnDR_5ppuKijwc0R24D_fWc6
|
|
426
425
|
stoobly_agent/config/constants/test_filter.py,sha256=rQ-eMZ8kpq49pqS1PQhaRx59dlRicd-Ag4sjgoXfpY8,109
|
427
426
|
stoobly_agent/config/constants/test_output_level.py,sha256=yrn8cs-lexrK0Ckpc_SX3NhsZPfVhNpmjzjSP62LCro,135
|
428
427
|
stoobly_agent/config/constants/test_strategy.py,sha256=d6-WgKqElB3q_csP-QYFkhR4XvlPGfGdCJ-SBEDEoL4,152
|
429
|
-
stoobly_agent/config/data_dir.py,sha256=
|
430
|
-
stoobly_agent/config/mitmproxy.py,sha256=
|
428
|
+
stoobly_agent/config/data_dir.py,sha256=r0ROg7rsKhhFW_VJBO-5vKUx6t1DYozbhgvSMVE07DA,6703
|
429
|
+
stoobly_agent/config/mitmproxy.py,sha256=8APQnpa8hnktA1T69w5bzWjfC2VpPTDpsFwOxiY9ppk,1472
|
431
430
|
stoobly_agent/config/schema.yml,sha256=aLSrTI7c6_K-fGOyoGFUdA2Prx9zQwpF3IC43LvXupo,1993
|
432
431
|
stoobly_agent/config/settings.yml.sample,sha256=muxP1bWrtknVaSgdseFaw23tuwduILNdQTVy7aB519M,404
|
433
432
|
stoobly_agent/config/source_dir.py,sha256=3oYwWmIrid0YsIf91AIUI2itAA3pdPA10eHaC-nmelQ,1146
|
@@ -651,7 +650,7 @@ stoobly_agent/test/app/cli/config/project/config_project_set_test.py,sha256=bV2O
|
|
651
650
|
stoobly_agent/test/app/cli/config/rewrite_test.py,sha256=Y1zSTJJK4Q8Ac8qqHbKt-kFraBIwJIpr29_7V81OTy0,5601
|
652
651
|
stoobly_agent/test/app/cli/config/scenario/config_scenario_set_test.py,sha256=1A5cYH3OdwtRwTmDETg0af9urHA4K6VVeA76zub2dnQ,2525
|
653
652
|
stoobly_agent/test/app/cli/endpoint/endpoint_cli_apply_test.py,sha256=cW5RDd-spyEknV1krFv37GHgWShPVOgvPyX2jgwnWZw,3886
|
654
|
-
stoobly_agent/test/app/cli/helpers/certificate_authority_test.py,sha256
|
653
|
+
stoobly_agent/test/app/cli/helpers/certificate_authority_test.py,sha256=-tWLLot9L6_0m5abYN4WMu3CNBpzkCWOJhzsGCf601E,2579
|
655
654
|
stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_additional_props_test.py,sha256=t4Wggky_fexBrRqvK12Qgj71UKsM0gGqutOEfAdOqtk,1772
|
656
655
|
stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_missing_info_test.py,sha256=qA6PJEtv1tS7Ksl6R7GjbIS_f9SxINPr8SrcXTuG-WU,3027
|
657
656
|
stoobly_agent/test/app/cli/helpers/openapi_endpoint_adapter_missing_oauth2_scopes_test.py,sha256=Gw_YtZR2EKy09jAJEGQ4phrAoHlzlqhbJ9bLH91UrRU,3143
|
@@ -696,7 +695,7 @@ stoobly_agent/test/app/models/factories/resource/local_db/helpers/log_test.py,sh
|
|
696
695
|
stoobly_agent/test/app/models/factories/resource/local_db/helpers/tiebreak_scenario_request_test.py,sha256=a1SFLyEyRRLuADvAw6ckQQKORFXvyK1lyrbkaLWx8oU,3399
|
697
696
|
stoobly_agent/test/app/models/factories/resource/local_db/request_adapter_test.py,sha256=Pzq1cBPnP9oSWG-p0c-VoymoHxgp483QmNwmV1b78RA,8453
|
698
697
|
stoobly_agent/test/app/models/factories/resource/local_db/response_adapter_test.py,sha256=9P95EKH5rZGOrmRkRIDlQZqtiLJHk9735og18Ffwpfw,2204
|
699
|
-
stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION,sha256=
|
698
|
+
stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION,sha256=BMk7fnY1pD0MttCX-a8KcqmXMEHRGEflIcxoLxZoxgU,6
|
700
699
|
stoobly_agent/test/app/models/schemas/.stoobly/db/stoobly_agent.sqlite3,sha256=ch8gNx6zIelLKQx65gwFx_LRNqUD3EC5xcHZ0ukIQiU,188416
|
701
700
|
stoobly_agent/test/app/models/schemas/.stoobly/settings.yml,sha256=vLwMjweKOdod6tSLtIlyBefPQuNXq9wio4kBaODKtAU,726
|
702
701
|
stoobly_agent/test/app/models/schemas/.stoobly/tmp/options.json,sha256=OTRzarwus48CTrItedXCrgQttJHSEZonEYc7R_knvYg,2212
|
@@ -719,7 +718,7 @@ stoobly_agent/test/cli/mock_scenario_lifecycle_hooks.py,sha256=e57A3FWHt1ZgaWKhb
|
|
719
718
|
stoobly_agent/test/cli/mock_scenario_test.py,sha256=tHT-p8Vm8APP2KOlyfZ-5z_AxZO9TS4sDgui3X2qkaE,2620
|
720
719
|
stoobly_agent/test/cli/mock_test.py,sha256=zYAFhHkR-1oafZzzL_4aPOWzM2nXWRHGt36yTAuG8Rw,5636
|
721
720
|
stoobly_agent/test/cli/record_test.py,sha256=CG7prrooTgkW8RYaiDRYD3LuuDIR8dz8jaP9RNRrF4o,15814
|
722
|
-
stoobly_agent/test/config/data_dir_test.py,sha256=
|
721
|
+
stoobly_agent/test/config/data_dir_test.py,sha256=K8_RspuAKWXU745WbXDxmB49MUxswGm2q-BU3UgCX6w,2338
|
723
722
|
stoobly_agent/test/mock_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
724
723
|
stoobly_agent/test/mock_data/endpoint_show_response.py,sha256=JFEkceHI6nH38zitCbFMozE1lODahxmvj70N5eM_sec,5901
|
725
724
|
stoobly_agent/test/mock_data/lifecycle_hooks.py,sha256=mLUSEMD-brQhLFKximX_kNmXjzrJTpGUwXnX4BPvx1E,1054
|
@@ -733,12 +732,12 @@ stoobly_agent/test/mock_data/petstore-swagger-io.yaml,sha256=FbOEaArZKl1dV7jEf1h
|
|
733
732
|
stoobly_agent/test/mock_data/petstore.yaml,sha256=CCdliJky04Az4FIOkFA883uunwFDHLr2Y8ohtozFi_Q,2714
|
734
733
|
stoobly_agent/test/mock_data/request_show_response.py,sha256=K_a0fP0QT58T8sX9PaM6hqtX1A1depZsqg_GsNPf--k,707
|
735
734
|
stoobly_agent/test/mock_data/scaffold/docker-compose-assets-service.yml,sha256=TJpkkkSjUlfz3t8Oxsz6Ery1JX7Ed79Fh6oiEuKI4i0,275
|
736
|
-
stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml,sha256=
|
735
|
+
stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml,sha256=_tCvHxpIKcKMWKrtTvJgqSfkzcaNvJN1w7Yb9OUOzLU,241
|
737
736
|
stoobly_agent/test/mock_data/scaffold/index.html,sha256=qJwuYajKZ4ihWZrJQ3BNObV5kf1VGnnm_vqlPJzdqLE,258
|
738
737
|
stoobly_agent/test/mock_data/uspto.yaml,sha256=6U5se7C3o-86J4m9xpOk9Npias399f5CbfWzR87WKwE,7835
|
739
738
|
stoobly_agent/test/test_helper.py,sha256=m_oAI7tmRYCNZdKfNqISWhMv3e44tjeYViQ3nTUfnos,1007
|
740
|
-
stoobly_agent-1.5.
|
741
|
-
stoobly_agent-1.5.
|
742
|
-
stoobly_agent-1.5.
|
743
|
-
stoobly_agent-1.5.
|
744
|
-
stoobly_agent-1.5.
|
739
|
+
stoobly_agent-1.5.5.dist-info/LICENSE,sha256=o93sj12cdoEOsTCjPaPFsw3Xq0SXs3pPcY-9reE2sEw,548
|
740
|
+
stoobly_agent-1.5.5.dist-info/METADATA,sha256=wSAQ3C-UCXwYdD5tf3P0iuRul9Ly4Z3crMfcszpo7Uw,3087
|
741
|
+
stoobly_agent-1.5.5.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
742
|
+
stoobly_agent-1.5.5.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
|
743
|
+
stoobly_agent-1.5.5.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|