empresaula-api 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.
- data/lib/empresaula-api/controller/authentication.rb +8 -3
- data/lib/empresaula-api/resource/base.rb +9 -0
- data/lib/empresaula-api/resource/session.rb +10 -0
- data/lib/empresaula-api/resource/user.rb +0 -3
- data/lib/empresaula-api/test_helpers/user.rb +29 -6
- data/lib/empresaula-api/version.rb +1 -1
- data/test/empresaula-api/controller/authentication_test.rb +19 -4
- data/test/empresaula-api/resource/session_test.rb +31 -0
- data/test/empresaula-api/resource/user_test.rb +2 -2
- data/test/empresaula-api/test_helpers/user_test.rb +4 -0
- metadata +13 -10
@@ -1,3 +1,4 @@
|
|
1
|
+
require_relative '../resource/session'
|
1
2
|
require_relative '../resource/user'
|
2
3
|
|
3
4
|
module Empresaula
|
@@ -10,17 +11,21 @@ module Empresaula
|
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
14
|
+
def current_session
|
15
|
+
@current_session ||= find_session_from_cookies
|
16
|
+
end
|
17
|
+
|
13
18
|
# Sets the current user
|
14
19
|
#
|
15
20
|
def current_user
|
16
|
-
|
21
|
+
current_session.user if current_session
|
17
22
|
end
|
18
23
|
|
19
24
|
private
|
20
25
|
|
21
|
-
def
|
26
|
+
def find_session_from_cookies
|
22
27
|
if cookies[:empresaula_session].present?
|
23
|
-
Empresaula::API::Resource::
|
28
|
+
Empresaula::API::Resource::Session.find(
|
24
29
|
cookies[:empresaula_session])
|
25
30
|
end
|
26
31
|
end
|
@@ -4,6 +4,15 @@ module Empresaula
|
|
4
4
|
module API
|
5
5
|
module Resource
|
6
6
|
class Base < ActiveResource::Base
|
7
|
+
class << self
|
8
|
+
def headers
|
9
|
+
@headers ||= {}
|
10
|
+
if superclass.respond_to?(:headers)
|
11
|
+
@headers = superclass.headers.merge(@headers)
|
12
|
+
end
|
13
|
+
@headers
|
14
|
+
end
|
15
|
+
end
|
7
16
|
self.format = :json
|
8
17
|
end
|
9
18
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'empresaula-api/config'
|
1
2
|
require 'empresaula-api/resource/user'
|
2
3
|
require 'active_resource'
|
3
4
|
require 'json'
|
@@ -6,19 +7,41 @@ module Empresaula
|
|
6
7
|
module API
|
7
8
|
module TestHelpers
|
8
9
|
module User
|
10
|
+
|
9
11
|
def mock_current_user(user)
|
10
12
|
cookies = Capybara.current_session.driver.browser.current_session.instance_variable_get(:@rack_mock_session).cookie_jar
|
11
13
|
cookies[:empresaula_session] = 'qwertyuiop123456789'
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
14
|
+
add_mock '/api/users/qwertyuiop123456789.json', user
|
15
|
+
mock_user user
|
16
|
+
@current_user = Empresaula::API::Resource::User.find(user[:id])
|
17
|
+
end
|
18
|
+
|
19
|
+
def current_user
|
20
|
+
@current_user
|
16
21
|
end
|
17
22
|
|
18
23
|
def mock_user(user)
|
24
|
+
add_mock "/api/users/#{user[:id]}.json", user
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_mock(url, object, method = 'get')
|
28
|
+
@_mocks ||= {}
|
29
|
+
@_mocks[url] = {method: method, object: object}
|
30
|
+
perform_mocks!
|
31
|
+
end
|
32
|
+
|
33
|
+
def mocks
|
34
|
+
@_mocks || {}
|
35
|
+
end
|
36
|
+
|
37
|
+
def perform_mocks!
|
38
|
+
ActiveResource::HttpMock.reset!
|
19
39
|
ActiveResource::HttpMock.respond_to do |mock|
|
20
|
-
|
21
|
-
|
40
|
+
mocks.each do |k, v|
|
41
|
+
mock.send(v[:method], k,
|
42
|
+
{"X-SecretToken"=>Empresaula::API.config.secret_token},
|
43
|
+
v[:object].to_json)
|
44
|
+
end
|
22
45
|
end
|
23
46
|
end
|
24
47
|
end
|
@@ -15,19 +15,34 @@ module Empresaula::API::Controller
|
|
15
15
|
end
|
16
16
|
before do
|
17
17
|
subject.cookies[:empresaula_session] = empresaula_session
|
18
|
+
Empresaula::API::Resource::Base.site = "http://fakehost/api"
|
18
19
|
end
|
19
20
|
let(:empresaula_session) do
|
20
|
-
stub(present?: false)
|
21
|
+
stub(present?: false, to_s: 'session-secret')
|
22
|
+
end
|
23
|
+
describe "#current_session" do
|
24
|
+
it "returns nil if no cookie set" do
|
25
|
+
subject.current_session.must_equal nil
|
26
|
+
end
|
27
|
+
it "returns an user if a cookie is found" do
|
28
|
+
empresaula_session.stubs(present?: true)
|
29
|
+
Empresaula::API::Resource::Session.expects(:find).
|
30
|
+
with(empresaula_session)
|
31
|
+
subject.current_session
|
32
|
+
end
|
21
33
|
end
|
22
34
|
describe "#current_user" do
|
23
35
|
it "returns nil if no cookie set" do
|
24
36
|
subject.current_user.must_equal nil
|
25
37
|
end
|
26
38
|
it "returns an user if a cookie is found" do
|
39
|
+
session = {session: {user: {name: 'Jonah'}}}
|
40
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
41
|
+
mock.get '/api/sessions/session-secret.json', {},
|
42
|
+
session.to_json
|
43
|
+
end
|
27
44
|
empresaula_session.stubs(present?: true)
|
28
|
-
|
29
|
-
with(empresaula_session)
|
30
|
-
subject.current_user
|
45
|
+
subject.current_user.name.must_equal "Jonah"
|
31
46
|
end
|
32
47
|
end
|
33
48
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
require 'empresaula-api/resource/session'
|
3
|
+
|
4
|
+
module Empresaula::API::Resource
|
5
|
+
describe Session do
|
6
|
+
before do
|
7
|
+
Session.site = "http://fakehost/api"
|
8
|
+
end
|
9
|
+
describe ".find_by_session_id" do
|
10
|
+
let(:session) do
|
11
|
+
{
|
12
|
+
session: {
|
13
|
+
user: {
|
14
|
+
name: 'James'
|
15
|
+
}
|
16
|
+
}
|
17
|
+
}
|
18
|
+
end
|
19
|
+
before do
|
20
|
+
ActiveResource::HttpMock.respond_to do |mock|
|
21
|
+
mock.get '/api/sessions/session_key.json', {},
|
22
|
+
session.to_json
|
23
|
+
end
|
24
|
+
end
|
25
|
+
it "builds a new user given a session id" do
|
26
|
+
session = Session.find("session_key")
|
27
|
+
session.user.name.must_equal "James"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -12,12 +12,12 @@ module Empresaula::API::Resource
|
|
12
12
|
end
|
13
13
|
before do
|
14
14
|
ActiveResource::HttpMock.respond_to do |mock|
|
15
|
-
mock.get '/api/users/
|
15
|
+
mock.get '/api/users/id.json', {},
|
16
16
|
user.to_json
|
17
17
|
end
|
18
18
|
end
|
19
19
|
it "builds a new user given a session id" do
|
20
|
-
user = User.
|
20
|
+
user = User.find("id")
|
21
21
|
user.id.must_equal 1
|
22
22
|
user.name.must_equal "James"
|
23
23
|
end
|
@@ -11,6 +11,10 @@ module Empresaula::API::TestHelpers
|
|
11
11
|
describe "#mock_user" do
|
12
12
|
before do
|
13
13
|
Empresaula::API::Resource::User.site = "http://fake/api"
|
14
|
+
Empresaula::API::config.secret_token = 'secret'
|
15
|
+
end
|
16
|
+
after do
|
17
|
+
Empresaula::API::config.secret_token = nil
|
14
18
|
end
|
15
19
|
it "mocks a particular user" do
|
16
20
|
subject.mock_user({id: 1, name: "James"})
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: empresaula-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activeresource
|
16
|
-
requirement: &
|
16
|
+
requirement: &70214754650080 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70214754650080
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: turn
|
27
|
-
requirement: &
|
27
|
+
requirement: &70214754649500 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70214754649500
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
38
|
-
requirement: &
|
38
|
+
requirement: &70214754648880 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70214754648880
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: mocha
|
49
|
-
requirement: &
|
49
|
+
requirement: &70214754648440 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70214754648440
|
58
58
|
description: Ruby wrapper for interacting with Empresaula's API
|
59
59
|
email:
|
60
60
|
- info@codegram.com
|
@@ -74,12 +74,14 @@ files:
|
|
74
74
|
- lib/empresaula-api/controller/authentication.rb
|
75
75
|
- lib/empresaula-api/resource.rb
|
76
76
|
- lib/empresaula-api/resource/base.rb
|
77
|
+
- lib/empresaula-api/resource/session.rb
|
77
78
|
- lib/empresaula-api/resource/user.rb
|
78
79
|
- lib/empresaula-api/test_helpers.rb
|
79
80
|
- lib/empresaula-api/test_helpers/user.rb
|
80
81
|
- lib/empresaula-api/version.rb
|
81
82
|
- test/empresaula-api/config_test.rb
|
82
83
|
- test/empresaula-api/controller/authentication_test.rb
|
84
|
+
- test/empresaula-api/resource/session_test.rb
|
83
85
|
- test/empresaula-api/resource/user_test.rb
|
84
86
|
- test/empresaula-api/test_helpers/user_test.rb
|
85
87
|
- test/test_helper.rb
|
@@ -110,6 +112,7 @@ summary: Ruby wrapper for interacting with Empresaula's API
|
|
110
112
|
test_files:
|
111
113
|
- test/empresaula-api/config_test.rb
|
112
114
|
- test/empresaula-api/controller/authentication_test.rb
|
115
|
+
- test/empresaula-api/resource/session_test.rb
|
113
116
|
- test/empresaula-api/resource/user_test.rb
|
114
117
|
- test/empresaula-api/test_helpers/user_test.rb
|
115
118
|
- test/test_helper.rb
|