]> Entropealabs - wampex.git/commitdiff
enforce string packing
authorChristopher <chris@entropealabs.com>
Wed, 25 Mar 2020 20:15:59 +0000 (15:15 -0500)
committerChristopher <chris@entropealabs.com>
Wed, 25 Mar 2020 20:15:59 +0000 (15:15 -0500)
lib/serializers/message_pack.ex
test/wampex_test.exs

index e048a12b60ca6bffeb274dd47547ed28c9a42ecc..107441a9beeaa7a8dd56d95039e879936156cb1b 100644 (file)
@@ -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
index eaac5d434459f7f2ce257bc94e6a51b9feedc2c2..b480f4bf294f5daedca9c60a3a6e1195536b435a 100644 (file)
@@ -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