spec/facemock/fb_graph/application_spec.rb in facemock-0.0.5 vs spec/facemock/fb_graph/application_spec.rb in facemock-0.0.6
- old
+ new
@@ -1,132 +1,295 @@
require 'spec_helper'
describe Facemock::FbGraph::Application do
+ include ApplicationCreateHelper
+
let(:db_name) { ".test" }
let(:facebook_app_id) { 100000000000000 }
let(:facebook_app_secret) { "test_secret" }
let(:access_token) { "access_token" }
+ before do
+ stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name)
+ @database = Facemock::Database.new
+ end
+ after { @database.drop }
+
it 'should have a user class' do
expect(Facemock::FbGraph::Application::User).to be_truthy
expect(Facemock::FbGraph::Application::User.ancestors).to include Facemock::Database::User
end
it 'should have a users class' do
expect(Facemock::FbGraph::Application::TestUsers).to be_truthy
expect(Facemock::FbGraph::Application::TestUsers.ancestors).to include Array
end
- before do
- stub_const("Facemock::Database::DEFAULT_DB_NAME", db_name)
- @database = Facemock::Database.new
- end
- after { @database.drop }
-
describe '#new' do
+ before { @default_record_size = Facemock::Database::Application.all.size }
+
context 'without argument' do
subject { lambda { Facemock::FbGraph::Application.new } }
it { is_expected.to raise_error ArgumentError }
end
- context 'with facebook app id and secret' do
- before { @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret) }
+ context 'with facebook app id' do
+ shared_context 'new is success and record creates', assert: :attributes_and_created_record do
+ it 'should set only identifier specified value by argument and record create' do
+ expect(@app.identifier).to eq @id
+ expect(@app.secret).to be_nil
+ expect(@app.access_token).to be_nil
+ expect(Facemock::Database::Application.all.size).to eq @default_record_size
+ end
+ end
- describe '.identifier' do
- subject { @app.identifier }
- it { is_expected.to eq facebook_app_id }
+ context 'when facebook app id is integer', assert: :attributes_and_created_record do
+ before do
+ @id = facebook_app_id
+ @app = Facemock::FbGraph::Application.new(facebook_app_id)
+ end
end
- describe '.secreet' do
- subject { @app.secret }
- it { is_expected.to eq facebook_app_secret }
+ context 'when facebook app id is numerical string', assert: :attributes_and_created_record do
+ before do
+ @id = facebook_app_id.to_s
+ @app = Facemock::FbGraph::Application.new(@id)
+ end
end
+
+ context 'when facebook app id is :app' do
+ before do
+ @id = :app
+ @app = Facemock::FbGraph::Application.new(@id)
+ end
+
+ it 'should set only identifier specified value by argument and record does not create' do
+ expect(@app.identifier).to eq @id
+ expect(@app.secret).to be_nil
+ expect(@app.access_token).to be_nil
+ expect(Facemock::Database::Application.all.size).to eq @default_record_size
+ end
+ end
+
+ context 'and all options' do
+ before do
+ @options = { secret: facebook_app_secret, access_token: access_token }
+ @app = Facemock::FbGraph::Application.new(facebook_app_id, @options)
+ end
+
+ it 'should set all attributes specified value by argument' do
+ expect(@app.identifier).to eq facebook_app_id
+ expect(@app.secret).to eq @options[:secret]
+ expect(@app.access_token).to eq @options[:access_token]
+ expect(Facemock::Database::Application.all.size).to eq @default_record_size
+ end
+ end
end
+ end
- context 'with facebook app id and secret' do
- before do
- options = { secret: facebook_app_secret }
- @app = Facemock::FbGraph::Application.new(facebook_app_id, options)
+ describe '#fetch' do
+ context 'when instance identifier is nil' do
+ before { @app = Facemock::FbGraph::Application.new(nil) }
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidRequest }
+ end
+
+ context 'when instance identifier is empty string' do
+ before { @app = Facemock::FbGraph::Application.new("") }
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidRequest }
+ end
+
+ context 'when instance identifier is integer' do
+ context 'and secret is not specified' do
+ before { @app = Facemock::FbGraph::Application.new(facebook_app_id) }
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidRequest }
end
- describe '.identifier' do
- subject { @app.identifier }
- it { is_expected.to eq facebook_app_id }
+ context 'and incorrect secret is specified' do
+ before do
+ Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ @app = Facemock::FbGraph::Application.new(facebook_app_id)
+ @app.secret = "incorrect_secret"
+ end
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidRequest }
end
- describe '.secreet' do
- subject { @app.secret }
- it { is_expected.to eq facebook_app_secret }
+ context 'and the other application secret is specified' do
+ before do
+ secret = "other_secret"
+ app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ app = Facemock::FbGraph::Application.new(facebook_app_id + 1, secret: secret)
+ @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: secret)
+ end
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidRequest }
end
+
+ context 'and correct secret is specified' do
+ before do
+ create_application({ id: facebook_app_id, secret: facebook_app_secret })
+ @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ end
+
+ subject { @app.fetch }
+ it { is_expected.to be_kind_of Facemock::FbGraph::Application }
+
+ it 'should not change identifier and secret' do
+ identifier = @app.identifier
+ secret = @app.secret
+ @app.fetch
+ expect(@app.identifier).to eq identifier
+ expect(@app.secret).to eq secret
+ expect(@app.access_token).to be_nil
+ end
+
+ context 'and incorrect access_token is specified' do
+ before do
+ @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ @app.access_token = "incorrect_token"
+ end
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidToken }
+ end
+ end
end
- context 'with app symbole and access_token' do
- before { @app = Facemock::FbGraph::Application.new(:app, access_token: access_token) }
+ context 'when instance identifier is :app' do
+ context 'and access token is not specified' do
+ before { @app = Facemock::FbGraph::Application.new(:app) }
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidToken }
+ end
- describe '.identifier' do
- subject { @app.identifier }
- it { is_expected.to be_kind_of Integer }
+ context 'and access token is incorrect' do
+ before { @app = Facemock::FbGraph::Application.new(:app, access_token: "incorrect_token") }
+ subject { lambda { @app.fetch } }
+ it { is_expected.to raise_error Facemock::FbGraph::InvalidToken }
end
- describe '.secreet' do
- subject { @app.secret }
- it { is_expected.not_to be_empty }
+ context 'and access token is correct' do
+ before do
+ create_application({ id: facebook_app_id, secret: facebook_app_secret})
+ app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ user = app.test_user!
+ @access_token = user.access_token
+ end
+
+ it 'should set all attributes specified value by argument' do
+ app = Facemock::FbGraph::Application.new(:app, access_token: @access_token)
+ app.fetch
+ expect(app.identifier).to eq facebook_app_id
+ expect(app.secret).to eq facebook_app_secret
+ expect(app.access_token).to be_nil
+ end
end
end
end
- describe '#fetch' do
- before { @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret) }
+ describe '#test_user!' do
+ context 'when incorrect access token is specified' do
- describe '.identifier' do
- subject { @app.fetch.identifier }
- it { is_expected.to eq @app.identifier }
+ it 'should raise error Facemoc::FbGraph::InvalidToken' do
+ app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ app.access_token = "incorrect_token"
+ expect(lambda { app.test_user! }).to raise_error Facemock::FbGraph::InvalidToken
+ end
end
- describe '.secret' do
- subject { @app.fetch.secret }
- it { is_expected.to eq @app.secret }
+ context 'when identifier or secret is incorrect' do
+ before { Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret) }
+
+ it 'should raise error Facemoc::FbGraph::InvalidRequest' do
+ app = Facemock::FbGraph::Application.new(nil)
+ [nil, "", "hoge", facebook_app_id].each do |id|
+ app.identifier = id
+ [nil, "", "hoge"].each do |secret|
+ app.secret = secret
+ expect(lambda { app.test_user! }).to raise_error Facemock::FbGraph::InvalidRequest
+ end
+ end
+ end
end
- end
- describe '#test_user!' do
- before { @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret) }
+ context 'when identifier and secret is correct' do
+ before do
+ create_application({ id: facebook_app_id, secret: facebook_app_secret })
+ @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ end
- it 'should created user' do
- expect(Facemock::FbGraph::Application::User.all).to be_empty
- created_user = @app.test_user!
- finded_user = Facemock::FbGraph::Application::User.find_by_id(created_user.id)
- Facemock::FbGraph::Application::User.column_names.each do |column_name|
- expect(created_user.send(column_name)).to eq finded_user.send(column_name)
+ it 'should created user' do
+ expect(Facemock::FbGraph::Application::User.all).to be_empty
+ created_user = @app.test_user!
+ finded_user = Facemock::FbGraph::Application::User.find_by_id(created_user.id)
+ Facemock::FbGraph::Application::User.column_names.each do |column_name|
+ expect(created_user.send(column_name)).to eq finded_user.send(column_name)
+ end
end
end
end
describe '#test_users' do
- before do
- @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ context 'when identifier is invalid' do
+ before { Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret) }
+
+ it 'should raise error Facemock::FbGraph::InvalidRequest' do
+ [nil, "", facebook_app_id + 1].each do |id|
+ app = Facemock::FbGraph::Application.new(id)
+ expect(lambda{ app.test_users }).to raise_error Facemock::FbGraph::InvalidRequest
+ end
+ end
end
- context 'when test_user is not created' do
- subject { @app.test_users }
+ context 'when secret is invalid' do
+ before { Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret) }
- it { is_expected.to be_kind_of Facemock::FbGraph::Application::TestUsers }
- it { is_expected.to be_empty }
+ it 'should raise error Facemock::FbGraph::InvalidRequest' do
+ [nil, "", "incorrect_secret"].each do |secret|
+ app = Facemock::FbGraph::Application.new(facebook_app_id)
+ app.secret = secret
+ expect(lambda{ app.test_users }).to raise_error Facemock::FbGraph::InvalidRequest
+ end
+ end
end
- context 'when test_user is created' do
+ context 'when access_token is invalid' do
+ it 'should raise error Facemock::FbGraph::InvalidToken' do
+ app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
+ app.access_token = "incorrect_token"
+ expect(lambda{ app.test_users }).to raise_error Facemock::FbGraph::InvalidToken
+ end
+ end
+
+ context 'when identifier and secret is correct' do
before do
- @user = @app.test_user!
+ create_application({ id: facebook_app_id, secret: facebook_app_secret })
+ @app = Facemock::FbGraph::Application.new(facebook_app_id, secret: facebook_app_secret)
end
- subject { @app.test_users }
- it { is_expected.to be_kind_of Facemock::FbGraph::Application::TestUsers }
- it { is_expected.not_to be_empty }
+ context 'when test_user is not created' do
+ subject { @app.test_users }
- describe '.first.id' do
- subject { @app.test_users.first.id }
- it { is_expected.to eq @user.id }
+ it { is_expected.to be_kind_of Facemock::FbGraph::Application::TestUsers }
+ it { is_expected.to be_empty }
+ end
+
+ context 'when test_user is created' do
+ before do
+ @user = @app.test_user!
+ end
+
+ subject { @app.test_users }
+ it { is_expected.to be_kind_of Facemock::FbGraph::Application::TestUsers }
+ it { is_expected.not_to be_empty }
+
+ describe '.first.id' do
+ subject { @app.test_users.first.id }
+ it { is_expected.to eq @user.id }
+ end
end
end
end
end