summaryrefslogtreecommitdiff
path: root/test/test_parser.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_parser.rb')
-rwxr-xr-xtest/test_parser.rb52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/test_parser.rb b/test/test_parser.rb
index 7b692a5..2ff4db5 100755
--- a/test/test_parser.rb
+++ b/test/test_parser.rb
@@ -122,4 +122,56 @@ class TestParser < Test::Unit::TestCase
Plist.parse_xml('<string>Fish &amp; Chips</tring>')
end
end
+
+ def test_marshal_is_enabled_by_default_meaning_data_is_passed_to_marshal_load
+ plist = <<-PLIST.strip
+ <plist version="1.0">
+ <dict>
+ <key>Token</key>
+ <data>
+ BANUb2tlbg==
+ </data>
+ </dict>
+ </plist>
+ PLIST
+
+ data = Plist.parse_xml(plist)
+ # "BANUb2tlbg==" is interpreted as `true` when base64 decoded and passed to Marshal.load
+ assert_equal(true, data["Token"])
+ end
+
+ def test_data_unrecognized_by_marshal_load_is_returned_as_raw_binary
+ jpeg = File.read(File.expand_path("../assets/example_data.jpg", __FILE__))
+ plist = <<-PLIST.strip
+ <plist version="1.0">
+ <dict>
+ <key>Token</key>
+ <data>
+ #{Base64.encode64(jpeg)}
+ </data>
+ </dict>
+ </plist>
+ PLIST
+
+ data = Plist.parse_xml(plist)
+ assert_kind_of(StringIO, data["Token"])
+ assert_equal(jpeg, data["Token"].read)
+ end
+
+ def test_marshal_can_be_disabled_so_that_data_is_always_returned_as_raw_binary
+ plist = <<-PLIST.strip
+ <plist version="1.0">
+ <dict>
+ <key>Token</key>
+ <data>
+ BANUb2tlbg==
+ </data>
+ </dict>
+ </plist>
+ PLIST
+
+ data = Plist.parse_xml(plist, marshal: false)
+ assert_kind_of(StringIO, data["Token"])
+ assert_equal("\x04\x03Token", data["Token"].read)
+ end
end