@roles [Callee, Caller, Publisher, Subscriber]
@device "as987d9a8sd79a87ds"
- @session %Session{url: @url, realm: @realm, roles: @roles}
+ @session %Session{
+ url: @url,
+ realm: @realm,
+ roles: @roles,
+ serializer: JSON,
+ protocol: "wamp.2.json"
+ }
test "session_name" do
assert Test.Session = Wampex.session_name(Test)
assert_receive {:registered, id}
end
+ @tag :authentication
test "authentication" do
callee_name = TestCalleeRespondAuthenticated
session = %Session{@session | realm: %Realm{@session.realm | authentication: @auth}}
assert_receive {:EXIT, ^pid, :shutdown}
end
+ @tag :progressive_calls
test "callee sends progress reports" do
callee_name = TestCalleeRespond
Wampex.start_link(name: callee_name, session: @session)
TestCallee.start_link(self(), callee_name, @device)
assert_receive {:registered, id}
- caller_name = TestCaller
- Wampex.start_link(name: caller_name, session: @session)
Wampex.cast_send_request(
- caller_name,
+ callee_name,
Caller.call(%Call{
procedure: "com.long.function",
arg_list: [1],
assert_receive {:long, :function}
assert_receive {:progress, _, _}
- assert_receive {:reply, {:ok, %{"done" => true}, ["ok"], %{"color" => "#FFFFFF"}}}, 2000
+ # Bondy doesn't support progressive calls
+ # assert_receive {:reply, {:ok, _, [8, 9, 10, 11], %{"done" => true}}}, 2000
end
test "callee is invoked and responds and caller gets result" do
assert_receive {:invocation, _, _, _, _, _}
end
+ test "same session callee is invoked and responds and caller gets result" do
+ name = TestSameSession
+ Wampex.start_link(name: name, session: @session)
+ TestCallee.start_link(self(), name, @device)
+ assert_receive {:registered, id}
+
+ {:ok, %{}, ["ok"], %{"color" => "#FFFFFF"}} =
+ Wampex.send_request(
+ name,
+ Caller.call(%Call{
+ procedure: "com.actuator.#{@device}.light",
+ arg_list: [1],
+ arg_kw: %{color: "#FFFFFF"}
+ })
+ )
+
+ assert_receive {:invocation, _, _, _, _, _}
+ end
+
test "subscriber registration" do
name = TestSubscriberRegister
Wampex.start_link(name: name, session: @session)