omniauth-applicaster 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d6dac00d1b72d155eb6e5743ee7d3012c40509e0
4
- data.tar.gz: 2870ad6f84ea82b2cc34e988bd25fb645ce60018
3
+ metadata.gz: e551c14cc83eda398d5b50f875d69449addcb08d
4
+ data.tar.gz: 527028283f9b204b66e53925d91350ead8c19cec
5
5
  SHA512:
6
- metadata.gz: 7a6a8c3a3aa7c833285b336322f7f67c32f683c85401d75e282f5b3c9ca0ab2d5bcc5275c505fb698b39e486269e2eb97b17b97f1442431b0e52069b943908bd
7
- data.tar.gz: a324dc3dd511666a353158893d28da3314d2d6df28f460c54fb428eaf1ae084a022eb0cf7e15091b73cd22bfb3868c049089488cc9f0188c38fe4f366a8cc380
6
+ metadata.gz: 8e65beba13fd06bea78988069a4cbaf872a492da5941cbda4ea52795e6c95717378bd1895a096b2c338fdba1962c7ffd86d641cfe3f29e3ba13a4dcec17be3ae
7
+ data.tar.gz: 06349a9fab30e5a1a31fdbacd10f338534fd39343c9e834ece3f22126ea7361b55ddf7c1cc2191ca9935e2d3e3dfd5d8563170cc5a5f5ab8be81d8a370a67c8f
data/README.md CHANGED
@@ -111,6 +111,31 @@ accounts = Applicaster::Accounts.accounts_from_token(access_token)
111
111
  # accounts is an array of `Applicaster::Accounts::User` objects
112
112
  ```
113
113
 
114
+
115
+ ### Testing your app
116
+
117
+ The library contains helpers to make functional tests easier
118
+
119
+ In `spec/spec_helper.rb` add:
120
+ ```ruby
121
+ RSpec.configure do |config|
122
+ config.include Applicaster::Test::Accounts::WebMockHelper
123
+ end
124
+ ```
125
+
126
+ You can use `accounts_mock_data` to access the fake data, for example:
127
+ `accounts_mock_data.all_accounts_attributes.first`
128
+
129
+ in example groups that use the client_credentials flow use:
130
+ ```ruby
131
+ before do
132
+ stub_client_credentials_request
133
+ stub_accounts_index_response(token: client_credentials_token)
134
+ end
135
+ ```
136
+
137
+
138
+
114
139
  ## Contributing
115
140
 
116
141
  1. Fork it ( https://github.com/[my-github-username]/omniauth-applicaster/fork )
@@ -0,0 +1,18 @@
1
+ module Applicaster
2
+ module Test
3
+ module Accounts
4
+ autoload :MockData, "applicaster/test/accounts/mock_data"
5
+ autoload :WebMockHelper, "applicaster/test/accounts/web_mock_helper"
6
+ end
7
+
8
+ module_function
9
+ def inc_sequence
10
+ @sequence ||= 0
11
+ @sequence += 1
12
+ end
13
+
14
+ def generate_object_id(sequence = inc_sequence)
15
+ sprintf("11223344%016d", sequence)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,19 @@
1
+ module Applicaster
2
+ module Test
3
+ module Accounts
4
+ class MockData
5
+ def all_accounts_attributes
6
+ @all_accounts_attributes ||= (1..2).map do |i|
7
+ sequence = Test.inc_sequence
8
+ id = Test.generate_object_id(sequence)
9
+ {
10
+ id: id,
11
+ name: "Test Account #{sequence}",
12
+ old_id: id,
13
+ }
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,54 @@
1
+ begin
2
+ require "webmock/rspec"
3
+ rescue NameError
4
+ warn "webmock is not installed."
5
+ warn "Applicaster::Test::Accounts::WebMockHelper uses webmock to setup stubs."
6
+ end
7
+
8
+ module Applicaster
9
+ module Test
10
+ module Accounts
11
+ module WebMockHelper
12
+ def stub_accounts_index_response(options = {})
13
+ accounts = options[:accounts] || accounts_mock_data.all_accounts_attributes
14
+
15
+ stub_request(:get, accounts_base_url.join("/api/v1/accounts.json"))
16
+ .with(query: { access_token: options[:token] })
17
+ .to_return(successful_json_response(accounts))
18
+ end
19
+
20
+ def stub_client_credentials_request
21
+ url = accounts_base_url.join("/oauth/token")
22
+ url.user = Applicaster::Accounts.config.client_id
23
+ url.password = Applicaster::Accounts.config.client_secret
24
+
25
+ stub_request(:post, url)
26
+ .with(body: { "grant_type" => "client_credentials" })
27
+ .to_return(successful_json_response(access_token: client_credentials_token))
28
+ end
29
+
30
+ def accounts_mock_data
31
+ @accounts_mock_data ||= Test::Accounts::MockData.new
32
+ end
33
+
34
+ def client_credentials_token
35
+ "client-credentials-token"
36
+ end
37
+
38
+ private
39
+
40
+ def successful_json_response(body)
41
+ {
42
+ status: 200,
43
+ body: body.to_json,
44
+ headers: { "Content-Type" => "application/json" },
45
+ }
46
+ end
47
+
48
+ def accounts_base_url
49
+ Addressable::URI.parse(Applicaster::Accounts.config.base_url)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -2,4 +2,5 @@ require "omniauth-applicaster/version"
2
2
  require "applicaster/accounts"
3
3
  require "applicaster/auth_helpers"
4
4
  require "applicaster/sessions_controller_mixin"
5
+ require "applicaster/test"
5
6
  require 'omniauth/strategies/applicaster'
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Applicaster
3
- VERSION = "1.4.0"
3
+ VERSION = "1.5.0"
4
4
  end
5
5
  end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Applicaster::Test::Accounts::MockData do
4
+ subject(:mock_data) { described_class.new }
5
+
6
+ describe "#all_accounts_attributes" do
7
+ it "has 2 elements" do
8
+ expect(mock_data.all_accounts_attributes.size).to eq(2)
9
+ end
10
+
11
+ describe "returned account" do
12
+ subject(:account) { mock_data.all_accounts_attributes.first }
13
+ let(:id_regexp) { /^11223344\d{16}$/ }
14
+
15
+ it { is_expected.to include(id: id_regexp) }
16
+ it { is_expected.to include(old_id: id_regexp) }
17
+ it { is_expected.to include(name: /Test Account \d+/) }
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,11 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe Applicaster::Test::Accounts::WebMockHelper do
4
+ let(:including_class) { Class.new { include(Applicaster::Test::Accounts::WebMockHelper) } }
5
+ subject(:instace) { including_class.new }
6
+
7
+ it { is_expected.to respond_to(:stub_accounts_index_response) }
8
+ it { is_expected.to respond_to(:stub_client_credentials_request) }
9
+ it { is_expected.to respond_to(:accounts_mock_data) }
10
+ it { is_expected.to respond_to(:client_credentials_token) }
11
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-applicaster
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neer Friedman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-20 00:00:00.000000000 Z
11
+ date: 2015-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -142,6 +142,9 @@ files:
142
142
  - lib/applicaster/accounts/user.rb
143
143
  - lib/applicaster/auth_helpers.rb
144
144
  - lib/applicaster/sessions_controller_mixin.rb
145
+ - lib/applicaster/test.rb
146
+ - lib/applicaster/test/accounts/mock_data.rb
147
+ - lib/applicaster/test/accounts/web_mock_helper.rb
145
148
  - lib/omniauth-applicaster.rb
146
149
  - lib/omniauth-applicaster/version.rb
147
150
  - lib/omniauth/strategies/applicaster.rb
@@ -150,6 +153,8 @@ files:
150
153
  - spec/lib/applicaster/accounts/configuration_spec.rb
151
154
  - spec/lib/applicaster/accounts_spec.rb
152
155
  - spec/lib/applicaster/auth_helpers_spec.rb
156
+ - spec/lib/applicaster/test/accounts/mock_data_spec.rb
157
+ - spec/lib/applicaster/test/accounts/webmock_helper_spec.rb
153
158
  - spec/spec_helper.rb
154
159
  - spec/support/dummy_controller.rb
155
160
  - spec/support/env_variable_helper.rb
@@ -184,6 +189,8 @@ test_files:
184
189
  - spec/lib/applicaster/accounts/configuration_spec.rb
185
190
  - spec/lib/applicaster/accounts_spec.rb
186
191
  - spec/lib/applicaster/auth_helpers_spec.rb
192
+ - spec/lib/applicaster/test/accounts/mock_data_spec.rb
193
+ - spec/lib/applicaster/test/accounts/webmock_helper_spec.rb
187
194
  - spec/spec_helper.rb
188
195
  - spec/support/dummy_controller.rb
189
196
  - spec/support/env_variable_helper.rb