ey_services_api 0.3.11 → 0.3.12

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/EYIntegratedGemfile CHANGED
@@ -10,10 +10,14 @@ group :test, :development do
10
10
  #private Gem deps of fake_awsm
11
11
  gem 'ey_sso', :git => "git@github.com:engineyard/ey_sso.git"
12
12
  gem 'ey_services_api_internal', :git => "git@github.com:engineyard/ey_services_api_internal.git"
13
+ # gem 'ey_services_api_internal', :path => "../ey_services_api_internal"
13
14
 
14
15
  #"reals"
15
16
  gem 'tresfiestas', :git => "git@github.com:engineyard/tresfiestas.git"
17
+ # gem 'tresfiestas', :path => "../tresfiestas"
16
18
  gem 'fake_awsm', :git => "git@github.com:engineyard/fake_awsm.git"
19
+ # gem 'fake_awsm', :path => "../fake_awsm"
17
20
 
18
21
  gem 'guard-rspec'
22
+ gem 'pry'
19
23
  end
data/Gemfile CHANGED
@@ -8,4 +8,5 @@ group :test, :development do
8
8
 
9
9
  gem 'rake'
10
10
  gem 'guard-rspec'
11
+ gem 'pry'
11
12
  end
@@ -1,13 +1,14 @@
1
1
  module EY
2
2
  module ServicesAPI
3
- class ServiceAccountResponse < APIStruct.new(:configuration_required, :configuration_url, :message, :provisioned_services_url, :url)
3
+ class ServiceAccountResponse < APIStruct.new(:configuration_required, :configuration_url, :message, :provisioned_services_url, :users_url, :url)
4
4
  def to_hash
5
5
  {
6
6
  :service_account => {
7
7
  :url => self.url,
8
8
  :configuration_required => self.configuration_required,
9
9
  :configuration_url => self.configuration_url,
10
- :provisioned_services_url => self.provisioned_services_url
10
+ :provisioned_services_url => self.provisioned_services_url,
11
+ :users_url => self.users_url,
11
12
  },
12
13
  :message => self.message && self.message.to_hash
13
14
  }
@@ -1,5 +1,5 @@
1
1
  module EY
2
2
  module ServicesAPI
3
- VERSION = "0.3.11"
3
+ VERSION = "0.3.12"
4
4
  end
5
5
  end
data/spec/invoice_spec.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  #because there may be multiple 'spec_helper' in load path when running from external test helper
2
2
  require File.expand_path('../spec_helper.rb', __FILE__)
3
- require 'sinatra'
4
3
 
5
4
  describe EY::ServicesAPI::Invoice do
6
5
  before do
data/spec/message_spec.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  #because there may be multiple 'spec_helper' in load path when running from external test helper
2
2
  require File.expand_path('../spec_helper.rb', __FILE__)
3
- require 'sinatra'
4
3
 
5
4
  #TODO: support a generic message class too?
6
5
  describe EY::ServicesAPI::Message do
@@ -1,6 +1,5 @@
1
1
  #because there may be multiple 'spec_helper' in load path when running from external test helper
2
2
  require File.expand_path('../spec_helper.rb', __FILE__)
3
- require 'sinatra'
4
3
 
5
4
  describe EY::ServicesAPI::ProvisionedServiceCreation do
6
5
 
@@ -1,6 +1,5 @@
1
1
  #because there may be multiple 'spec_helper' in load path when running from external test helper
2
2
  require File.expand_path('../spec_helper.rb', __FILE__)
3
- require 'sinatra'
4
3
 
5
4
  describe EY::ServicesAPI::ServiceAccountCreation do
6
5
 
@@ -0,0 +1,116 @@
1
+ #because there may be multiple 'spec_helper' in load path when running from external test helper
2
+ require File.expand_path('../spec_helper.rb', __FILE__)
3
+
4
+ require 'ey_services_fake/mocking_bird_service'
5
+ class UserHavingService < EyServicesFake::MockingBirdService
6
+ def self.record_of_users
7
+ @record_of_users ||= {}
8
+ end
9
+
10
+ def self.implement_the_app(app)
11
+ super(app)
12
+ app.class_eval do
13
+ get "/api/1/users" do
14
+ content_type :json
15
+ parent.record_of_users.map do |user_id, user|
16
+ {
17
+ "user" => user,
18
+ "url" => "#{parent.base_url}api/1/users/#{user_id}"
19
+ }
20
+ end.to_json
21
+ end
22
+ put "/api/1/users/:ey_user_id" do |ey_user_id|
23
+ content_type :json
24
+ json_post_body = JSON.parse(request.body.read)
25
+ parent.record_of_users[ey_user_id].merge! json_post_body['user']
26
+ {}.to_json
27
+ end
28
+ delete "/api/1/users/:ey_user_id" do |ey_user_id|
29
+ content_type :json
30
+ parent.record_of_users.delete(ey_user_id)
31
+ {}.to_json
32
+ end
33
+ end
34
+ end
35
+
36
+ def self.account_sso_hook(params)
37
+ @record_of_users[params["ey_user_id"]] = {
38
+ 'access_level' => params["access_level"],
39
+ 'ey_user_id' => params["ey_user_id"],
40
+ 'ey_user_email' => params["ey_user_email"],
41
+ 'ey_user_name' => params["ey_user_name"],
42
+ }
43
+ end
44
+
45
+ def self.service_account_creation_params
46
+ super.merge(:users_url => "#{base_url}api/1/users")
47
+ end
48
+
49
+ end
50
+
51
+ describe "users" do
52
+ describe "with a service account" do
53
+ before do
54
+ UserHavingService.record_of_users.clear
55
+ @tresfiestas.actors[:service_provider] = UserHavingService.new
56
+ @service_account = @tresfiestas.service_account
57
+ @messages_url = @service_account[:messages_url]
58
+ @connection = EY::ServicesAPI.connection
59
+ @connection_to_partner_service = EY::ApiHMAC::BaseConnection.new
60
+ @connection_to_partner_service.backend = @tresfiestas.app_for(:service_provider)
61
+ @original_email = @tresfiestas.sso_user.email
62
+ @ey_user_id = @tresfiestas.sso_user.external_service_id.to_s
63
+ end
64
+
65
+ describe "if the service doesn't provide a users_url, when a user SSOs to the service" do
66
+ before do
67
+ UserHavingService.record_of_users.should be_empty
68
+ @connection.update_service_account(@service_account[:url], :users_url => nil)
69
+ response = @connection_to_partner_service.get(@tresfiestas.service_account_sso_url)
70
+ response.status.should eq 200
71
+ UserHavingService.record_of_users.size.should eq 1
72
+ end
73
+
74
+ it "doesn't send the email" do
75
+ UserHavingService.record_of_users[@ey_user_id]['ey_user_email'].should be_nil
76
+ end
77
+ end
78
+
79
+ describe "when a user SSOs to the service" do
80
+ before do
81
+ UserHavingService.record_of_users.should be_empty
82
+ response = @connection_to_partner_service.get(@tresfiestas.service_account_sso_url)
83
+ response.status.should eq 200
84
+ UserHavingService.record_of_users.size.should eq 1
85
+ end
86
+
87
+ it "saves the e-mail" do
88
+ UserHavingService.record_of_users[@ey_user_id]['ey_user_email'].should eq @original_email
89
+ end
90
+
91
+ describe "when a user's e-mail changes" do
92
+ before do
93
+ @new_email = "new_email@example.com"
94
+ @tresfiestas.trigger_mock_user_update(@new_email)
95
+ end
96
+
97
+ it "updates the saved value" do
98
+ @new_email.should_not eq @original_email
99
+ UserHavingService.record_of_users[@ey_user_id]['ey_user_email'].should eq @new_email
100
+ end
101
+ end
102
+
103
+ describe "when a user is removed" do
104
+ before do
105
+ @tresfiestas.trigger_mock_user_delete
106
+ end
107
+
108
+ it "updates the saved value" do
109
+ UserHavingService.record_of_users.size.should eq 0
110
+ end
111
+ end
112
+
113
+ end
114
+
115
+ end
116
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ey_services_api
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 3
9
- - 11
10
- version: 0.3.11
9
+ - 12
10
+ version: 0.3.12
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jacob & Thorben & David & mkb & Josh & Others
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-05-03 00:00:00 Z
18
+ date: 2012-05-08 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rspec
@@ -101,6 +101,7 @@ files:
101
101
  - spec/service_account_creation_spec.rb
102
102
  - spec/service_spec.rb
103
103
  - spec/spec_helper.rb
104
+ - spec/users_spec.rb
104
105
  homepage: https://github.com/engineyard/ey_services_api
105
106
  licenses: []
106
107
 
@@ -130,7 +131,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
131
  requirements: []
131
132
 
132
133
  rubyforge_project: ey_services_api
133
- rubygems_version: 1.8.19
134
+ rubygems_version: 1.8.10
134
135
  signing_key:
135
136
  specification_version: 3
136
137
  summary: API for Partner Services (talks to services.engineyard.com)
@@ -141,3 +142,4 @@ test_files:
141
142
  - spec/service_account_creation_spec.rb
142
143
  - spec/service_spec.rb
143
144
  - spec/spec_helper.rb
145
+ - spec/users_spec.rb