pyntcli 0.1.72__py3-none-any.whl → 0.1.74__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.
@@ -9,19 +9,23 @@ import base64
9
9
  from pyntcli.ui import ui_thread
10
10
  from pyntcli.analytics import send as analytics
11
11
  from pyntcli.store import CredStore
12
- from pyntcli.auth.login import PYNT_CREDENTIALS , PYNT_SAAS, PYNT_BUCKET_NAME,PYNT_PARAM1, PYNT_PARAM2
12
+ from pyntcli.auth.login import PYNT_ID, PYNT_SAAS, PYNT_BUCKET_NAME, PYNT_PARAM1, PYNT_PARAM2
13
13
 
14
14
  PYNT_DOCKER_IMAGE = "ghcr.io/pynt-io/pynt"
15
15
 
16
+
16
17
  def create_mount(src, destination, mount_type="bind"):
17
18
  return Mount(target=destination, source=src, type=mount_type)
18
19
 
20
+
19
21
  class DockerNotAvailableException(Exception):
20
22
  pass
21
23
 
24
+
22
25
  class ImageUnavailableException(Exception):
23
26
  pass
24
27
 
28
+
25
29
  def get_docker_type():
26
30
  try:
27
31
  c = docker.from_env()
@@ -30,29 +34,31 @@ def get_docker_type():
30
34
  analytics.deferred_emit(analytics.DOCKER_PLATFORM, platform)
31
35
  if platform and platform.get("Name"):
32
36
  return platform.get("Name")
33
-
37
+
34
38
  return ""
35
39
 
36
40
  except DockerException:
37
41
  raise DockerNotAvailableException()
38
- except Exception: #TODO: This is since windows is not behaving nice
42
+ except Exception: # TODO: This is since windows is not behaving nice
39
43
  raise DockerNotAvailableException()
40
44
 
41
45
 
42
46
  class PyntBaseConatiner():
43
- def __init__(self,docker_type,docker_arguments,mounts, environment={}) -> None:
47
+ def __init__(self, docker_type, docker_arguments, mounts, environment={}) -> None:
44
48
  self.docker_type = docker_type
45
49
  self.docker_arguments = docker_arguments
46
50
  self.mounts = mounts
47
51
  self.environment = environment
48
52
 
53
+
49
54
  class PyntDockerPort:
50
55
  def __init__(self, src, dest, name) -> None:
51
56
  self.src = src
52
57
  self.dest = dest
53
58
  self.name = name
54
59
 
55
- def get_container_with_arguments(args: argparse.Namespace , *port_args: PyntDockerPort) -> PyntBaseConatiner:
60
+
61
+ def get_container_with_arguments(args: argparse.Namespace, *port_args: PyntDockerPort) -> PyntBaseConatiner:
56
62
  docker_arguments = []
57
63
  if "desktop" in get_docker_type().lower():
58
64
  ports = {}
@@ -61,22 +67,22 @@ def get_container_with_arguments(args: argparse.Namespace , *port_args: PyntDock
61
67
  docker_type = PyntDockerDesktopContainer(ports=ports)
62
68
  else:
63
69
  docker_type = PyntNativeContainer(network="host")
64
- for p in port_args:
70
+ for p in port_args:
65
71
  docker_arguments.append(p.name)
66
72
  docker_arguments.append(str(p.dest))
67
-
73
+
68
74
  if "insecure" in args and args.insecure:
69
75
  docker_arguments.append("--insecure")
70
-
71
- if "application_id" in args and args.application_id:
72
- docker_arguments += ["--application-id",args.application_id]
73
76
 
74
- if "proxy" in args and args.proxy:
75
- docker_arguments += ["--proxy",args.proxy]
77
+ if "application_id" in args and args.application_id:
78
+ docker_arguments += ["--application-id", args.application_id]
76
79
 
77
- if "dev_flags" in args:
80
+ if "proxy" in args and args.proxy:
81
+ docker_arguments += ["--proxy", args.proxy]
82
+
83
+ if "dev_flags" in args:
78
84
  docker_arguments += args.dev_flags.split(" ")
79
-
85
+
80
86
  mounts = []
81
87
  if "host_ca" in args and args.host_ca:
82
88
  ca_name = os.path.basename(args.host_ca)
@@ -87,38 +93,41 @@ def get_container_with_arguments(args: argparse.Namespace , *port_args: PyntDock
87
93
  tc_name = os.path.basename(args.transport_config)
88
94
  docker_arguments += ["--transport-config", tc_name]
89
95
  mounts.append(create_mount(os.path.abspath(args.transport_config), "/etc/pynt/{}".format(tc_name)))
90
-
91
- env = {PYNT_CREDENTIALS:CredStore().get_access_token(), "PYNT_SAAS_URL": PYNT_SAAS}
96
+
97
+ env = {PYNT_ID: CredStore().get_tokens(), "PYNT_SAAS_URL": PYNT_SAAS}
92
98
  if user_set_all_variables():
93
99
  add_env_variables(env)
94
100
  return PyntBaseConatiner(docker_type, docker_arguments, mounts, env)
95
-
101
+
102
+
96
103
  def _container_image_from_tag(tag: str) -> str:
97
- if ":" in tag:
104
+ if ":" in tag:
98
105
  return tag.split(":")[0]
99
106
 
100
107
  return tag
101
108
 
109
+
102
110
  def user_set_all_variables():
103
- return all([PYNT_BUCKET_NAME, PYNT_PARAM1, PYNT_PARAM2])
104
-
111
+ return all([PYNT_BUCKET_NAME, PYNT_PARAM1, PYNT_PARAM2])
112
+
113
+
105
114
  def add_env_variables(env: dict):
106
- env["PYNT_BUCKET_NAME"] = PYNT_BUCKET_NAME
107
- env["PYNT_PARAM1"] = base64.b64encode(PYNT_PARAM1.encode('utf-8'))
108
- env["PYNT_PARAM2"] = base64.b64encode(PYNT_PARAM2.encode('utf-8'))
109
-
115
+ env["PYNT_BUCKET_NAME"] = PYNT_BUCKET_NAME
116
+ env["PYNT_PARAM1"] = base64.b64encode(PYNT_PARAM1.encode('utf-8'))
117
+ env["PYNT_PARAM2"] = base64.b64encode(PYNT_PARAM2.encode('utf-8'))
118
+
119
+
110
120
  class PyntContainer():
111
121
  def __init__(self, image_name, tag, detach, base_container: PyntBaseConatiner) -> None:
112
122
  self.docker_client: docker.DockerClient = None
113
123
  self.image = image_name if not os.environ.get("IMAGE") else os.environ.get("IMAGE")
114
124
  self.tag = tag if not os.environ.get("TAG") else os.environ.get("TAG")
115
125
  self.detach = detach
116
- self.stdout = None
126
+ self.stdout = None
117
127
  self.running = False
118
128
  self.container_name = ""
119
129
  self.base_container = base_container
120
130
 
121
-
122
131
  def _create_docker_client(self):
123
132
  self.docker_client = docker.from_env()
124
133
  pat = os.environ.get("DOCKER_PASSWORD")
@@ -126,28 +135,28 @@ class PyntContainer():
126
135
  registry = os.environ.get("DOCKER_REGISTRY")
127
136
  if pat and username and registry:
128
137
  self.docker_client.login(username=username, password=pat, registry=registry)
129
-
138
+
130
139
  def _is_docker_image_up_to_date(self, image):
131
140
  return True
132
-
141
+
133
142
  def _handle_outdated_docker_image(self, image):
134
143
  return image
135
-
144
+
136
145
  def kill_other_instances(self):
137
146
  for c in self.docker_client.containers.list():
138
147
  if len(c.image.tags) and _container_image_from_tag(c.image.tags[0]) == self.image:
139
148
  c.kill()
140
-
149
+
141
150
  def stop(self):
142
151
  if not self.running:
143
- return
152
+ return
144
153
 
145
154
  self.kill_other_instances()
146
155
 
147
156
  self.docker_client.close()
148
157
  self.docker_client = None
149
158
  self.running = False
150
-
159
+
151
160
  def is_alive(self):
152
161
  if not self.docker_client or not self.container_name:
153
162
  return False
@@ -155,47 +164,48 @@ class PyntContainer():
155
164
  l = self.docker_client.containers.list(filters={"name": self.container_name})
156
165
  if len(l) != 1:
157
166
  return False
158
-
167
+
159
168
  return l[0].status == "running"
160
-
169
+
161
170
  def pull_image(self):
162
171
  try:
163
172
  return self.docker_client.images.pull(self.image, tag=self.tag)
164
173
  except APIError as e:
165
- analytics.emit(analytics.ERROR,{"error": "Unable to pull image from ghcr: {}".format(e)})
174
+ analytics.emit(analytics.ERROR, {"error": "Unable to pull image from ghcr: {}".format(e)})
175
+ ui_thread.print(ui_thread.PrinterText("Error: Docker unable to pull latest Pynt image due to VPN/proxy. If using a mirror for Docker images, visit docs.pynt.io for help.", ui_thread.PrinterText.WARNING))
166
176
  return None
167
177
 
168
178
  def get_image(self):
169
179
  try:
170
180
  image = self.pull_image()
171
181
  if not image:
172
- image = self.docker_client.images.get('{}:{}'.format(self.image,self.tag))
182
+ ui_thread.print(ui_thread.PrinterText("Trying to get pynt local image", ui_thread.PrinterText.INFO))
183
+ image = self.docker_client.images.get('{}:{}'.format(self.image, self.tag))
173
184
  return image
174
185
  except ImageNotFound:
175
186
  raise ImageUnavailableException()
176
187
 
177
- def run(self):
188
+ def run(self):
178
189
  if not self.docker_client:
179
190
  self._create_docker_client()
180
-
191
+
181
192
  self.running = True
182
193
  self.kill_other_instances()
183
194
 
184
195
  ui_thread.print(ui_thread.PrinterText("Pulling latest docker", ui_thread.PrinterText.INFO))
185
196
  image = self.get_image()
186
197
  ui_thread.print(ui_thread.PrinterText("Docker pull done", ui_thread.PrinterText.INFO))
187
-
198
+
188
199
  args = self.base_container.docker_arguments if self.base_container.docker_arguments else None
189
-
190
200
 
191
201
  run_arguments = {
192
- "image":image,
193
- "detach":self.detach,
194
- "mounts":self.base_container.mounts,
195
- "environment": self.base_container.environment,
196
- "stream": True,
197
- "remove": True,
198
- "command": args
202
+ "image": image,
203
+ "detach": self.detach,
204
+ "mounts": self.base_container.mounts,
205
+ "environment": self.base_container.environment,
206
+ "stream": True,
207
+ "remove": True,
208
+ "command": args
199
209
  }
200
210
 
201
211
  run_arguments.update(self.base_container.docker_type.get_argumets())
@@ -206,13 +216,15 @@ class PyntContainer():
206
216
 
207
217
  PyntContainerRegistery.instance().register_container(self)
208
218
 
219
+
209
220
  class PyntDockerDesktopContainer():
210
221
  def __init__(self, ports) -> None:
211
222
  self.ports = ports
212
-
223
+
213
224
  def get_argumets(self):
214
225
  return {"ports": self.ports} if self.ports else {}
215
-
226
+
227
+
216
228
  class PyntNativeContainer():
217
229
  def __init__(self, network) -> None:
218
230
  self.network = network
@@ -230,13 +242,13 @@ class PyntContainerRegistery():
230
242
  @staticmethod
231
243
  def instance():
232
244
  if not PyntContainerRegistery._instance:
233
- PyntContainerRegistery._instance = PyntContainerRegistery()
245
+ PyntContainerRegistery._instance = PyntContainerRegistery()
234
246
 
235
247
  return PyntContainerRegistery._instance
236
248
 
237
249
  def register_container(self, c: PyntContainer):
238
- self.containers.append(c)
239
-
250
+ self.containers.append(c)
251
+
240
252
  def stop_all_containers(self):
241
- for c in self.containers:
253
+ for c in self.containers:
242
254
  c.stop()
pyntcli/store/store.py CHANGED
@@ -1,25 +1,25 @@
1
- from typing import Type
2
- import os
3
- import platform
1
+ from typing import Type
2
+ import os
4
3
 
5
4
  from .json_connector import JsonStoreConnector
6
5
  from .store_connector import StoreConnector
7
6
 
7
+
8
8
  class Store():
9
- def __init__(self, file_location: str, connector_type: Type[StoreConnector]) -> None :
9
+ def __init__(self, file_location: str, connector_type: Type[StoreConnector]) -> None:
10
10
  self.file_location = file_location
11
- self.connector:StoreConnector = None
11
+ self.connector: StoreConnector = None
12
12
  self._file = None
13
13
  self._connector_tpye = connector_type
14
-
14
+
15
15
  def _get_file_data(self):
16
- if self.connector:
17
- return
16
+ if self.connector:
17
+ return
18
18
 
19
19
  dirname = os.path.dirname(self.file_location)
20
20
  if not os.path.exists(dirname):
21
21
  os.makedirs(dirname)
22
-
22
+
23
23
  if not os.path.exists(self.file_location):
24
24
  with open(self.file_location, "w") as f:
25
25
  self.connector = self._connector_tpye(self._connector_tpye.default_value())
@@ -35,24 +35,29 @@ class Store():
35
35
  def put(self, key, value):
36
36
  self._get_file_data()
37
37
  self.connector.put(key, value)
38
-
38
+
39
39
  def get_path(self):
40
40
  return self.file_location
41
41
 
42
42
  def __enter__(self):
43
43
  self._get_file_data()
44
- return self
44
+ return self
45
45
 
46
- def __exit__(self, type, value, traceback):
46
+ def __exit__(self, type, value, traceback):
47
47
  with open(self.file_location, "w") as f:
48
48
  f.write(self.connector.dump())
49
49
 
50
+
50
51
  class CredStore(Store):
51
52
  def __init__(self) -> None:
52
53
  dir = ".pynt"
53
54
  super().__init__(file_location=os.path.join(os.path.expanduser("~"), dir, "creds.json"),
54
55
  connector_type=JsonStoreConnector)
55
-
56
+
56
57
  def get_access_token(self):
57
58
  return self.get("token")["access_token"]
58
-
59
+
60
+ def get_tokens(self):
61
+ all_tokens = self.get("token")
62
+ token_to_json_string = '{"token":'+str(all_tokens).replace("\'", "\"")+"}"
63
+ return token_to_json_string
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pyntcli
3
- Version: 0.1.72
3
+ Version: 0.1.74
4
4
  Summary: Command line utility to handle all of Pynt's different integrations
5
5
  Author-email: Pynt-io <support@pynt.io>
6
6
  Project-URL: Homepage, https://pynt.io
@@ -0,0 +1,41 @@
1
+ pyntcli/__init__.py,sha256=KewwZnnRMQkstdiLHG6R7ciil5WtDn_QVk-Z392irYc,23
2
+ pyntcli/main.py,sha256=intiqInoRbIF_lE8ilxQBP5aloPAtAvUBdF4k0Rqfxw,4289
3
+ pyntcli/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ pyntcli/analytics/send.py,sha256=cKvMw4HIGJGLip5OMPqTv1AJDlKlc_Uk2Sfcl0e3QLE,2845
5
+ pyntcli/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ pyntcli/auth/login.py,sha256=CosHIB1HHWa3cGjpE4uHNxsi_7SPL-I6Da0zCq3OcmU,5012
7
+ pyntcli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ pyntcli/commands/burp.py,sha256=tbGpKP4NEuEZYSuBxqvLJaC4kRqtv0GO6BpBfPX2DRM,10397
9
+ pyntcli/commands/command.py,sha256=UvJEHv69iQ03R0pN2RCsi3my48xwSMoDBTvcnbg_XzE,9477
10
+ pyntcli/commands/har.py,sha256=Iq0455umKvlcMxcU4l70-NIZh7Wovry3f76u68drmQ4,3654
11
+ pyntcli/commands/id_command.py,sha256=UBEgMIpm4vauTCsKyixltiGUolNg_OfHEJvJ_i5BpJY,943
12
+ pyntcli/commands/listen.py,sha256=ZfzCM8P0TVweC42NCL24_1yK48_NvRER6Vi8_oChaT0,8450
13
+ pyntcli/commands/newman.py,sha256=ctq9cuEH1GnFOhGshAn6eNfyw3rrrLMaeoWIVcf9JQs,4826
14
+ pyntcli/commands/postman.py,sha256=yPE8jBITEhDT7htUaa7r2jxKfHwuSKj9177HGinABCs,4938
15
+ pyntcli/commands/pynt_cmd.py,sha256=KOl9guUtesO2JcMM5nPKKkjnK6F9HV4jHHcoUk4KVhw,2825
16
+ pyntcli/commands/root.py,sha256=GijCi8hqe8sXEo6faWimlCmT8d782yjrw1IWJT5RAMk,3320
17
+ pyntcli/commands/sub_command.py,sha256=GF3-rE_qk2L4jGPFqHLm9SdGINmu3EakhjJTFyWjRms,374
18
+ pyntcli/commands/util.py,sha256=IREZvHYJ7wEth8ujOkk5ZXZ4UrUA7jDv134_UueED4s,2995
19
+ pyntcli/log/__init__.py,sha256=cOGwOYzMoshEbZiiasBGkj6wF0SBu3Jdpl-AuakDesw,19
20
+ pyntcli/log/log.py,sha256=cWCdWmUaAwePwdhYDcgNMEG9d9RM34sGahxBCYEdv2Y,1069
21
+ pyntcli/pynt_docker/__init__.py,sha256=PQIOVxc7XXtMLfEX7ojgwf_Z3mmTllO3ZvzUZTPOxQY,30
22
+ pyntcli/pynt_docker/pynt_container.py,sha256=rMHdTOace-hJjhKbY8u9VxrVG6J5ymfEYiCGBGrIiEI,8332
23
+ pyntcli/store/__init__.py,sha256=xuS9OB21F6B1sUx5XPGxz_6WpG6-KTMbuq50RrZS5OY,29
24
+ pyntcli/store/json_connector.py,sha256=UGs3uORw3iyn0YJ8kzab-veEZToA6d-ByXYuqEleWsA,560
25
+ pyntcli/store/store.py,sha256=Kf4IFCAu0i0DPVGgntrSYUiwz6kmW9HvItKnCT-MosE,1905
26
+ pyntcli/store/store_connector.py,sha256=w4LzcpRZesUZL1f63RmLlWEFRtJ6Y6rcS6PkkGtO4MA,357
27
+ pyntcli/transport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
+ pyntcli/transport/pynt_requests.py,sha256=KiEG3hNcwY7DLIJDCq-7LIPq54yYQcDBhHe3KhpqRTc,1563
29
+ pyntcli/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ pyntcli/ui/progress.py,sha256=RrnO_jJNunoyupylakmWmHOEPw3lh99OHpKBzL6OBiE,1008
31
+ pyntcli/ui/pynt_errors.py,sha256=UAr8OV5EM4zLhfWSmK_qss8nal2Ezo66Dk8ZMvR_RTs,546
32
+ pyntcli/ui/report.py,sha256=W-icPSZrGLOubXgam0LpOvHLl_aZg9Zx9qIkL8Ym5PE,1930
33
+ pyntcli/ui/ui_thread.py,sha256=OVTbiIFMg2KgxAvHf7yy86xGm4RVS2vj_VYZkMi-SRY,4956
34
+ tests/conftest.py,sha256=gToq5K74GtgeGQXjFvXSzMaE6axBYxAzcFG5XJPOXjI,427
35
+ tests/auth/test_login.py,sha256=juYxYZWfNmAuwm-ygGEF5gjzaR9LcimonDr7pN5vgLI,3209
36
+ tests/store/test_cred_store.py,sha256=_7-917EtNC9eKEumO2_lt-7KuDmCwOZFaowCm7DbA_A,254
37
+ pyntcli-0.1.74.dist-info/METADATA,sha256=mEvK3_PCXXcU-hNBhwdEsB5ZHWkf6doTvEtYCeSXZxw,463
38
+ pyntcli-0.1.74.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
39
+ pyntcli-0.1.74.dist-info/entry_points.txt,sha256=kcGmqAxXDttNk2EPRcqunc_LTVp61gzakz0v-GEE2SY,43
40
+ pyntcli-0.1.74.dist-info/top_level.txt,sha256=u9MDStwVHB7UG8PUcODeWCul_NvzL2EzoLvSlgwLHFs,30
41
+ pyntcli-0.1.74.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
tests/auth/test_login.py CHANGED
@@ -10,7 +10,7 @@ import os
10
10
  from cryptography.hazmat.primitives.asymmetric import rsa
11
11
  from cryptography.hazmat.primitives import serialization
12
12
 
13
- from pyntcli.auth.login import Login, Timeout, InvalidTokenInEnvVarsException, is_jwt_expired, should_login, PYNT_CREDENTIALS
13
+ from pyntcli.auth.login import Login, Timeout, InvalidTokenInEnvVarsException, is_jwt_expired, should_login, PYNT_ID
14
14
  from pyntcli.store import CredStore
15
15
 
16
16
 
@@ -22,8 +22,8 @@ class TestLogin():
22
22
  yield
23
23
  finally:
24
24
  pass
25
-
26
- def get_request_url_parameters(self, req: requests.PreparedRequest) :
25
+
26
+ def get_request_url_parameters(self, req: requests.PreparedRequest):
27
27
  u = req.url
28
28
  parsed_url = urlparse(u)
29
29
  return parsed_url.query
@@ -36,7 +36,7 @@ class TestLogin():
36
36
  if self.login_request_cnt < 2:
37
37
  resp.status_code = 404
38
38
  return resp
39
-
39
+
40
40
  resp.status_code = 200
41
41
  resp._content = json.dumps({"token": "testToken"}).encode()
42
42
  return resp
@@ -44,53 +44,51 @@ class TestLogin():
44
44
  def test_login(self, mock_webbrowser, mock_sleep, mock_expanduser):
45
45
  l = Login()
46
46
  self.login_request_cnt = 0
47
- with requests_mock.mock() as m:
47
+ with requests_mock.mock() as m:
48
48
  m.add_matcher(self.poll_matcher)
49
- l.login()
49
+ l.login()
50
50
 
51
51
  assert self.login_request_cnt == 2
52
52
  c = CredStore()
53
53
  assert c.get("token") == {"token": "testToken"}
54
54
 
55
55
  def test_login_timeout(self, mock_webbrowser, mock_sleep, mock_expanduser):
56
- l = Login()
56
+ l = Login()
57
57
  l.login_wait_period = 0
58
58
  self.login_request_cnt = 0
59
59
  with pytest.raises(Timeout):
60
60
  with requests_mock.mock() as m:
61
61
  m.add_matcher(self.poll_matcher)
62
62
  l.get_token_using_request_id("some_id")
63
-
64
-
63
+
65
64
  def test_is_jwt_expired(self):
66
65
 
67
66
  private_key = rsa.generate_private_key(
68
67
  public_exponent=65537,
69
68
  key_size=2048
70
69
  ).private_bytes(encoding=serialization.Encoding.PEM,
71
- format=serialization.PrivateFormat.PKCS8,
70
+ format=serialization.PrivateFormat.PKCS8,
72
71
  encryption_algorithm=serialization.NoEncryption())
73
72
 
74
-
75
73
  token_data = {
76
- "exp": int((datetime.datetime.now() - datetime.timedelta(days=1)).timestamp())
77
- }
74
+ "exp": int((datetime.datetime.now() - datetime.timedelta(days=1)).timestamp())
75
+ }
78
76
 
79
77
  token = jwt.encode(token_data, private_key.decode(), algorithm="RS256").decode("utf-8")
80
78
  assert is_jwt_expired(token) == True
81
79
 
82
80
  token_data = {
83
- "exp": int((datetime.datetime.now() + datetime.timedelta(days=1)).timestamp())
84
- }
81
+ "exp": int((datetime.datetime.now() + datetime.timedelta(days=1)).timestamp())
82
+ }
85
83
 
86
84
  token = jwt.encode(token_data, private_key.decode(), algorithm="RS256").decode("utf-8")
87
85
  assert is_jwt_expired(token) == False
88
86
 
89
87
  def test_login_using_env_vars(self, mocker, mock_expanduser):
90
88
  creds = json.dumps({"token": {"refresh_token": "some data"}})
91
- mocker.patch.dict(os.environ, {PYNT_CREDENTIALS: creds})
92
- assert should_login() == False
93
-
94
- os.environ[PYNT_CREDENTIALS] = "some bad credentials"
89
+ mocker.patch.dict(os.environ, {PYNT_ID: creds})
90
+ assert should_login() == False
91
+
92
+ os.environ[PYNT_ID] = "some bad credentials"
95
93
  with pytest.raises(InvalidTokenInEnvVarsException):
96
94
  should_login()
@@ -1,41 +0,0 @@
1
- pyntcli/__init__.py,sha256=gUdfeW8Q-eHCbw8IWb2lI3qRGa6BpSk5KcikOGNzSdM,23
2
- pyntcli/main.py,sha256=cqratxd_ZJXLsP4xRbF2fmwj3Eo4kQ8WlbrwUtfZQ94,4125
3
- pyntcli/analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- pyntcli/analytics/send.py,sha256=ewNAKnn3KbKwfDuOasgAsSGbUWILLD8rPaXIAlLucnM,2507
5
- pyntcli/auth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- pyntcli/auth/login.py,sha256=WgF5r00bpM4c1__thzD6zCJ6207qxgtT0ixPvD1cEHA,5109
7
- pyntcli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
- pyntcli/commands/burp.py,sha256=pD4MK6m596NaefVayAH4iicexoMgCAeADytE0-Ak7D0,9266
9
- pyntcli/commands/command.py,sha256=Gs8PCk85XzDurnCA66dz-KJNttwIQBZSgFUNZsJf94c,8349
10
- pyntcli/commands/har.py,sha256=jpXZzNXX0nNpUXZR8FiXpMuErsLwRQTR1HNi16OL7Nc,3243
11
- pyntcli/commands/id_command.py,sha256=2J5oEa39uyBMMSCRHzuKh3_11CeUEYi7YLoBk1yuu_I,942
12
- pyntcli/commands/listen.py,sha256=wVhvrRclpJZ5aRd3CWwnfekRXzozG26Hh8tG9HRC_DE,7578
13
- pyntcli/commands/newman.py,sha256=GfLPgOx7Pmx1S6ZI8wJOiSzhxBFn4WuEjN-MWL3mW0Y,4233
14
- pyntcli/commands/postman.py,sha256=5eF14wjdDwJC8AvXjwyuZnlb6JZsPs_QWh5e77LauGA,4928
15
- pyntcli/commands/pynt_cmd.py,sha256=NkzT8X4mI_fhzui_9KdAQXY5AnMGdoQkzDH6pcreLHU,2453
16
- pyntcli/commands/root.py,sha256=4TLH67_n1S4nxmlB2YzyDLZpx2GJLK2rXMEfD3Wze1M,2839
17
- pyntcli/commands/sub_command.py,sha256=GF3-rE_qk2L4jGPFqHLm9SdGINmu3EakhjJTFyWjRms,374
18
- pyntcli/commands/util.py,sha256=IREZvHYJ7wEth8ujOkk5ZXZ4UrUA7jDv134_UueED4s,2995
19
- pyntcli/log/__init__.py,sha256=cOGwOYzMoshEbZiiasBGkj6wF0SBu3Jdpl-AuakDesw,19
20
- pyntcli/log/log.py,sha256=EvqVVh0NwnTNjeiW6Pb5CZ_7FwNwZuVi7IhPodMeN-U,1039
21
- pyntcli/pynt_docker/__init__.py,sha256=PQIOVxc7XXtMLfEX7ojgwf_Z3mmTllO3ZvzUZTPOxQY,30
22
- pyntcli/pynt_docker/pynt_container.py,sha256=MJfd5CigTcEfH2WuGIi_DGFFkfSQwtm_hI0AZmFcdSs,8172
23
- pyntcli/store/__init__.py,sha256=xuS9OB21F6B1sUx5XPGxz_6WpG6-KTMbuq50RrZS5OY,29
24
- pyntcli/store/json_connector.py,sha256=UGs3uORw3iyn0YJ8kzab-veEZToA6d-ByXYuqEleWsA,560
25
- pyntcli/store/store.py,sha256=Fbc7yxjht0EJ89eGF8eMgNQJ3sgYRTPmj2-sWQ5UUPs,1766
26
- pyntcli/store/store_connector.py,sha256=w4LzcpRZesUZL1f63RmLlWEFRtJ6Y6rcS6PkkGtO4MA,357
27
- pyntcli/transport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- pyntcli/transport/pynt_requests.py,sha256=KiEG3hNcwY7DLIJDCq-7LIPq54yYQcDBhHe3KhpqRTc,1563
29
- pyntcli/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- pyntcli/ui/progress.py,sha256=RrnO_jJNunoyupylakmWmHOEPw3lh99OHpKBzL6OBiE,1008
31
- pyntcli/ui/pynt_errors.py,sha256=UAr8OV5EM4zLhfWSmK_qss8nal2Ezo66Dk8ZMvR_RTs,546
32
- pyntcli/ui/report.py,sha256=W-icPSZrGLOubXgam0LpOvHLl_aZg9Zx9qIkL8Ym5PE,1930
33
- pyntcli/ui/ui_thread.py,sha256=OVTbiIFMg2KgxAvHf7yy86xGm4RVS2vj_VYZkMi-SRY,4956
34
- tests/conftest.py,sha256=gToq5K74GtgeGQXjFvXSzMaE6axBYxAzcFG5XJPOXjI,427
35
- tests/auth/test_login.py,sha256=M6JRFTQRZrL6M2-iph_r-aBSQMMiFDncQbVYeObBFYU,3296
36
- tests/store/test_cred_store.py,sha256=_7-917EtNC9eKEumO2_lt-7KuDmCwOZFaowCm7DbA_A,254
37
- pyntcli-0.1.72.dist-info/METADATA,sha256=8ZRMPVKmEOaic-NVq4hAVWZY2MPIQ3DSs_7GZ0B936E,463
38
- pyntcli-0.1.72.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
39
- pyntcli-0.1.72.dist-info/entry_points.txt,sha256=kcGmqAxXDttNk2EPRcqunc_LTVp61gzakz0v-GEE2SY,43
40
- pyntcli-0.1.72.dist-info/top_level.txt,sha256=u9MDStwVHB7UG8PUcODeWCul_NvzL2EzoLvSlgwLHFs,30
41
- pyntcli-0.1.72.dist-info/RECORD,,