From: Christopher Date: Wed, 25 Mar 2020 20:15:59 +0000 (-0500) Subject: enforce string packing X-Git-Url: http://git.entropealabs.com/?a=commitdiff_plain;h=92648dd6f1a4a9ed24b10eec3533d29108b31852;p=wampex.git enforce string packing --- diff --git a/lib/serializers/message_pack.ex b/lib/serializers/message_pack.ex index e048a12..107441a 100644 --- a/lib/serializers/message_pack.ex +++ b/lib/serializers/message_pack.ex @@ -5,16 +5,16 @@ defmodule Wampex.Serializers.MessagePack do @impl true def data_type, do: :binary @impl true - def serialize!(data), do: :msgpack.pack(data, []) + def serialize!(data), do: :msgpack.pack(data, [{:pack_str, :from_binary}]) @impl true - def serialize(data), do: {:ok, :msgpack.pack(data, [])} + def serialize(data), do: {:ok, :msgpack.pack(data, [{:pack_str, :from_binary}])} @impl true def deserialize!(data) do - {:ok, res} = :msgpack.unpack(data, [{:known_atoms, []}, {:unpack_str, :as_binary}]) + {:ok, res} = :msgpack.unpack(data, [{:validate_string, true}, {:unpack_str, :as_binary}]) res end @impl true def deserialize(data), - do: :msgpack.unpack(data, [{:known_atoms, []}, {:unpack_str, :as_binary}]) + do: :msgpack.unpack(data, [{:validate_string, true}, {:unpack_str, :as_binary}]) end diff --git a/test/wampex_test.exs b/test/wampex_test.exs index eaac5d4..b480f4b 100644 --- a/test/wampex_test.exs +++ b/test/wampex_test.exs @@ -188,10 +188,17 @@ defmodule WampexTest do test "MessagePack Serializer" do assert :binary = MessagePack.data_type() - assert "\x93\x05\xC4\t123456789\x80" = MessagePack.serialize!([5, "123456789", %{}]) - assert {:ok, "\x93\x05\xC4\t123456789\x80"} = MessagePack.serialize([5, "123456789", %{}]) - assert [5, "123456789", %{}] = MessagePack.deserialize!("\x93\x05\xC4\t123456789\x80") - assert {:ok, [5, "123456789", %{}]} = MessagePack.deserialize("\x93\x05\xC4\t123456789\x80") + + val = [ + 5, + "this is a string/binary", + "123456789", + [%{"test" => "ok"}, 45, 54, 56, 77], + %{"key" => "true", "value" => 34} + ] + + s = MessagePack.serialize!(val) + assert ^val = MessagePack.deserialize!(s) end test "JSON Serializer" do