facemock 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +17 -1
- data/facemock.gemspec +1 -0
- data/lib/facemock.rb +23 -1
- data/lib/facemock/auth_hash.rb +8 -0
- data/lib/facemock/config.rb +4 -3
- data/lib/facemock/database.rb +13 -1
- data/lib/facemock/database/application.rb +2 -3
- data/lib/facemock/database/authorization_code.rb +18 -0
- data/lib/facemock/database/permission.rb +0 -3
- data/lib/facemock/database/table.rb +23 -11
- data/lib/facemock/database/user.rb +3 -3
- data/lib/facemock/errors.rb +1 -0
- data/lib/facemock/fb_graph/application.rb +1 -3
- data/lib/facemock/fb_graph/application/user.rb +1 -3
- data/lib/facemock/version.rb +1 -1
- data/spec/facemock/auth_hash_spec.rb +7 -0
- data/spec/facemock/config_spec.rb +0 -4
- data/spec/facemock/database/application_spec.rb +39 -6
- data/spec/facemock/database/authorization_code.rb +76 -0
- data/spec/facemock/database/permission_spec.rb +17 -7
- data/spec/facemock/database/{tables_spec.rb → table_spec.rb} +36 -5
- data/spec/facemock/database/user_spec.rb +47 -16
- data/spec/facemock/database_spec.rb +8 -17
- data/spec/facemock/fb_graph/application/test_users_spec.rb +5 -7
- data/spec/facemock/fb_graph/application/user_spec.rb +6 -15
- data/spec/facemock/fb_graph/application_spec.rb +0 -10
- data/spec/facemock/fb_graph_spec.rb +0 -13
- data/spec/facemock_spec.rb +52 -17
- data/spec/support/application_create_helper.rb +1 -1
- data/spec/support/tables_helper.rb +12 -0
- metadata +28 -6
data/README.md
CHANGED
@@ -112,7 +112,7 @@ for specified gem
|
|
112
112
|
Facemock::FbGraph.on
|
113
113
|
Facemock::Config.load_users("./test_users.yml")
|
114
114
|
|
115
|
-
yaml file see
|
115
|
+
yaml file see below.
|
116
116
|
|
117
117
|
---
|
118
118
|
- :app_id: '000000000000001'
|
@@ -134,6 +134,22 @@ yaml file see belo.
|
|
134
134
|
:email: test_user_three@example.com
|
135
135
|
:password: testpass
|
136
136
|
|
137
|
+
### AuthHash
|
138
|
+
|
139
|
+
require 'facemock'
|
140
|
+
|
141
|
+
app = Facemock::Database::Application.create!
|
142
|
+
user = Facemock::Database::User.craete!(application_id: app.id)
|
143
|
+
auth_hash = Facemock.auth_hash(user.access_token)
|
144
|
+
|
145
|
+
# auth_hash == { "provider" => "facebook",
|
146
|
+
# "uid" => 100007315962084,
|
147
|
+
# "info" => { "name" => "c6fyxii0u2" },
|
148
|
+
# "credentials" => { "token" => "d4a88140f1...",
|
149
|
+
# "expires_at" => 2014-11-02 09:09:51 +0900 },
|
150
|
+
# "extra" => { "raw_info" => { "id" => 100007315962084,
|
151
|
+
# "name" => "c6fyxii0u2" } } }
|
152
|
+
|
137
153
|
### Exception
|
138
154
|
|
139
155
|
require 'facemock'
|
data/facemock.gemspec
CHANGED
data/lib/facemock.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require "facemock/version"
|
2
|
-
require "facemock/fb_graph"
|
3
2
|
require "facemock/config"
|
3
|
+
require "facemock/fb_graph"
|
4
|
+
require "facemock/database"
|
5
|
+
require "facemock/errors"
|
6
|
+
require "facemock/auth_hash"
|
4
7
|
|
5
8
|
module Facemock
|
6
9
|
extend self
|
@@ -16,4 +19,23 @@ module Facemock
|
|
16
19
|
def on?
|
17
20
|
FbGraph == Facemock::FbGraph
|
18
21
|
end
|
22
|
+
|
23
|
+
def auth_hash(access_token=nil)
|
24
|
+
if access_token.kind_of?(String) && access_token.size > 0
|
25
|
+
user = Facemock::Database::User.find_by_access_token(access_token)
|
26
|
+
if user
|
27
|
+
Facemock::AuthHash.new({
|
28
|
+
provider: "facebook",
|
29
|
+
uid: user.id,
|
30
|
+
info: { name: user.name },
|
31
|
+
credentials: { token: access_token, expires_at: Time.now + 60.days },
|
32
|
+
extra: { raw_info: { id: user.id, name: user.name } }
|
33
|
+
})
|
34
|
+
else
|
35
|
+
Facemock::AuthHash.new
|
36
|
+
end
|
37
|
+
else
|
38
|
+
Facemock::AuthHash.new
|
39
|
+
end
|
40
|
+
end
|
19
41
|
end
|
data/lib/facemock/config.rb
CHANGED
@@ -38,10 +38,11 @@ module Facemock
|
|
38
38
|
raise Facemock::Errors::IncorrectDataFormat.new "users format is incorrect" unless validate_users(users)
|
39
39
|
|
40
40
|
# Create application and user record
|
41
|
-
Facemock::Database::Application.
|
42
|
-
app = Facemock::FbGraph::Application.new(app_id, secret: app_secret)
|
41
|
+
app = Facemock::Database::Application.create!({ id: app_id, secret: app_secret })
|
43
42
|
users.each do |options|
|
44
|
-
|
43
|
+
user = Facemock::Database::User.new(options)
|
44
|
+
user.application_id = app.id
|
45
|
+
user.save!
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
data/lib/facemock/database.rb
CHANGED
@@ -3,13 +3,14 @@ require 'facemock/database/table'
|
|
3
3
|
require 'facemock/database/application'
|
4
4
|
require 'facemock/database/user'
|
5
5
|
require 'facemock/database/permission'
|
6
|
+
require 'facemock/database/authorization_code'
|
6
7
|
|
7
8
|
module Facemock
|
8
9
|
class Database
|
9
10
|
ADAPTER = "sqlite3"
|
10
11
|
DB_DIRECTORY = File.expand_path("../../../db", __FILE__)
|
11
12
|
DEFAULT_DB_NAME = "facemock"
|
12
|
-
TABLE_NAMES = [:applications, :users, :permissions]
|
13
|
+
TABLE_NAMES = [:applications, :users, :permissions, :authorization_codes]
|
13
14
|
|
14
15
|
attr_reader :name
|
15
16
|
attr_reader :connection
|
@@ -117,5 +118,16 @@ module Facemock
|
|
117
118
|
);
|
118
119
|
SQL
|
119
120
|
end
|
121
|
+
|
122
|
+
def create_authorization_codes_table
|
123
|
+
@connection.execute <<-SQL
|
124
|
+
CREATE TABLE authorization_codes (
|
125
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
126
|
+
string TEXT NOT NULL,
|
127
|
+
user_id INTEGER NOT NULL,
|
128
|
+
created_at DATETIME NOT NULL
|
129
|
+
);
|
130
|
+
SQL
|
131
|
+
end
|
120
132
|
end
|
121
133
|
end
|
@@ -1,13 +1,12 @@
|
|
1
|
-
require 'facemock/database'
|
2
1
|
require 'facemock/database/table'
|
3
|
-
require '
|
4
|
-
require 'hashie'
|
2
|
+
require 'facemock/database/user'
|
5
3
|
|
6
4
|
module Facemock
|
7
5
|
class Database
|
8
6
|
class Application < Table
|
9
7
|
TABLE_NAME = :applications
|
10
8
|
COLUMN_NAMES = [:id, :secret, :created_at]
|
9
|
+
CHILDREN = [ User ]
|
11
10
|
|
12
11
|
# WANT : DBに登録済みの値と重複しないようにする(id, secret)
|
13
12
|
def initialize(options={})
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'facemock/database/table'
|
2
|
+
|
3
|
+
module Facemock
|
4
|
+
class Database
|
5
|
+
class AuthorizationCode < Table
|
6
|
+
TABLE_NAME = :authorization_codes
|
7
|
+
COLUMN_NAMES = [:id, :string, :user_id, :created_at]
|
8
|
+
|
9
|
+
def initialize(options={})
|
10
|
+
opts = Hashie::Mash.new(options)
|
11
|
+
@id = opts.id
|
12
|
+
@string = opts.string || rand(36**255).to_s(36)
|
13
|
+
@user_id = opts.user_id
|
14
|
+
@created_at = opts.created_at
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -10,6 +10,7 @@ module Facemock
|
|
10
10
|
# * initialize()
|
11
11
|
TABLE_NAME = :tables
|
12
12
|
COLUMN_NAMES = [:id, :text, :active, :number, :created_at]
|
13
|
+
CHILDREN = []
|
13
14
|
|
14
15
|
def initialize(options={})
|
15
16
|
opts = Hashie::Mash.new(options)
|
@@ -27,15 +28,18 @@ module Facemock
|
|
27
28
|
def update_attributes!(options)
|
28
29
|
# カラムに含まれるかどうかの確認。なければNoMethodError
|
29
30
|
options.each_key {|key| self.send(key) }
|
30
|
-
|
31
|
-
update!(options)
|
32
|
-
else
|
33
|
-
insert!(options)
|
34
|
-
end
|
31
|
+
persisted? ? update!(options) : insert!(options)
|
35
32
|
end
|
36
33
|
|
37
34
|
def destroy
|
38
35
|
raise unless persisted?
|
36
|
+
self.class.children.each do |klass|
|
37
|
+
klass_last_name = self.class.name.split("::").last.downcase
|
38
|
+
find_method_name = "find_all_by_#{klass_last_name}_id"
|
39
|
+
objects = klass.send(find_method_name, self.id)
|
40
|
+
objects.each{|object| object.destroy }
|
41
|
+
end
|
42
|
+
|
39
43
|
execute "DELETE FROM #{table_name} WHERE ID = #{self.id};"
|
40
44
|
self
|
41
45
|
end
|
@@ -70,6 +74,12 @@ module Facemock
|
|
70
74
|
end
|
71
75
|
end
|
72
76
|
|
77
|
+
def self.create!(options={})
|
78
|
+
instance = self.new(options)
|
79
|
+
instance.save!
|
80
|
+
instance
|
81
|
+
end
|
82
|
+
|
73
83
|
def self.all
|
74
84
|
records = execute "SELECT * FROM #{table_name};"
|
75
85
|
records_to_objects(records)
|
@@ -95,15 +105,13 @@ module Facemock
|
|
95
105
|
end
|
96
106
|
|
97
107
|
def self.method_missing(name, *args)
|
98
|
-
if name =~ /^find_by_(.+)/ || name =~ /^find_all_by_(.+)/
|
99
|
-
column_name = $1
|
108
|
+
if ((name =~ /^find_by_(.+)/ || name =~ /^find_all_by_(.+)/) &&
|
109
|
+
(column_name = $1) && column_names.include?(column_name.to_sym))
|
110
|
+
raise ArgumentError, "wrong number of arguments (#{args.size} for 1)" unless args.size == 1
|
111
|
+
define_find_method(name, column_name) ? send(name, args.first) : super
|
100
112
|
else
|
101
113
|
super
|
102
114
|
end
|
103
|
-
super unless column_names.include?(column_name.to_sym)
|
104
|
-
raise ArgumentError, "wrong number of arguments (#{args.size} for 1)" unless args.size == 1
|
105
|
-
super unless define_find_method(name, column_name)
|
106
|
-
send(name, args.first)
|
107
115
|
end
|
108
116
|
|
109
117
|
def table_name
|
@@ -126,6 +134,10 @@ module Facemock
|
|
126
134
|
self::COLUMN_NAMES
|
127
135
|
end
|
128
136
|
|
137
|
+
def self.children
|
138
|
+
self::CHILDREN
|
139
|
+
end
|
140
|
+
|
129
141
|
def self.column_type(column_name)
|
130
142
|
return nil unless column_names.include?(column_name.to_s.to_sym)
|
131
143
|
table_info.send(column_name).type
|
@@ -1,13 +1,13 @@
|
|
1
|
-
require 'facemock/database'
|
2
1
|
require 'facemock/database/table'
|
3
|
-
require '
|
4
|
-
require '
|
2
|
+
require 'facemock/database/permission'
|
3
|
+
require 'facemock/database/authorization_code'
|
5
4
|
|
6
5
|
module Facemock
|
7
6
|
class Database
|
8
7
|
class User < Table
|
9
8
|
TABLE_NAME = :users
|
10
9
|
COLUMN_NAMES = [:id, :name, :email, :password, :installed, :access_token, :application_id, :created_at]
|
10
|
+
CHILDREN = [ Permission, AuthorizationCode ]
|
11
11
|
|
12
12
|
def initialize(options={})
|
13
13
|
opts = Hashie::Mash.new(options)
|
data/lib/facemock/errors.rb
CHANGED
data/lib/facemock/version.rb
CHANGED
@@ -5,10 +5,6 @@ describe Facemock::Config do
|
|
5
5
|
let(:db_name) { ".test" }
|
6
6
|
let(:ymlfile) { "testdata.yml" }
|
7
7
|
|
8
|
-
it 'should have a database module' do
|
9
|
-
expect(Facemock::Database).to be_truthy
|
10
|
-
end
|
11
|
-
|
12
8
|
before { stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name) }
|
13
9
|
|
14
10
|
describe '#default_database' do
|
@@ -1,13 +1,20 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Facemock::Database::Application do
|
4
|
-
|
5
|
-
let(:column_names) { [:id, :secret, :created_at] }
|
4
|
+
include TableHelper
|
6
5
|
|
7
|
-
let(:
|
8
|
-
|
9
|
-
let(:
|
10
|
-
let(:
|
6
|
+
let(:db_name) { ".test" }
|
7
|
+
|
8
|
+
let(:table_name) { :applications }
|
9
|
+
let(:column_names) { [ :id, :secret, :created_at ] }
|
10
|
+
let(:children) { [ Facemock::Database::User ] }
|
11
|
+
|
12
|
+
let(:id) { 1 }
|
13
|
+
let(:secret) { "test_secret" }
|
14
|
+
let(:created_at) { Time.now }
|
15
|
+
let(:options) { { id: id, secret: secret, created_at: created_at } }
|
16
|
+
|
17
|
+
after { remove_dynamically_defined_all_method }
|
11
18
|
|
12
19
|
describe '::TABLE_NAME' do
|
13
20
|
subject { Facemock::Database::Application::TABLE_NAME }
|
@@ -19,6 +26,11 @@ describe Facemock::Database::Application do
|
|
19
26
|
it { is_expected.to eq column_names }
|
20
27
|
end
|
21
28
|
|
29
|
+
describe '::CHILDREN' do
|
30
|
+
subject { Facemock::Database::Application::CHILDREN }
|
31
|
+
it { is_expected.to eq children }
|
32
|
+
end
|
33
|
+
|
22
34
|
describe '#initialize' do
|
23
35
|
context 'without option' do
|
24
36
|
subject { Facemock::Database::Application.new }
|
@@ -70,4 +82,25 @@ describe Facemock::Database::Application do
|
|
70
82
|
end
|
71
83
|
end
|
72
84
|
end
|
85
|
+
|
86
|
+
describe 'destroy' do
|
87
|
+
before do
|
88
|
+
stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name)
|
89
|
+
@database = Facemock::Database.new
|
90
|
+
end
|
91
|
+
after { @database.drop }
|
92
|
+
|
93
|
+
context 'when has user' do
|
94
|
+
before do
|
95
|
+
@application = Facemock::Database::Application.create!
|
96
|
+
Facemock::Database::User.create!(application_id: @application.id)
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'should delete permissions' do
|
100
|
+
@application.destroy
|
101
|
+
users = Facemock::Database::User.find_all_by_application_id(@application.id)
|
102
|
+
expect(users).to be_empty
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
73
106
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Facemock::Database::AuthorizationCode do
|
4
|
+
include TableHelper
|
5
|
+
|
6
|
+
let(:table_name) { :authorization_codes }
|
7
|
+
let(:column_names) { [ :id, :string, :user_id, :created_at ] }
|
8
|
+
let(:children) { [] }
|
9
|
+
|
10
|
+
let(:id) { 1 }
|
11
|
+
let(:string) { "test_code" }
|
12
|
+
let(:user_id) { 1 }
|
13
|
+
let(:created_at) { Time.now }
|
14
|
+
let(:options) { { id: id, string: string, user_id: user_id, created_at: created_at } }
|
15
|
+
|
16
|
+
after { remove_dynamically_defined_all_method }
|
17
|
+
|
18
|
+
describe '::TABLE_NAME' do
|
19
|
+
subject { Facemock::Database::AuthorizationCode::TABLE_NAME }
|
20
|
+
it { is_expected.to eq table_name }
|
21
|
+
end
|
22
|
+
|
23
|
+
describe '::COLUMN_NAMES' do
|
24
|
+
subject { Facemock::Database::AuthorizationCode::COLUMN_NAMES }
|
25
|
+
it { is_expected.to eq column_names }
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '::CHILDREN' do
|
29
|
+
subject { Facemock::Database::AuthorizationCode::CHILDREN }
|
30
|
+
it { is_expected.to eq children }
|
31
|
+
end
|
32
|
+
|
33
|
+
describe '#initialize' do
|
34
|
+
context 'without option' do
|
35
|
+
subject { Facemock::Database::AuthorizationCode.new }
|
36
|
+
it { is_expected.to be_kind_of Facemock::Database::AuthorizationCode }
|
37
|
+
|
38
|
+
context 'then attributes' do
|
39
|
+
it 'should be nil except string' do
|
40
|
+
column_names.each do |column_name|
|
41
|
+
value = Facemock::Database::AuthorizationCode.new.send(column_name)
|
42
|
+
if column_name == :string
|
43
|
+
expect(value).not_to be_nil
|
44
|
+
else
|
45
|
+
expect(value).to be_nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'then string' do
|
52
|
+
it 'should be random string' do
|
53
|
+
string1 = Facemock::Database::AuthorizationCode.new.string
|
54
|
+
string2 = Facemock::Database::AuthorizationCode.new.string
|
55
|
+
expect(string1).to be_kind_of String
|
56
|
+
expect(string1.size).to be < 256
|
57
|
+
expect(string1).not_to eq string2
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'with all options' do
|
63
|
+
subject { Facemock::Database::AuthorizationCode.new(options) }
|
64
|
+
it { is_expected.to be_kind_of Facemock::Database::AuthorizationCode }
|
65
|
+
|
66
|
+
context 'then attributes' do
|
67
|
+
it 'should set specified value by option' do
|
68
|
+
column_names.each do |column_name|
|
69
|
+
value = Facemock::Database::AuthorizationCode.new(options).send(column_name)
|
70
|
+
expect(value).to eq options[column_name]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,14 +1,19 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Facemock::Database::Permission do
|
4
|
-
|
5
|
-
let(:column_names) { [ :id, :name, :user_id, :created_at ] }
|
4
|
+
include TableHelper
|
6
5
|
|
7
|
-
let(:
|
8
|
-
let(:
|
9
|
-
let(:
|
10
|
-
|
11
|
-
let(:
|
6
|
+
let(:table_name) { :permissions }
|
7
|
+
let(:column_names) { [ :id, :name, :user_id, :created_at ] }
|
8
|
+
let(:children) { [] }
|
9
|
+
|
10
|
+
let(:id) { 1 }
|
11
|
+
let(:name) { "read_stream" }
|
12
|
+
let(:user_id) { 1 }
|
13
|
+
let(:created_at) { Time.now }
|
14
|
+
let(:options) { { id: id, name: name, user_id: user_id, created_at: created_at } }
|
15
|
+
|
16
|
+
after { remove_dynamically_defined_all_method }
|
12
17
|
|
13
18
|
describe '::TABLE_NAME' do
|
14
19
|
subject { Facemock::Database::Permission::TABLE_NAME }
|
@@ -20,6 +25,11 @@ describe Facemock::Database::Permission do
|
|
20
25
|
it { is_expected.to eq column_names }
|
21
26
|
end
|
22
27
|
|
28
|
+
describe '::CHILDREN' do
|
29
|
+
subject { Facemock::Database::Permission::CHILDREN }
|
30
|
+
it { is_expected.to eq children }
|
31
|
+
end
|
32
|
+
|
23
33
|
describe '#initialize' do
|
24
34
|
context 'without option' do
|
25
35
|
subject { Facemock::Database::Permission.new }
|
@@ -3,9 +3,10 @@ require 'spec_helper'
|
|
3
3
|
describe Facemock::Database::Table do
|
4
4
|
include TableHelper
|
5
5
|
|
6
|
-
let(:db_name)
|
7
|
-
let(:table_name)
|
8
|
-
let(:column_names)
|
6
|
+
let(:db_name) { ".test" }
|
7
|
+
let(:table_name) { :tables }
|
8
|
+
let(:column_names) { [ :id, :text, :active, :number, :created_at ] }
|
9
|
+
let(:children) { [] }
|
9
10
|
|
10
11
|
before do
|
11
12
|
stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name)
|
@@ -14,8 +15,7 @@ describe Facemock::Database::Table do
|
|
14
15
|
|
15
16
|
after do
|
16
17
|
Facemock::Database.new.drop
|
17
|
-
|
18
|
-
remove_dynamically_defined_instance_method(Facemock::Database::Table)
|
18
|
+
remove_dynamically_defined_all_method
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '::TABLE_NAME' do
|
@@ -28,6 +28,11 @@ describe Facemock::Database::Table do
|
|
28
28
|
it { is_expected.to eq column_names }
|
29
29
|
end
|
30
30
|
|
31
|
+
describe '::CHILDREN' do
|
32
|
+
subject { Facemock::Database::Table::CHILDREN }
|
33
|
+
it { is_expected.to eq children }
|
34
|
+
end
|
35
|
+
|
31
36
|
describe '#initialize' do
|
32
37
|
context 'without option' do
|
33
38
|
it 'should have accessor of column' do
|
@@ -185,6 +190,32 @@ describe Facemock::Database::Table do
|
|
185
190
|
end
|
186
191
|
end
|
187
192
|
|
193
|
+
describe '#create!' do
|
194
|
+
context 'without option' do
|
195
|
+
subject { lambda { Facemock::Database::Table.create! } }
|
196
|
+
it { is_expected.to raise_error Facemock::Errors::ColumnTypeNotNull }
|
197
|
+
end
|
198
|
+
|
199
|
+
context 'with options that cloumns are not null' do
|
200
|
+
before do
|
201
|
+
@options = { id: 1, text: "test", active: true, number: 0, created_at: Time.now }
|
202
|
+
end
|
203
|
+
|
204
|
+
it 'should new and save and return saved object' do
|
205
|
+
table = Facemock::Database::Table.create!(@options)
|
206
|
+
expect(table).to be_kind_of(Facemock::Database::Table)
|
207
|
+
column_names.each do |column_name|
|
208
|
+
value = table.send(column_name)
|
209
|
+
if column_name == :created_at
|
210
|
+
expect(value).to be_kind_of Time
|
211
|
+
else
|
212
|
+
expect(value).to eq @options[column_name]
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
188
219
|
describe '#update_attributes!' do
|
189
220
|
before { @table = Facemock::Database::Table.new({text: "test", number: 1}) }
|
190
221
|
|
@@ -3,16 +3,18 @@ require 'spec_helper'
|
|
3
3
|
describe Facemock::Database::User do
|
4
4
|
include TableHelper
|
5
5
|
|
6
|
-
let(:db_name)
|
7
|
-
let(:table_name)
|
8
|
-
let(:column_names)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
6
|
+
let(:db_name) { ".test" }
|
7
|
+
let(:table_name) { :users }
|
8
|
+
let(:column_names) { [ :id,
|
9
|
+
:name,
|
10
|
+
:email,
|
11
|
+
:password,
|
12
|
+
:installed,
|
13
|
+
:access_token,
|
14
|
+
:application_id,
|
15
|
+
:created_at ] }
|
16
|
+
let(:children) { [ Facemock::Database::Permission,
|
17
|
+
Facemock::Database::AuthorizationCode ] }
|
16
18
|
|
17
19
|
let(:id) { 1 }
|
18
20
|
let(:name) { "test user" }
|
@@ -21,7 +23,7 @@ describe Facemock::Database::User do
|
|
21
23
|
let(:installed) { true }
|
22
24
|
let(:access_token) { "test_token" }
|
23
25
|
let(:application_id) { 1 }
|
24
|
-
let(:created_at)
|
26
|
+
let(:created_at) { Time.now }
|
25
27
|
let(:options) { { id: id,
|
26
28
|
name: name,
|
27
29
|
email: email,
|
@@ -31,10 +33,7 @@ describe Facemock::Database::User do
|
|
31
33
|
application_id: application_id,
|
32
34
|
created_at: created_at } }
|
33
35
|
|
34
|
-
after
|
35
|
-
remove_dynamically_defined_class_method(Facemock::Database::User)
|
36
|
-
remove_dynamically_defined_instance_method(Facemock::Database::User)
|
37
|
-
end
|
36
|
+
after { remove_dynamically_defined_all_method }
|
38
37
|
|
39
38
|
describe '::TABLE_NAME' do
|
40
39
|
subject { Facemock::Database::User::TABLE_NAME }
|
@@ -46,6 +45,11 @@ describe Facemock::Database::User do
|
|
46
45
|
it { is_expected.to eq column_names }
|
47
46
|
end
|
48
47
|
|
48
|
+
describe '::CHILDREN' do
|
49
|
+
subject { Facemock::Database::User::CHILDREN }
|
50
|
+
it { is_expected.to eq children }
|
51
|
+
end
|
52
|
+
|
49
53
|
describe '#initialize' do
|
50
54
|
context 'without option' do
|
51
55
|
subject { Facemock::Database::User.new }
|
@@ -63,7 +67,7 @@ describe Facemock::Database::User do
|
|
63
67
|
|
64
68
|
describe '.size' do
|
65
69
|
subject { Facemock::Database::User.new.name.size }
|
66
|
-
it { is_expected.to
|
70
|
+
it { is_expected.to be <= 10 }
|
67
71
|
end
|
68
72
|
end
|
69
73
|
|
@@ -166,4 +170,31 @@ describe Facemock::Database::User do
|
|
166
170
|
end
|
167
171
|
end
|
168
172
|
end
|
173
|
+
|
174
|
+
describe 'destroy' do
|
175
|
+
before do
|
176
|
+
stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name)
|
177
|
+
@database = Facemock::Database.new
|
178
|
+
end
|
179
|
+
after { @database.drop }
|
180
|
+
|
181
|
+
context 'when has permission and authorizaion_code' do
|
182
|
+
before do
|
183
|
+
application = Facemock::Database::Application.create!
|
184
|
+
@user = Facemock::Database::User.create!(application_id: application.id)
|
185
|
+
permission = Facemock::Database::Permission.new(name: "email", user_id: @user.id)
|
186
|
+
permission.save!
|
187
|
+
authorization_code = Facemock::Database::AuthorizationCode.new(user_id: @user.id)
|
188
|
+
authorization_code.save!
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'should delete permissions' do
|
192
|
+
@user.destroy
|
193
|
+
permissions = Facemock::Database::Permission.find_all_by_user_id(@user.id)
|
194
|
+
expect(permissions).to be_empty
|
195
|
+
authorization_codes = Facemock::Database::AuthorizationCode.find_all_by_user_id(@user.id)
|
196
|
+
expect(authorization_codes).to be_empty
|
197
|
+
end
|
198
|
+
end
|
199
|
+
end
|
169
200
|
end
|
@@ -4,7 +4,7 @@ describe Facemock::Database do
|
|
4
4
|
let(:db_name) { ".test" }
|
5
5
|
let(:default_db_name) { "facemock" }
|
6
6
|
let(:adapter) { "sqlite3" }
|
7
|
-
let(:table_names) { [:applications, :users, :permissions] }
|
7
|
+
let(:table_names) { [:applications, :users, :permissions, :authorization_codes] }
|
8
8
|
let(:db_directory) { File.expand_path("../../../db", __FILE__) }
|
9
9
|
let(:db_filepath) { File.join(db_directory, "#{db_name}.#{adapter}") }
|
10
10
|
|
@@ -28,22 +28,6 @@ describe Facemock::Database do
|
|
28
28
|
it { is_expected.to eq default_db_name }
|
29
29
|
end
|
30
30
|
|
31
|
-
it 'should have a table class' do
|
32
|
-
expect(Facemock::Database::Table).to be_truthy
|
33
|
-
end
|
34
|
-
|
35
|
-
it 'should have a application class' do
|
36
|
-
expect(Facemock::Database::Application).to be_truthy
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'should have a user class' do
|
40
|
-
expect(Facemock::Database::User).to be_truthy
|
41
|
-
end
|
42
|
-
|
43
|
-
it 'should have a permission class' do
|
44
|
-
expect(Facemock::Database::Permission).to be_truthy
|
45
|
-
end
|
46
|
-
|
47
31
|
describe '#initialize' do
|
48
32
|
before do
|
49
33
|
allow_any_instance_of(Facemock::Database).to receive(:connect) { true }
|
@@ -265,6 +249,13 @@ describe Facemock::Database do
|
|
265
249
|
end
|
266
250
|
|
267
251
|
context 'when drop tables' do
|
252
|
+
before { @database.drop_tables }
|
253
|
+
|
254
|
+
it 'should not exist any tables' do
|
255
|
+
table_names.each do |table_name|
|
256
|
+
expect(@database.table_exists?(table_name)).to eq false
|
257
|
+
end
|
258
|
+
end
|
268
259
|
end
|
269
260
|
end
|
270
261
|
end
|
@@ -43,8 +43,7 @@ describe Facemock::FbGraph::Application::TestUsers do
|
|
43
43
|
|
44
44
|
context 'when user exist only one' do
|
45
45
|
before do
|
46
|
-
@user = Facemock::FbGraph::Application::User.
|
47
|
-
@user.save!
|
46
|
+
@user = Facemock::FbGraph::Application::User.create!(application_id: facebook_app_id)
|
48
47
|
end
|
49
48
|
|
50
49
|
it 'should have user' do
|
@@ -64,7 +63,7 @@ describe Facemock::FbGraph::Application::TestUsers do
|
|
64
63
|
context 'when user is exist only two' do
|
65
64
|
before do
|
66
65
|
2.times do
|
67
|
-
Facemock::FbGraph::Application::User.
|
66
|
+
Facemock::FbGraph::Application::User.create!(application_id: facebook_app_id)
|
68
67
|
end
|
69
68
|
@limit = 1
|
70
69
|
end
|
@@ -82,7 +81,7 @@ describe Facemock::FbGraph::Application::TestUsers do
|
|
82
81
|
context 'when user is exist only two' do
|
83
82
|
before do
|
84
83
|
2.times do
|
85
|
-
Facemock::FbGraph::Application::User.
|
84
|
+
Facemock::FbGraph::Application::User.create!(application_id: facebook_app_id)
|
86
85
|
end
|
87
86
|
@after = 1
|
88
87
|
end
|
@@ -100,7 +99,7 @@ describe Facemock::FbGraph::Application::TestUsers do
|
|
100
99
|
context 'when user is exist only three' do
|
101
100
|
before do
|
102
101
|
3.times do
|
103
|
-
Facemock::FbGraph::Application::User.
|
102
|
+
Facemock::FbGraph::Application::User.create!(application_id: facebook_app_id)
|
104
103
|
end
|
105
104
|
@options = { limit: 1, after: 1 }
|
106
105
|
end
|
@@ -118,8 +117,7 @@ describe Facemock::FbGraph::Application::TestUsers do
|
|
118
117
|
|
119
118
|
describe '#collection' do
|
120
119
|
before do
|
121
|
-
user = Facemock::FbGraph::Application::User.
|
122
|
-
user.save!
|
120
|
+
user = Facemock::FbGraph::Application::User.create!(application_id: facebook_app_id)
|
123
121
|
@test_users = Facemock::FbGraph::Application::TestUsers.new(facebook_app_id)
|
124
122
|
end
|
125
123
|
|
@@ -17,11 +17,6 @@ describe Facemock::FbGraph::Application::User do
|
|
17
17
|
before { stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name) }
|
18
18
|
after { Facemock::Database.new.drop }
|
19
19
|
|
20
|
-
it 'should have a permission class' do
|
21
|
-
expect(Facemock::FbGraph::Application::User::Permission).to be_truthy
|
22
|
-
expect(Facemock::FbGraph::Application::User::Permission.ancestors).to include Facemock::Database::Permission
|
23
|
-
end
|
24
|
-
|
25
20
|
describe '#new' do
|
26
21
|
context 'without options' do
|
27
22
|
subject { lambda { Facemock::FbGraph::Application::User.new } }
|
@@ -146,8 +141,7 @@ describe Facemock::FbGraph::Application::User do
|
|
146
141
|
describe '#destroy' do
|
147
142
|
context 'when does not have permission' do
|
148
143
|
before do
|
149
|
-
@user = Facemock::FbGraph::Application::User.
|
150
|
-
@user.save!
|
144
|
+
@user = Facemock::FbGraph::Application::User.create!(options)
|
151
145
|
end
|
152
146
|
|
153
147
|
subject { lambda { @user.destroy } }
|
@@ -163,8 +157,7 @@ describe Facemock::FbGraph::Application::User do
|
|
163
157
|
context 'when have some permissions' do
|
164
158
|
before do
|
165
159
|
opts = { application_id: 1, permissions: "email, read_stream" }
|
166
|
-
@user = Facemock::FbGraph::Application::User.
|
167
|
-
@user.save!
|
160
|
+
@user = Facemock::FbGraph::Application::User.create!(opts)
|
168
161
|
end
|
169
162
|
|
170
163
|
subject { lambda { @user.destroy } }
|
@@ -174,8 +167,8 @@ describe Facemock::FbGraph::Application::User do
|
|
174
167
|
@user.destroy
|
175
168
|
expect(Facemock::FbGraph::Application::User.find_by_id(@user.id)).to be_nil
|
176
169
|
expect(Facemock::FbGraph::Application::User::Permission.find_all_by_user_id(@user.id)).to be_empty
|
177
|
-
expect(@user.permissions).
|
178
|
-
expect(@user.permission_objects).
|
170
|
+
expect(@user.permissions).to be_empty
|
171
|
+
expect(@user.permission_objects).to be_empty
|
179
172
|
end
|
180
173
|
end
|
181
174
|
end
|
@@ -183,8 +176,7 @@ describe Facemock::FbGraph::Application::User do
|
|
183
176
|
describe '#revoke!' do
|
184
177
|
context 'when does not have permission' do
|
185
178
|
before do
|
186
|
-
@user = Facemock::FbGraph::Application::User.
|
187
|
-
@user.save!
|
179
|
+
@user = Facemock::FbGraph::Application::User.create!(options)
|
188
180
|
end
|
189
181
|
|
190
182
|
subject { lambda { @user.revoke! } }
|
@@ -194,8 +186,7 @@ describe Facemock::FbGraph::Application::User do
|
|
194
186
|
context 'when have some permissions' do
|
195
187
|
before do
|
196
188
|
opts = { application_id: 1, permissions: "email, read_stream" }
|
197
|
-
@user = Facemock::FbGraph::Application::User.
|
198
|
-
@user.save!
|
189
|
+
@user = Facemock::FbGraph::Application::User.create!(opts)
|
199
190
|
end
|
200
191
|
|
201
192
|
it 'should destroy permissions' do
|
@@ -15,16 +15,6 @@ describe Facemock::FbGraph::Application do
|
|
15
15
|
end
|
16
16
|
after { @database.drop }
|
17
17
|
|
18
|
-
it 'should have a user class' do
|
19
|
-
expect(Facemock::FbGraph::Application::User).to be_truthy
|
20
|
-
expect(Facemock::FbGraph::Application::User.ancestors).to include Facemock::Database::User
|
21
|
-
end
|
22
|
-
|
23
|
-
it 'should have a users class' do
|
24
|
-
expect(Facemock::FbGraph::Application::TestUsers).to be_truthy
|
25
|
-
expect(Facemock::FbGraph::Application::TestUsers.ancestors).to include Array
|
26
|
-
end
|
27
|
-
|
28
18
|
describe '#new' do
|
29
19
|
before { @default_record_size = Facemock::Database::Application.all.size }
|
30
20
|
|
@@ -1,19 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Facemock::FbGraph do
|
4
|
-
it 'should have a application class' do
|
5
|
-
expect(Facemock::FbGraph::Application).to be_truthy
|
6
|
-
end
|
7
|
-
|
8
|
-
it 'should have a user module' do
|
9
|
-
expect(Facemock::FbGraph::User).to be_truthy
|
10
|
-
end
|
11
|
-
|
12
|
-
it 'should have a error class' do
|
13
|
-
expect(Facemock::FbGraph::InvalidToken).to be_truthy
|
14
|
-
expect(Facemock::FbGraph::InvalidRequest).to be_truthy
|
15
|
-
end
|
16
|
-
|
17
4
|
describe '#on' do
|
18
5
|
subject { Facemock::FbGraph.on }
|
19
6
|
it { is_expected.to be_truthy }
|
data/spec/facemock_spec.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Facemock do
|
4
|
-
let(:version) { '0.0.
|
4
|
+
let(:version) { '0.0.7' }
|
5
5
|
let(:db_name) { '.test' }
|
6
6
|
|
7
7
|
describe 'VERSION' do
|
@@ -9,22 +9,6 @@ describe Facemock do
|
|
9
9
|
it { is_expected.to eq version }
|
10
10
|
end
|
11
11
|
|
12
|
-
it 'should have a config module' do
|
13
|
-
expect(Facemock::Config).to be_truthy
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'should have a fb_graph module' do
|
17
|
-
expect(Facemock::FbGraph).to be_truthy
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should have a database class' do
|
21
|
-
expect(Facemock::Database).to be_truthy
|
22
|
-
end
|
23
|
-
|
24
|
-
it 'should have a errors module' do
|
25
|
-
expect(Facemock::Errors).to be_truthy
|
26
|
-
end
|
27
|
-
|
28
12
|
describe '.on' do
|
29
13
|
subject { Facemock.on }
|
30
14
|
it { is_expected.to be_truthy }
|
@@ -71,4 +55,55 @@ describe Facemock do
|
|
71
55
|
it { is_expected.to be true }
|
72
56
|
end
|
73
57
|
end
|
58
|
+
|
59
|
+
describe '.auth_hash' do
|
60
|
+
context 'withou argument' do
|
61
|
+
subject { Facemock.auth_hash }
|
62
|
+
it { is_expected.to be_kind_of Facemock::AuthHash }
|
63
|
+
it { is_expected.to be_empty }
|
64
|
+
end
|
65
|
+
|
66
|
+
context 'with incorrect argument' do
|
67
|
+
it 'should return empty hash' do
|
68
|
+
[nil, false, true, 1, ""].each do |argument|
|
69
|
+
value = Facemock.auth_hash(argument)
|
70
|
+
expect(value).to be_kind_of Facemock::AuthHash
|
71
|
+
expect(value).to be_empty
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
context 'with access_token' do
|
77
|
+
before do
|
78
|
+
stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name)
|
79
|
+
@database = Facemock::Database.new
|
80
|
+
application = Facemock::Database::Application.create!
|
81
|
+
@user = Facemock::Database::User.create!(application_id: application.id)
|
82
|
+
@access_token = @user.access_token
|
83
|
+
end
|
84
|
+
after { @database.drop }
|
85
|
+
|
86
|
+
context 'that is incorrect' do
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'that is correct' do
|
90
|
+
it 'should return AuthHash with some keys and value' do
|
91
|
+
auth_hash = Facemock.auth_hash(@access_token)
|
92
|
+
expect(auth_hash).to be_kind_of Facemock::AuthHash
|
93
|
+
expect(auth_hash).not_to be_empty
|
94
|
+
expect(auth_hash.provider).to eq "facebook"
|
95
|
+
expect(auth_hash.uid).to eq @user.id
|
96
|
+
[ auth_hash.info, auth_hash.credentials,
|
97
|
+
auth_hash.extra, auth_hash.extra.raw_info ].each do |value|
|
98
|
+
expect(value).to be_kind_of Hash
|
99
|
+
end
|
100
|
+
expect(auth_hash.info.name).to eq @user.name
|
101
|
+
expect(auth_hash.credentials.token).to eq @user.access_token
|
102
|
+
expect(auth_hash.credentials.expires_at).to be > Time.now
|
103
|
+
expect(auth_hash.extra.raw_info.id).to eq @user.id
|
104
|
+
expect(auth_hash.extra.raw_info.name).to eq @user.name
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
74
109
|
end
|
@@ -1,4 +1,16 @@
|
|
1
1
|
module TableHelper
|
2
|
+
def remove_dynamically_defined_all_method
|
3
|
+
klasses = [Facemock::Database::Table,
|
4
|
+
Facemock::Database::Application,
|
5
|
+
Facemock::Database::User,
|
6
|
+
Facemock::Database::Permission,
|
7
|
+
Facemock::Database::AuthorizationCode ]
|
8
|
+
klasses.each do |klass|
|
9
|
+
remove_dynamically_defined_class_method(klass)
|
10
|
+
remove_dynamically_defined_instance_method(klass)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
2
14
|
# テストで動的に定義したクラスメソッドを削除
|
3
15
|
def remove_dynamically_defined_class_method(klass)
|
4
16
|
klass.methods.each do |method_name|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facemock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-09-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sqlite3
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: omniauth
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: hashie
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,9 +190,11 @@ files:
|
|
174
190
|
- db/.gitkeep
|
175
191
|
- facemock.gemspec
|
176
192
|
- lib/facemock.rb
|
193
|
+
- lib/facemock/auth_hash.rb
|
177
194
|
- lib/facemock/config.rb
|
178
195
|
- lib/facemock/database.rb
|
179
196
|
- lib/facemock/database/application.rb
|
197
|
+
- lib/facemock/database/authorization_code.rb
|
180
198
|
- lib/facemock/database/permission.rb
|
181
199
|
- lib/facemock/database/table.rb
|
182
200
|
- lib/facemock/database/user.rb
|
@@ -188,10 +206,12 @@ files:
|
|
188
206
|
- lib/facemock/fb_graph/application/user/permission.rb
|
189
207
|
- lib/facemock/fb_graph/user.rb
|
190
208
|
- lib/facemock/version.rb
|
209
|
+
- spec/facemock/auth_hash_spec.rb
|
191
210
|
- spec/facemock/config_spec.rb
|
192
211
|
- spec/facemock/database/application_spec.rb
|
212
|
+
- spec/facemock/database/authorization_code.rb
|
193
213
|
- spec/facemock/database/permission_spec.rb
|
194
|
-
- spec/facemock/database/
|
214
|
+
- spec/facemock/database/table_spec.rb
|
195
215
|
- spec/facemock/database/user_spec.rb
|
196
216
|
- spec/facemock/database_spec.rb
|
197
217
|
- spec/facemock/errors_spec.rb
|
@@ -219,7 +239,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
239
|
version: '0'
|
220
240
|
segments:
|
221
241
|
- 0
|
222
|
-
hash: -
|
242
|
+
hash: -2537604812428127045
|
223
243
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
224
244
|
none: false
|
225
245
|
requirements:
|
@@ -228,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
248
|
version: '0'
|
229
249
|
segments:
|
230
250
|
- 0
|
231
|
-
hash: -
|
251
|
+
hash: -2537604812428127045
|
232
252
|
requirements: []
|
233
253
|
rubyforge_project:
|
234
254
|
rubygems_version: 1.8.25
|
@@ -236,10 +256,12 @@ signing_key:
|
|
236
256
|
specification_version: 3
|
237
257
|
summary: This is facebook mock application for fb_graph.
|
238
258
|
test_files:
|
259
|
+
- spec/facemock/auth_hash_spec.rb
|
239
260
|
- spec/facemock/config_spec.rb
|
240
261
|
- spec/facemock/database/application_spec.rb
|
262
|
+
- spec/facemock/database/authorization_code.rb
|
241
263
|
- spec/facemock/database/permission_spec.rb
|
242
|
-
- spec/facemock/database/
|
264
|
+
- spec/facemock/database/table_spec.rb
|
243
265
|
- spec/facemock/database/user_spec.rb
|
244
266
|
- spec/facemock/database_spec.rb
|
245
267
|
- spec/facemock/errors_spec.rb
|