11import pytest
22from pathlib import Path
3-
4- from polywrap_client import PolywrapClient
5- from polywrap_core import Uri , InvokerOptions , InterfaceImplementations , Env , UriWrapper
3+ import pytest
4+ from polywrap_client import PolywrapClient , PolywrapClientConfig
5+ from polywrap_manifest import deserialize_wrap_manifest
6+ from polywrap_core import Uri , InvokerOptions , UriWrapper
67from polywrap_uri_resolvers import BaseUriResolver , SimpleFileReader , StaticResolver
78from polywrap_result import Result , Ok , Err
8- from polywrap_client .client import PolywrapClientConfig
99from polywrap_wasm import WRAP_MANIFEST_PATH , WRAP_MODULE_PATH , IFileReader , WasmWrapper
1010
1111@pytest .fixture
@@ -51,10 +51,12 @@ async def test_invoke(
5151
5252 assert result .unwrap () == args ["arg" ]
5353
54+ manifest = deserialize_wrap_manifest (simple_wrap_manifest ).unwrap ()
55+
5456 wrapper = WasmWrapper (
5557 file_reader = simple_file_reader ,
5658 wasm_module = simple_wrap_module ,
57- manifest = simple_wrap_manifest
59+ manifest = manifest
5860 )
5961 uri_wrapper = UriWrapper (uri = Uri ("ens/wrapper.eth" ), wrapper = wrapper )
6062 resolver = StaticResolver .from_list ([uri_wrapper ]).unwrap ()
@@ -83,7 +85,7 @@ async def test_subinvoke():
8385 },
8486 )
8587
86- client = PolywrapClient (config = PolywrapClientConfig (envs = [], resolver = uri_resolver ))
88+ client = PolywrapClient (config = PolywrapClientConfig (resolver = uri_resolver ))
8789 uri = Uri (
8890 f'fs/{ Path (__file__ ).parent .joinpath ("cases" , "simple-subinvoke" , "invoke" ).absolute ()} '
8991 )
@@ -100,19 +102,15 @@ async def test_interface_implementation():
100102 redirects = {},
101103 )
102104
105+ interface_uri = Uri ("ens/interface.eth" )
103106 impl_uri = Uri (
104107 f'fs/{ Path (__file__ ).parent .joinpath ("cases" , "simple-interface" , "implementation" ).absolute ()} '
105108 )
106109
107110 client = PolywrapClient (
108111 config = PolywrapClientConfig (
109- envs = [],
110112 resolver = uri_resolver ,
111- interfaces = [
112- InterfaceImplementations (
113- interface = Uri ("ens/interface.eth" ), implementations = [impl_uri ]
114- )
115- ],
113+ interfaces = {interface_uri : [impl_uri ]}
116114 )
117115 )
118116 uri = Uri (
@@ -123,10 +121,26 @@ async def test_interface_implementation():
123121 uri = uri , method = "moduleMethod" , args = args , encode_result = False
124122 )
125123 result = await client .invoke (options )
126-
124+ assert client . get_implementations ( interface_uri ) == Ok ([ impl_uri ])
127125 assert result .unwrap () == {"str" : "hello" , "uint8" : 2 }
128126
129127
128+ def test_get_env_by_uri ():
129+ uri_resolver = BaseUriResolver (
130+ file_reader = SimpleFileReader (),
131+ redirects = {},
132+ )
133+ uri = Uri (f'fs/{ Path (__file__ ).parent .joinpath ("cases" , "simple-env" ).absolute ()} ' )
134+ env = {"externalArray" : [1 , 2 , 3 ], "externalString" : "hello" }
135+
136+ client = PolywrapClient (
137+ config = PolywrapClientConfig (
138+ envs = {uri : env },
139+ resolver = uri_resolver ,
140+ )
141+ )
142+ assert client .get_env_by_uri (uri ) == env
143+
130144async def test_env ():
131145 uri_resolver = BaseUriResolver (
132146 file_reader = SimpleFileReader (),
@@ -138,13 +152,14 @@ async def test_env():
138152
139153 client = PolywrapClient (
140154 config = PolywrapClientConfig (
141- envs = [ Env ( uri = uri , env = env )] ,
155+ envs = { uri : env } ,
142156 resolver = uri_resolver ,
143157 )
144158 )
145159 options = InvokerOptions (
146- uri = uri , method = "externalEnvMethod" , args = {}, encode_result = False
160+ uri = uri , method = "externalEnvMethod" , args = {}, encode_result = False ,
147161 )
162+
148163 result = await client .invoke (options )
149164
150165 assert result .unwrap () == env
0 commit comments