Skip to content

Commit a339f54

Browse files
committed
feat: set_redirects, remove_redirects, add many redirects, plus their tests
1 parent 572901c commit a339f54

3 files changed

Lines changed: 100 additions & 3 deletions

File tree

packages/polywrap-client-config-builder/polywrap_client_config_builder/client_config_builder.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,25 @@ def set_uri_redirect(self, uri_from: Uri, uri_to: Uri):
179179
Sets an uri redirect, from one uri to another
180180
If there was a redirect previously listed, it's changed to the new one
181181
"""
182-
self.config.redirects = {uri_from : uri_to}
182+
self.config.redirects[uri_from] = uri_to
183+
return self
184+
185+
def remove_uri_redirect(self, uri_from: Uri):
186+
"""
187+
Removes an uri redirect, from one uri to another
188+
"""
189+
self.config.redirects.pop(uri_from)
190+
return self
191+
192+
def set_uri_redirects(self, redirects: List[Dict[Uri,Uri]]):
193+
"""
194+
Sets various Uri redirects from a list simultaneously
195+
"""
196+
count = 0
197+
for redir in redirects:
198+
for k,v in redir.items():
199+
self.set_uri_redirect(k,v)
200+
count += 1
183201
return self
184202

185203

packages/polywrap-client-config-builder/tests/conftest.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,12 @@ def env_varS():
2727

2828
@fixture
2929
def env_uriX():
30-
return Uri("wrap://ens/eth.plugin.one")
30+
return Uri("wrap://ens/eth.plugin.one/X")
3131

3232
@fixture
3333
def env_uriY():
34-
return Uri("wrap://ipfs/filecoin.wrapper.two")
34+
return Uri("wrap://ipfs/filecoin.wrapper.two/Y")
35+
36+
@fixture
37+
def env_uriZ():
38+
return Uri("wrap://pinlist/dev.wrappers.io/Z")

packages/polywrap-client-config-builder/tests/test_client_config_builder.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,81 @@ def test_client_config_builder_add_resolver():
187187
resolvers: List[UriResolverLike] = [resolverA, resolverB, resolverC, resolverD]
188188
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=resolvers, wrappers=[], packages=[], redirects={}))
189189

190+
# REDIRECTS
191+
192+
def test_client_config_builder_sets_uri_redirects(env_uriX, env_uriY, env_uriZ):
193+
# set a first redirect
194+
ccb = ClientConfigBuilder()
195+
ccb = ccb.set_uri_redirect(env_uriX, env_uriY)
196+
client_config: ClientConfig = ccb.build()
197+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[],
198+
redirects={env_uriX: env_uriY}))
199+
200+
# add a second redirect
201+
ccb = ccb.set_uri_redirect(env_uriY, env_uriZ)
202+
client_config: ClientConfig = ccb.build()
203+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[],
204+
redirects={env_uriX: env_uriY, env_uriY: env_uriZ}))
205+
206+
# update the first redirect
207+
ccb.set_uri_redirect(env_uriX, env_uriZ)
208+
client_config: ClientConfig = ccb.build()
209+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[],
210+
redirects={env_uriX: env_uriZ, env_uriY: env_uriZ}))
211+
212+
def test_client_config_builder_removes_uri_redirects(env_uriX, env_uriY, env_uriZ):
213+
ccb = ClientConfigBuilder()
214+
ccb = ccb.set_uri_redirect(env_uriX, env_uriY)
215+
ccb = ccb.set_uri_redirect(env_uriY, env_uriZ)
216+
client_config: ClientConfig = ccb.build()
217+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[],
218+
redirects={env_uriX: env_uriY, env_uriY: env_uriZ}))
219+
220+
ccb = ccb.remove_uri_redirect(env_uriX)
221+
client_config: ClientConfig = ccb.build()
222+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[],
223+
redirects={env_uriY: env_uriZ}))
224+
225+
226+
227+
def test_client_config_builder_sets_many_uri_redirects(env_uriX,env_uriY, env_uriZ):
228+
229+
# set a first redirect
230+
ccb = ClientConfigBuilder()
231+
ccb = ccb.set_uri_redirects([{
232+
env_uriX: env_uriY,
233+
}] )
234+
client_config: ClientConfig = ccb.build()
235+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[], redirects={env_uriX: env_uriY}))
236+
237+
# updates that first redirect to a new value
238+
ccb = ccb.set_uri_redirects([{
239+
env_uriX: env_uriZ,
240+
}] )
241+
client_config: ClientConfig = ccb.build()
242+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[], redirects={env_uriX: env_uriZ}))
243+
244+
# add a second redirect
245+
ccb = ccb.set_uri_redirects([{
246+
env_uriY: env_uriX,
247+
}] )
248+
client_config: ClientConfig = ccb.build()
249+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[], redirects={env_uriX: env_uriZ, env_uriY: env_uriX}))
250+
251+
# add a third redirect and update the first redirect
252+
ccb = ccb.set_uri_redirects([{
253+
env_uriX: env_uriY,
254+
env_uriZ: env_uriY,
255+
}] )
256+
client_config: ClientConfig = ccb.build()
257+
assert asdict(client_config) == asdict(ClientConfig(envs={}, interfaces={}, resolver=[], wrappers=[], packages=[],
258+
redirects={
259+
env_uriX: env_uriY,
260+
env_uriY: env_uriX,
261+
env_uriZ: env_uriY
262+
}))
263+
264+
190265
# GENERIC ADD FUNCTION
191266

192267
def test_client_config_builder_generic_add(env_varA,env_uriX, env_uriY):

0 commit comments

Comments
 (0)