RUBY-74 raise InvalidDocument for any unrecognized types
This commit is contained in:
parent
1b189336a6
commit
e013618a8f
@ -369,6 +369,9 @@ static int write_element_allow_id(VALUE key, VALUE value, VALUE extra, int allow
|
|||||||
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4);
|
SAFE_WRITE_AT_POS(buffer, length_location, (const char*)&obj_length, 4);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
buffer_free(buffer);
|
||||||
|
rb_raise(InvalidDocument, "Unsupported type for BSON (%d)", TYPE(value));
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
case T_DATA:
|
case T_DATA:
|
||||||
{
|
{
|
||||||
@ -421,7 +424,7 @@ static int write_element_allow_id(VALUE key, VALUE value, VALUE extra, int allow
|
|||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
buffer_free(buffer);
|
buffer_free(buffer);
|
||||||
rb_raise(rb_eTypeError, "no c encoder for this type yet (%d)", TYPE(value));
|
rb_raise(InvalidDocument, "Unsupported type for BSON (%d)", TYPE(value));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -554,7 +554,7 @@ class BSON_RUBY
|
|||||||
when Symbol
|
when Symbol
|
||||||
SYMBOL
|
SYMBOL
|
||||||
else
|
else
|
||||||
raise "Unknown type of object: #{o.class.name}"
|
raise InvalidDocument, "Unknown type of object: #{o.class.name}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -335,4 +335,15 @@ class BSONTest < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_invalid_object
|
||||||
|
o = Object.new
|
||||||
|
assert_raise InvalidDocument do
|
||||||
|
BSON.serialize({:foo => o})
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_raise InvalidDocument do
|
||||||
|
BSON.serialize({:foo => Date.today})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user