diff --git a/src/dev_lua.erl b/src/dev_lua.erl index 0e0483251..dc38ebca4 100644 --- a/src/dev_lua.erl +++ b/src/dev_lua.erl @@ -517,6 +517,20 @@ simple_invocation_test() -> }, ?assertEqual(2, hb_ao:get(<<"assoctable/b">>, Base, #{})). +ao_unset_reference_bug_test() -> + {ok, Script} = file:read_file("test/test.lua"), + Base = #{ + <<"device">> => <<"lua@5.3a">>, + <<"module">> => #{ + <<"content-type">> => <<"application/lua">>, + <<"body">> => Script + }, + <<"parameters">> => [] + }, + {ok, Res} = hb_ao:resolve(Base, <<"ao_unset_reference_bug">>, #{}), + ?assertEqual(not_found, hb_ao:get(<<"shared/wallet1">>, Res, #{})), + ?assertEqual(<<"__ao-unset__">>, hb_ao:get(<<"targeted/wallet1">>, Res, #{})). + post_invocation_message_validation_test() -> {ok, Script} = file:read_file("test/test.lua"), Opts = #{ priv_wallet => hb:wallet() }, diff --git a/test/test.lua b/test/test.lua index cae364585..dd2719572 100644 --- a/test/test.lua +++ b/test/test.lua @@ -160,4 +160,19 @@ function inc(base, req, opts) base.count = base.count or 0 base.count = base.count + 1 return base +end + +function ao_unset_reference_bug(base, req, opts) + local Routes = { ["wallet1"] = "__ao-unset__" } + local shared = { routes = Routes } + Routes["wallet1"] = nil + + local targeted = { routes = {["wallet1"] = "__ao-unset__"} } + + local outbox = { + shared = shared.routes, + targeted = targeted.routes + } + + return outbox end \ No newline at end of file