1+ import pytest
12from pathlib import Path
23import pytest
3- from polywrap_client import PolywrapClient
4- from polywrap_core import Uri , InvokerOptions
5- from polywrap_uri_resolvers import BaseUriResolver , SimpleFileReader
6- from polywrap_result import Ok
7- from polywrap_client .client import PolywrapClientConfig
8-
9-
10- async def test_invoke ():
4+ from polywrap_client import PolywrapClient , PolywrapClientConfig
5+ from polywrap_manifest import deserialize_wrap_manifest
6+ from polywrap_core import Uri , InvokerOptions , UriWrapper
7+ from polywrap_uri_resolvers import BaseUriResolver , SimpleFileReader , StaticResolver
8+ from polywrap_result import Result , Ok , Err
9+ from polywrap_wasm import WRAP_MANIFEST_PATH , WRAP_MODULE_PATH , IFileReader , WasmWrapper
10+
11+ @pytest .fixture
12+ def simple_wrap_module ():
13+ wrap_path = Path (__file__ ).parent / "cases" / "simple-invoke" / "wrap.wasm"
14+ with open (wrap_path , "rb" ) as f :
15+ yield f .read ()
16+
17+
18+ @pytest .fixture
19+ def simple_wrap_manifest ():
20+ wrap_path = Path (__file__ ).parent / "cases" / "simple-invoke" / "wrap.info"
21+ with open (wrap_path , "rb" ) as f :
22+ yield f .read ()
23+
24+ @pytest .fixture
25+ def simple_file_reader (simple_wrap_module : bytes , simple_wrap_manifest : bytes ):
26+ class FileReader (IFileReader ):
27+ async def read_file (self , file_path : str ) -> Result [bytes ]:
28+ if file_path == WRAP_MODULE_PATH :
29+ return Ok (simple_wrap_module )
30+ if file_path == WRAP_MANIFEST_PATH :
31+ return Ok (simple_wrap_manifest )
32+ return Err .from_str (f"FileNotFound: { file_path } " )
33+
34+ yield FileReader ()
35+
36+ @pytest .mark .asyncio
37+ async def test_invoke (
38+ simple_file_reader : IFileReader ,
39+ simple_wrap_module : bytes ,
40+ simple_wrap_manifest : bytes
41+ ):
1142 client = PolywrapClient ()
1243 uri = Uri (
1344 f'fs/{ Path (__file__ ).parent .joinpath ("cases" , "simple-invoke" ).absolute ()} '
@@ -20,6 +51,29 @@ async def test_invoke():
2051
2152 assert result .unwrap () == args ["arg" ]
2253
54+ manifest = deserialize_wrap_manifest (simple_wrap_manifest ).unwrap ()
55+
56+ wrapper = WasmWrapper (
57+ file_reader = simple_file_reader ,
58+ wasm_module = simple_wrap_module ,
59+ manifest = manifest
60+ )
61+ uri_wrapper = UriWrapper (uri = Uri ("ens/wrapper.eth" ), wrapper = wrapper )
62+ resolver = StaticResolver .from_list ([uri_wrapper ]).unwrap ()
63+
64+ config = PolywrapClientConfig (resolver = resolver )
65+ client = PolywrapClient (config = config )
66+
67+ args = {"arg" : "hello polywrap" }
68+ options = InvokerOptions (
69+ uri = Uri ("ens/wrapper.eth" ),
70+ method = "simpleMethod" ,
71+ args = args ,
72+ encode_result = False
73+ )
74+ result = await client .invoke (options )
75+
76+ assert result .unwrap () == args ["arg" ]
2377
2478async def test_subinvoke ():
2579 uri_resolver = BaseUriResolver (
@@ -108,4 +162,4 @@ async def test_env():
108162
109163 result = await client .invoke (options )
110164
111- assert result .unwrap () == env
165+ assert result .unwrap () == env
0 commit comments