test/vcard_test.rb in vcard-0.2.13 vs test/vcard_test.rb in vcard-0.2.14
- old
+ new
@@ -167,13 +167,51 @@
assert_equal('fax', card[ "fax" ])
assert_equal('fax', card[ "fax", 'bar' ])
end
def test_bad
- # FIXME: this should THROW, it's badly encoded!
+ Vcard::configuration.raise_on_invalid_line = true
assert_raises(::Vcard::InvalidEncodingError) do
Vcard::Vcard.decode("BEGIN:VCARD\nVERSION:3.0\nKEYencoding=b:this could be \nmy certificate\n\nEND:VCARD\n")
end
+ end
+
+ def test_not_raise_error_if_configured_to_ignore
+ Vcard::configuration.raise_on_invalid_line = false
+ Vcard::configuration.ignore_invalid_vcards = false
+ assert_nothing_raised do
+ Vcard::Vcard.decode("BEGIN:VCARD\nVERSION:3.0\nKEYencoding=b:this could be \nmy certificate\n\nEND:VCARD\n")
+ end
+ end
+
+ def test_ignore_vcards_with_invalid_fields
+ Vcard::configuration.raise_on_invalid_line = false
+ Vcard::configuration.ignore_invalid_vcards = true
+ src = <<'EOF'
+BEGIN:VCARD
+VERSION:3.0
+KEYencoding=b:this could be
+my certificate
+EMAIL:valid@field.value
+END:VCARD
+BEGIN:VCARD
+VERSION:3.0
+EMAIL:valid@field.value
+END:VCARD
+EOF
+
+ cards = Vcard::Vcard.decode(src)
+ assert_equal 1, cards.size
+ end
+
+ def test_ignore_only_invalid_fields
+ Vcard::configuration.raise_on_invalid_line = false
+ Vcard::configuration.ignore_invalid_vcards = false
+ email = 'test@example.com'
+ cards = Vcard::Vcard.decode("BEGIN:VCARD\nVERSION:3.0\nKEYencoding=b:this could be \nmy certificate\nEMAIL:#{email}\n\nEND:VCARD\n")
+ assert_equal email, cards.first.email
+ # [BEGIN, VERSION, EMAIL, END].size == 4
+ assert_equal 4, cards.first.fields.size
end
def test_create
card = Vcard::Vcard.create
key = Vcard::DirectoryInfo.decode("key;type=x509;encoding=B:dGhpcyBjb3VsZCBiZSAKbXkgY2VydGlmaWNhdGUK\n")['key']