exposable_attributes 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,3 @@
1
1
  module ExposableAttributes
2
- VERSION = "0.0.1".freeze
2
+ VERSION = "0.0.2"
3
3
  end
@@ -1,8 +1,68 @@
1
1
  require 'test_helper'
2
2
 
3
+ # base
4
+ class User < ActiveRecord::Base
5
+ end
6
+
7
+ class User1 < User
8
+ exposable_attributes :xml, :except => [:encrypted_password]
9
+ exposable_attributes :json, :only => [:login]
10
+ end
11
+
12
+ class User2 < User
13
+ exposable_attributes :id, :login
14
+ end
15
+
3
16
  class ExposableAttributesTest < ActiveSupport::TestCase
4
- test "the truth" do
5
- assert true
17
+
18
+ setup_db
19
+
20
+ test "Four users should be created after db setup" do
21
+ assert_equal 4, User.count
22
+ end
23
+
24
+ test "User1#to_json should not expose anything except login" do
25
+ json = User1.first.to_json
26
+ assert_match /login/, json
27
+
28
+ assert_no_match /id/, json
29
+ assert_no_match /salt/, json
30
+ assert_no_match /encrypted.password/, json
31
+ end
32
+
33
+ test "User1#to_xml should not expose encrypted_password" do
34
+ xml = User1.first.to_xml
35
+
36
+ assert_no_match /encrypted.password/, xml
37
+
38
+ assert_match /id/, xml
39
+ assert_match /login/, xml
40
+ assert_match /salt/, xml
41
+ end
42
+
43
+
44
+ test "User2#to_xml and to_json should expose id and login only" do
45
+ xml = User2.first.to_xml
46
+ json = User2.last.to_json
47
+
48
+ for serialized in [xml, json] do
49
+ assert_match /id/, serialized
50
+ assert_match /login/, serialized
51
+ assert_no_match /salt/, serialized
52
+ assert_no_match /encrypted.password/, serialized
53
+ end
54
+ end
55
+
56
+ test "Ensure that User#to_xml and User#to_json are not affected" do
57
+ xml = User.first.to_xml
58
+ json = User.last.to_json
59
+
60
+ for serialized in [xml, json] do
61
+ assert_match /id/, serialized
62
+ assert_match /login/, serialized
63
+ assert_match /salt/, serialized
64
+ assert_match /encrypted.password/, serialized
65
+ end
6
66
  end
7
67
 
8
68
  end
data/test/test_helper.rb CHANGED
@@ -4,3 +4,24 @@ require 'active_support'
4
4
  require 'active_support/test_case'
5
5
  require 'active_record'
6
6
  require 'active_record/fixtures'
7
+
8
+ require File.join(File.dirname(__FILE__), '../rails/init')
9
+
10
+ ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
11
+
12
+ def setup_db
13
+ ActiveRecord::Schema.define(:version => 1) do
14
+ create_table :users do |t|
15
+ t.string :login
16
+ t.string :encrypted_password
17
+ t.string :salt
18
+ end
19
+ end
20
+
21
+ 4.times do |i|
22
+ User.create!(:login => "anonymous-#{i}",
23
+ :encrypted_password => "password-#{i}",
24
+ :salt => "#{i ^ 65534}")
25
+ end
26
+
27
+ end
metadata CHANGED
@@ -5,16 +5,17 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 1
9
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Andrey Nikolaev
13
+ - Maxim Filatov
13
14
  autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-05-18 00:00:00 +04:00
18
+ date: 2010-06-08 00:00:00 +04:00
18
19
  default_executable:
19
20
  dependencies: []
20
21