-
Notifications
You must be signed in to change notification settings - Fork 5.5k
/
serializable_test.rb
49 lines (39 loc) · 1.68 KB
/
serializable_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
require 'test_helper'
class SerializableTest < ActiveSupport::TestCase
setup do
@user = create_user
end
test 'should not include unsafe keys on XML' do
assert_match(/email/, @user.to_xml)
assert_no_match(/confirmation-token/, @user.to_xml)
end
test 'should not include unsafe keys on XML even if a new except is provided' do
assert_no_match(/email/, @user.to_xml(:except => :email))
assert_no_match(/confirmation-token/, @user.to_xml(:except => :email))
end
test 'should include unsafe keys on XML if a force_except is provided' do
assert_no_match(/<email/, @user.to_xml(:force_except => :email))
assert_match(/confirmation-token/, @user.to_xml(:force_except => :email))
end
test 'should not include unsafe keys on JSON' do
keys = from_json().keys.select{ |key| !key.include?("id") }
assert_equal %w(created_at email facebook_token updated_at username), keys.sort
end
test 'should not include unsafe keys on JSON even if a new except is provided' do
assert_no_key "email", from_json(:except => :email)
assert_no_key "confirmation_token", from_json(:except => :email)
end
test 'should include unsafe keys on JSON if a force_except is provided' do
assert_no_key "email", from_json(:force_except => :email)
assert_key "confirmation_token", from_json(:force_except => :email)
end
def assert_key(key, subject)
assert subject.key?(key), "Expected #{subject.inspect} to have key #{key.inspect}"
end
def assert_no_key(key, subject)
assert !subject.key?(key), "Expected #{subject.inspect} to not have key #{key.inspect}"
end
def from_json(options=nil)
ActiveSupport::JSON.decode(@user.to_json(options))["user"]
end
end