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.
Files changed (28) hide show
  1. stoobly_agent/__init__.py +1 -1
  2. stoobly_agent/app/cli/ca_cert_cli.py +7 -6
  3. stoobly_agent/app/cli/helpers/certificate_authority.py +1 -1
  4. stoobly_agent/app/cli/scaffold/app.py +1 -1
  5. stoobly_agent/app/cli/scaffold/docker/builder.py +4 -4
  6. stoobly_agent/app/cli/scaffold/docker/constants.py +1 -1
  7. stoobly_agent/app/cli/scaffold/templates/app/.Makefile +5 -5
  8. stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml +1 -6
  9. stoobly_agent/app/cli/scaffold/templates/app/gateway/mock/.docker-compose.mock.yml +2 -2
  10. stoobly_agent/app/cli/scaffold/templates/app/gateway/record/.docker-compose.record.yml +2 -2
  11. stoobly_agent/app/cli/scaffold/templates/app/stoobly-ui/.docker-compose.base.yml +1 -1
  12. stoobly_agent/app/cli/scaffold/workflow_run_command.py +1 -0
  13. stoobly_agent/app/cli/scaffold_cli.py +7 -2
  14. stoobly_agent/app/proxy/run.py +4 -0
  15. stoobly_agent/app/proxy/utils/rewrite.py +1 -1
  16. stoobly_agent/cli.py +2 -2
  17. stoobly_agent/config/data_dir.py +15 -47
  18. stoobly_agent/config/mitmproxy.py +0 -17
  19. stoobly_agent/test/app/cli/helpers/certificate_authority_test.py +1 -2
  20. stoobly_agent/test/app/models/schemas/.stoobly/db/VERSION +1 -1
  21. stoobly_agent/test/config/data_dir_test.py +1 -10
  22. stoobly_agent/test/mock_data/scaffold/docker-compose-local-service.yml +2 -2
  23. {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/METADATA +1 -1
  24. {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/RECORD +27 -28
  25. stoobly_agent/config/constants/mitmproxy.py +0 -4
  26. {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/LICENSE +0 -0
  27. {stoobly_agent-1.5.3.dist-info → stoobly_agent-1.5.5.dist-info}/WHEEL +0 -0
  28. {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.3'
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().mitmproxy_conf_dir_path, help='Path to ca certs directory used to sign SSL certs. Defaults to ~/.mitmproxy')
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
- mitmproxy_ca_certs_dir = kwargs['ca_certs_dir_path']
22
+ ca_certs_dir_path = kwargs['ca_certs_dir_path']
23
23
 
24
- installer = CertificateAuthority(mitmproxy_ca_certs_dir)
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().mitmproxy_conf_dir_path, help='Path to ca certs directory.')
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
- mitmproxy_ca_certs_dir = kwargs['ca_certs_dir_path']
36
- installer = CertificateAuthority(mitmproxy_ca_certs_dir)
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().mitmproxy_conf_dir_path, cn = MITMPROXY_CN):
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.mitmproxy_conf_dir_path
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, DOCKER_COMPOSE_CUSTOM, GATEWAY_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(GATEWAY_NETWORK)
39
+ return self.__networks.get(APP_NETWORK_NAME)
40
40
 
41
41
  @property
42
42
  def public_network_name(self):
43
- return GATEWAY_NETWORK
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[GATEWAY_NETWORK] = {
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:-$$(realpath ~)/.mitmproxy}")
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=$(user_id_option)
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 [ ! -d "$$HOME/.mitmproxy" ]; then \
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}
@@ -4,10 +4,10 @@ services:
4
4
  file: ../.docker-compose.base.yml
5
5
  service: gateway_base
6
6
  networks:
7
- - gateway
7
+ - app
8
8
  profiles:
9
9
  - mock
10
10
  networks:
11
- gateway:
11
+ app:
12
12
  name: ${APP_NETWORK}
13
13
  external: true
@@ -4,10 +4,10 @@ services:
4
4
  file: ../.docker-compose.base.yml
5
5
  service: gateway_base
6
6
  networks:
7
- - gateway
7
+ - app
8
8
  profiles:
9
9
  - record
10
10
  networks:
11
- gateway:
11
+ app:
12
12
  name: ${APP_NETWORK}
13
13
  external: true
@@ -2,4 +2,4 @@ services:
2
2
  stoobly_ui.base:
3
3
  extends:
4
4
  file: ../.docker-compose.base.yml
5
- service: ui_base
5
+ service: context_base
@@ -215,6 +215,7 @@ class WorkflowRunCommand(WorkflowCommand):
215
215
  command.append(f"-p {options['namespace']}")
216
216
 
217
217
  command.append('down')
218
+ command.append('--volumes')
218
219
 
219
220
  if options.get('rmi'):
220
221
  command.append('--rmi local')
@@ -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.mitmproxy_conf_dir_path, help='Path to ca certs directory used to sign SSL certs. Defaults to ~/.mitmproxy')
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.mitmproxy_conf_dir_path, help='Path to ca certs directory used to sign SSL certs. Defaults to ~/.mitmproxy')
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.')
@@ -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, mitmproxy, mode
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).
@@ -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 = os.path.join(cwd, DATA_DIR_NAME)
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 mitmproxy_conf_dir_path(self):
119
- from stoobly_agent.config.constants.mitmproxy import DEFAULT_CONF_DIR_PATH
120
-
121
- conf_dir = DEFAULT_CONF_DIR_PATH
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 conf_dir
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 start_path != home_dir:
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
- if root_reached:
253
- break
254
-
224
+ # Root reached
255
225
  if start_path == root_dir:
256
- root_reached = True
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 == DEFAULT_CONF_DIR_PATH
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.0
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
- gateway:
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
- - gateway
13
+ - app
14
14
  profiles: &id001
15
15
  - record
16
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stoobly-agent
3
- Version: 1.5.3
3
+ Version: 1.5.5
4
4
  Summary: Record, mock, and test HTTP(s) requests. CLI agent for Stoobly
5
5
  License: Apache-2.0
6
6
  Author: Matt Le
@@ -1,4 +1,4 @@
1
- stoobly_agent/__init__.py,sha256=KOmCmahpo9_j7C_BpjDSVdPibTe802RAEUhRgfhBST4,44
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=QXl01nyCQLhiGr8vozZicui36AlgHU1q_V9c_w_xY-Q,1444
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=j43f8W0A5lrNOIdB7QJQAVRCDP9ri4SpUZuT4XfI5v0,7374
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=umY7kgZb6xvwO1XxAV3zmgjW6xyLnAbKkM7oh4Dk7uk,3441
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=OE7r8vEdEkW3vwpmIctePiO0S5jvao5zMJNpxc-Yayw,2851
80
- stoobly_agent/app/cli/scaffold/docker/constants.py,sha256=fGnuo0ULYJa4CT3A4nPB7hZq8nFpdoCOSvrdJegdjMg,422
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=JOunQ18rT64lYqYkFb3DVXDxP5m1WCtLgy8aAlGLyLs,7999
107
- stoobly_agent/app/cli/scaffold/templates/app/.docker-compose.base.yml,sha256=ieZmXTY0RLKowpP102uSKlfu1sbm0849T-mQz858M80,360
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=LiMgBvOozkBH34-72kQXLylmrnERwjQfs8aws6BlZHM,232
149
- stoobly_agent/app/cli/scaffold/templates/app/gateway/record/.docker-compose.record.yml,sha256=4pwMuBdfaf9hX1RVJ3KU3FY4E5BXYSPFsfUGKmiuXPk,234
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=GO3dIJ1WlazBDik_PDo1YvrSXcqeT5MMJjbb_iBdH6g,106
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=08tJIMAU3EasFAnE1hMPOFzMEYNtl4pxneAI3VcRmkg,9822
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=xELl0zXYen7FkjLkDcb1AJXzIzbj_D519UYeYjYKjuU,26783
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=QA11dDOUFpOk0PSm28zQc6zgBEehiyCx6sp0d8ETZF4,4010
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=-Lf5H8aF63G37beoaG3ehr5LIAQfsKTWQvMCeNL34I4,2459
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=nZDwOnhcNcZlr2hlznWVDnidPMe3LkVv88HOjamAqmA,10255
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=zNp-diJRcW6tl3YHWMcShwJgRIxc8Bq7DJ2WR9hJFIM,7777
430
- stoobly_agent/config/mitmproxy.py,sha256=z9L1JSWwQFsn4gMZk8Dcz5mOcUc6dYnW1ZugrYTEttw,1902
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=Y5YkwVFKyZBbfWK-vZVo3__jzRlRDOCFNvTLbDpjGg4,2639
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=H03AltWPfSHjh1ZxrubymxIKuEIY-kfbLLU7yetbTaw,5
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=sszUW6MKGFCS9JGhYL-E91hBzfI2jMaHRJMifNjZ00M,2659
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=x7hYB1R9RtDDcU1NS1bkhXlTCwCgCPrOW7Y9tyAVUjs,249
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.3.dist-info/LICENSE,sha256=o93sj12cdoEOsTCjPaPFsw3Xq0SXs3pPcY-9reE2sEw,548
741
- stoobly_agent-1.5.3.dist-info/METADATA,sha256=FkeplUlfrBTl6wWRpUv-EnSMCeZqlPXmZ_GtO0KWIf0,3087
742
- stoobly_agent-1.5.3.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
743
- stoobly_agent-1.5.3.dist-info/entry_points.txt,sha256=aq5wix5oC8MDQtmyPGU0xaFrsjJg7WH28NmXh2sc3Z8,56
744
- stoobly_agent-1.5.3.dist-info/RECORD,,
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,,
@@ -1,4 +0,0 @@
1
- import os
2
-
3
- CONF_DIR_NAME = '.mitmproxy'
4
- DEFAULT_CONF_DIR_PATH = os.path.join(os.path.expanduser('~'), CONF_DIR_NAME)