bson 4.1.0 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47d29b1cc3748faca5e80d2fd891f3afef42a63f
4
- data.tar.gz: c9cc5e18df9aa9bb2dc5ed6e007648adf05ac845
3
+ metadata.gz: 31e82028a4dbdd0ee59ad09a19bc8d1dac7c3fcd
4
+ data.tar.gz: 9773de56e955e3b0545804de618692bcd9bd74b7
5
5
  SHA512:
6
- metadata.gz: 433674c25e326d02c357f2b2fad8861c63ee4d3de379bd6310ea0da84c208c433d3fe8f5366a97bf6c731ab174b27d17ace2fde7046f248bcf301182059ebf3c
7
- data.tar.gz: 05a96d4fd7446788c97a8d2cb0254432e46d6d66c7e32d9e17ba345fdb1c6f18dbe088cb76920bfa8446436ea66d4b1d106ee27e29084ec5887b39c6e1029214
6
+ metadata.gz: 8fb4637938de67b08963c79e02aef0e32050e27229c17cd09bb1d0c69072f528f861fdd0759b46ec9ed70353ebcc6f55e32530b30e8cba5f76445338ab8f0903
7
+ data.tar.gz: cdac6674f943e86cfe45e5742a9a361a3cc83ba5222ca82c5bf4b5ac50c7a43f8e70aa2804c63d233c6c2c2461627f116c63aee9c6c37e7a26ce9c67dcccf282
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/bson/array.rb CHANGED
@@ -40,13 +40,13 @@ module BSON
40
40
  # @see http://bsonspec.org/#/specification
41
41
  #
42
42
  # @since 2.0.0
43
- def to_bson(buffer = ByteBuffer.new)
43
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
44
44
  position = buffer.length
45
45
  buffer.put_int32(0)
46
46
  each_with_index do |value, index|
47
47
  buffer.put_byte(value.bson_type)
48
48
  buffer.put_cstring(index.to_s)
49
- value.to_bson(buffer)
49
+ value.to_bson(buffer, validating_keys)
50
50
  end
51
51
  buffer.put_byte(NULL_BYTE)
52
52
  buffer.replace_int32(position, buffer.length - position)
data/lib/bson/binary.rb CHANGED
@@ -129,7 +129,7 @@ module BSON
129
129
  # @see http://bsonspec.org/#/specification
130
130
  #
131
131
  # @since 2.0.0
132
- def to_bson(buffer = ByteBuffer.new)
132
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
133
133
  position = buffer.length
134
134
  buffer.put_int32(0)
135
135
  buffer.put_byte(SUBTYPES[type])
data/lib/bson/code.rb CHANGED
@@ -81,7 +81,7 @@ module BSON
81
81
  # @see http://bsonspec.org/#/specification
82
82
  #
83
83
  # @since 2.0.0
84
- def to_bson(buffer = ByteBuffer.new)
84
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
85
85
  buffer.put_string(javascript) # @todo: was formerly to_bson_string
86
86
  end
87
87
 
@@ -87,7 +87,7 @@ module BSON
87
87
  # @see http://bsonspec.org/#/specification
88
88
  #
89
89
  # @since 2.0.0
90
- def to_bson(buffer = ByteBuffer.new)
90
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
91
91
  position = buffer.length
92
92
  buffer.put_int32(0)
93
93
  buffer.put_string(javascript)
data/lib/bson/date.rb CHANGED
@@ -34,7 +34,7 @@ module BSON
34
34
  # @see http://bsonspec.org/#/specification
35
35
  #
36
36
  # @since 2.1.0
37
- def to_bson(buffer = ByteBuffer.new)
37
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
38
38
  ::Time.utc(year, month, day).to_bson(buffer)
39
39
  end
40
40
 
@@ -34,7 +34,7 @@ module BSON
34
34
  # @see http://bsonspec.org/#/specification
35
35
  #
36
36
  # @since 2.1.0
37
- def to_bson(buffer = ByteBuffer.new)
37
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
38
38
  to_time.to_bson(buffer)
39
39
  end
40
40
  end
@@ -49,7 +49,7 @@ module BSON
49
49
  # @see http://bsonspec.org/#/specification
50
50
  #
51
51
  # @since 2.0.0
52
- def to_bson(buffer = ByteBuffer.new)
52
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
53
53
  buffer.put_byte(FALSE_BYTE)
54
54
  end
55
55
  end
data/lib/bson/float.rb CHANGED
@@ -42,7 +42,7 @@ module BSON
42
42
  # @see http://bsonspec.org/#/specification
43
43
  #
44
44
  # @since 2.0.0
45
- def to_bson(buffer = ByteBuffer.new)
45
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
46
46
  buffer.put_double(self)
47
47
  end
48
48
 
data/lib/bson/hash.rb CHANGED
@@ -43,7 +43,7 @@ module BSON
43
43
  each do |field, value|
44
44
  buffer.put_byte(value.bson_type)
45
45
  buffer.put_cstring(field.to_bson_key(validating_keys))
46
- value.to_bson(buffer)
46
+ value.to_bson(buffer, validating_keys)
47
47
  end
48
48
  buffer.put_byte(NULL_BYTE)
49
49
  buffer.replace_int32(position, buffer.length - position)
data/lib/bson/integer.rb CHANGED
@@ -103,7 +103,7 @@ module BSON
103
103
  # @see http://bsonspec.org/#/specification
104
104
  #
105
105
  # @since 2.0.0
106
- def to_bson(buffer = ByteBuffer.new)
106
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
107
107
  if bson_int32?
108
108
  buffer.put_int32(self)
109
109
  elsif bson_int64?
@@ -168,7 +168,7 @@ module BSON
168
168
  # @see http://bsonspec.org/#/specification
169
169
  #
170
170
  # @since 2.0.0
171
- def to_bson(buffer = ByteBuffer.new)
171
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
172
172
  buffer.put_bytes(generate_data)
173
173
  end
174
174
 
data/lib/bson/regexp.rb CHANGED
@@ -84,7 +84,7 @@ module BSON
84
84
  # @see http://bsonspec.org/#/specification
85
85
  #
86
86
  # @since 2.0.0
87
- def to_bson(buffer = ByteBuffer.new)
87
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
88
88
  buffer.put_cstring(source)
89
89
  buffer.put_cstring(bson_options)
90
90
  end
@@ -45,7 +45,7 @@ module BSON
45
45
  # @return [ String ] An empty string.
46
46
  #
47
47
  # @since 2.0.0
48
- def to_bson(buffer = ByteBuffer.new)
48
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
49
49
  buffer
50
50
  end
51
51
 
data/lib/bson/string.rb CHANGED
@@ -45,7 +45,7 @@ module BSON
45
45
  # @see http://bsonspec.org/#/specification
46
46
  #
47
47
  # @since 2.0.0
48
- def to_bson(buffer = ByteBuffer.new)
48
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
49
49
  buffer.put_string(self)
50
50
  end
51
51
 
data/lib/bson/symbol.rb CHANGED
@@ -56,7 +56,7 @@ module BSON
56
56
  # @see http://bsonspec.org/#/specification
57
57
  #
58
58
  # @since 2.0.0
59
- def to_bson(buffer = ByteBuffer.new)
59
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
60
60
  to_s.to_bson(buffer)
61
61
  end
62
62
 
data/lib/bson/time.rb CHANGED
@@ -37,7 +37,7 @@ module BSON
37
37
  # @see http://bsonspec.org/#/specification
38
38
  #
39
39
  # @since 2.0.0
40
- def to_bson(buffer = ByteBuffer.new)
40
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
41
41
  buffer.put_int64((to_i * 1000) + (usec / 1000))
42
42
  end
43
43
 
@@ -87,7 +87,7 @@ module BSON
87
87
  # @see http://bsonspec.org/#/specification
88
88
  #
89
89
  # @since 2.0.0
90
- def to_bson(buffer = ByteBuffer.new)
90
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
91
91
  buffer.put_int32(increment)
92
92
  buffer.put_int32(seconds)
93
93
  end
@@ -49,7 +49,7 @@ module BSON
49
49
  # @see http://bsonspec.org/#/specification
50
50
  #
51
51
  # @since 2.0.0
52
- def to_bson(buffer = ByteBuffer.new)
52
+ def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
53
53
  buffer.put_byte(TRUE_BYTE)
54
54
  end
55
55
  end
data/lib/bson/version.rb CHANGED
@@ -13,5 +13,5 @@
13
13
  # limitations under the License.
14
14
 
15
15
  module BSON
16
- VERSION = "4.1.0".freeze
16
+ VERSION = "4.1.1".freeze
17
17
  end
@@ -27,6 +27,111 @@ describe Array do
27
27
  it_behaves_like "a bson element"
28
28
  it_behaves_like "a serializable bson element"
29
29
  it_behaves_like "a deserializable bson element"
30
+
31
+ context "when the array has documents containing invalid keys" do
32
+
33
+ let(:obj) do
34
+ [ { "$testing" => "value" } ]
35
+ end
36
+
37
+ context "when validating keys" do
38
+
39
+ context "when validating globally" do
40
+
41
+ before do
42
+ BSON::Config.validating_keys = true
43
+ end
44
+
45
+ after do
46
+ BSON::Config.validating_keys = false
47
+ end
48
+
49
+ it "raises an error" do
50
+ expect {
51
+ obj.to_bson
52
+ }.to raise_error(BSON::String::IllegalKey)
53
+ end
54
+ end
55
+
56
+ context "when validating locally" do
57
+
58
+ it "raises an error" do
59
+ expect {
60
+ obj.to_bson(BSON::ByteBuffer.new, true)
61
+ }.to raise_error(BSON::String::IllegalKey)
62
+ end
63
+
64
+ context "when serializing different types" do
65
+
66
+ let(:obj) do
67
+ [ BSON::Binary.new("testing", :generic),
68
+ BSON::Code.new("this.value = 5"),
69
+ BSON::CodeWithScope.new("this.value = val", "test"),
70
+ Date.new(2012, 1, 1),
71
+ Time.utc(2012, 1, 1),
72
+ DateTime.new(2012, 1, 1, 0, 0, 0),
73
+ false,
74
+ 1.2332,
75
+ Integer::MAX_32BIT - 1,
76
+ BSON::ObjectId.new,
77
+ /\W+/i,
78
+ 'a string',
79
+ :a_symbol,
80
+ Time.utc(2012, 1, 1, 0, 0, 0),
81
+ BSON::Timestamp.new(1, 10),
82
+ true,
83
+ { "$testing" => "value" }
84
+ ]
85
+ end
86
+
87
+ it "raises an error" do
88
+ expect {
89
+ obj.to_bson(BSON::ByteBuffer.new, true)
90
+ }.to raise_error(BSON::String::IllegalKey)
91
+ end
92
+ end
93
+ end
94
+ end
95
+
96
+ context "when not validating keys" do
97
+
98
+ let(:bson) do
99
+ BSON::Document["0", { "$testing" => "value" }].to_bson.to_s
100
+ end
101
+
102
+ it "serializes the hash" do
103
+ expect(obj.to_bson.to_s).to eq(bson)
104
+ end
105
+
106
+ context "when serializing different types" do
107
+
108
+ let(:obj) do
109
+ [ BSON::Binary.new("testing", :generic),
110
+ BSON::Code.new("this.value = 5"),
111
+ BSON::CodeWithScope.new("this.value = val", "test"),
112
+ Date.new(2012, 1, 1),
113
+ Time.utc(2012, 1, 1),
114
+ DateTime.new(2012, 1, 1, 0, 0, 0),
115
+ false,
116
+ 1.2332,
117
+ Integer::MAX_32BIT - 1,
118
+ BSON::ObjectId.new,
119
+ /\W+/i,
120
+ 'a string',
121
+ :a_symbol,
122
+ Time.utc(2012, 1, 1, 0, 0, 0),
123
+ BSON::Timestamp.new(1, 10),
124
+ true,
125
+ { "$testing" => "value" }
126
+ ]
127
+ end
128
+
129
+ it "serializes the hash" do
130
+ expect(obj.to_bson.length).to eq(251)
131
+ end
132
+ end
133
+ end
134
+ end
30
135
  end
31
136
 
32
137
  describe "#to_bson_normalized_value" do
@@ -75,6 +75,19 @@ describe Hash do
75
75
  obj.to_bson
76
76
  }.to raise_error(BSON::String::IllegalKey)
77
77
  end
78
+
79
+ context "when the hash contains an array of documents containing invalid keys" do
80
+
81
+ let(:obj) do
82
+ { "array" => [{ "$testing" => "value" }] }
83
+ end
84
+
85
+ it "raises an error" do
86
+ expect {
87
+ obj.to_bson
88
+ }.to raise_error(BSON::String::IllegalKey)
89
+ end
90
+ end
78
91
  end
79
92
 
80
93
  context "when validating locally" do
@@ -84,6 +97,19 @@ describe Hash do
84
97
  obj.to_bson(BSON::ByteBuffer.new, true)
85
98
  }.to raise_error(BSON::String::IllegalKey)
86
99
  end
100
+
101
+ context "when the hash contains an array of documents containing invalid keys" do
102
+
103
+ let(:obj) do
104
+ { "array" => [{ "$testing" => "value" }] }
105
+ end
106
+
107
+ it "raises an error" do
108
+ expect {
109
+ obj.to_bson(BSON::ByteBuffer.new, true)
110
+ }.to raise_error(BSON::String::IllegalKey)
111
+ end
112
+ end
87
113
  end
88
114
  end
89
115
 
@@ -97,6 +123,22 @@ describe Hash do
97
123
  it "serializes the hash" do
98
124
  expect(obj.to_bson.to_s).to eq(bson)
99
125
  end
126
+
127
+ context "when the hash contains an array of documents containing invalid keys" do
128
+
129
+ let(:obj) do
130
+ { "array" => [{ "$testing" => "value" }] }
131
+ end
132
+
133
+ let(:bson) do
134
+ "#{45.to_bson.to_s}#{Array::BSON_TYPE}array#{BSON::NULL_BYTE}" +
135
+ "#{[{ "$testing" => "value" }].to_bson.to_s}#{BSON::NULL_BYTE}"
136
+ end
137
+
138
+ it "serializes the hash" do
139
+ expect(obj.to_bson.to_s).to eq(bson)
140
+ end
141
+ end
100
142
  end
101
143
  end
102
144
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bson
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.0
4
+ version: 4.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Brock
@@ -34,7 +34,7 @@ cert_chain:
34
34
  yVPbgNJA2D/PnLe8ZFMhgJf+VIA1V4oybP/o+9aqlghTtNfYHJpRCAluUiaywwXl
35
35
  KzD4mmIBpxtbWrWB3hx7tsVJmWx5zgO9aDAfvWnXfoo=
36
36
  -----END CERTIFICATE-----
37
- date: 2016-04-14 00:00:00.000000000 Z
37
+ date: 2016-04-27 00:00:00.000000000 Z
38
38
  dependencies: []
39
39
  description: A full featured BSON specification implementation, in Ruby
40
40
  email:
@@ -139,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  version: 1.3.6
140
140
  requirements: []
141
141
  rubyforge_project: bson
142
- rubygems_version: 2.4.5.1
142
+ rubygems_version: 2.5.1
143
143
  signing_key:
144
144
  specification_version: 4
145
145
  summary: Ruby Implementation of the BSON specification
metadata.gz.sig CHANGED
Binary file