cf-uaa-lib 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/.yardopts ADDED
@@ -0,0 +1,5 @@
1
+ --main README.md
2
+ --no-private
3
+ --title "Cloud Foundry UAA Client API"
4
+ lib/**/*.rb - LICENSE.TXT NOTICE.TXT
5
+
data/Rakefile CHANGED
@@ -13,7 +13,6 @@
13
13
  require "rspec/core/rake_task"
14
14
  require "bundler/gem_tasks" # only available in bundler >= 1.0.15
15
15
  require "ci/reporter/rake/rspec"
16
- require "yard"
17
16
 
18
17
  ENV['CI_REPORTS'] = File.expand_path("spec_reports")
19
18
  COV_REPORTS = File.expand_path("coverage")
@@ -22,12 +21,6 @@ task :default => [:test]
22
21
  task :tests => [:test]
23
22
  task :spec => [:test]
24
23
 
25
- YARD::Rake::YardocTask.new do |t|
26
- t.files = ['lib/**/*.rb', '-', 'LICENSE.TXT', 'NOTICE.TXT']
27
- t.options = ['--main', 'README.md', '--no-private',
28
- '--title', 'Cloud Foundry UAA Client API']
29
- end
30
-
31
24
  RSpec::Core::RakeTask.new("test") do |t|
32
25
  t.rspec_opts = ["--format", "documentation", "--colour"]
33
26
  t.pattern = "spec/**/*_spec.rb"
data/cf-uaa-lib.gemspec CHANGED
@@ -36,8 +36,6 @@ Gem::Specification.new do |s|
36
36
 
37
37
  s.add_development_dependency "bundler"
38
38
  s.add_development_dependency "rake"
39
- s.add_development_dependency "yard"
40
- s.add_development_dependency "redcarpet"
41
39
  s.add_development_dependency "rspec"
42
40
  s.add_development_dependency "simplecov"
43
41
  s.add_development_dependency "simplecov-rcov"
data/lib/uaa/http.rb CHANGED
@@ -71,19 +71,22 @@ module Http
71
71
  Base64.strict_encode64(str): [str].pack("m").gsub(/\n/, ''))
72
72
  end
73
73
 
74
+ JSON_UTF8 = "application/json;charset=utf-8"
75
+ FORM_UTF8 = "application/x-www-form-urlencoded;charset=utf-8"
76
+
74
77
  private
75
78
 
76
79
  def json_get(target, path = nil, style = nil, headers = {})
77
80
  raise ArgumentError unless style.nil? || style.is_a?(Symbol)
78
- json_parse_reply(style, *http_get(target, path, headers.merge("accept" => "application/json")))
81
+ json_parse_reply(style, *http_get(target, path, headers.merge("accept" => JSON_UTF8)))
79
82
  end
80
83
 
81
84
  def json_post(target, path, body, headers = {})
82
- http_post(target, path, Util.json(body), headers.merge("content-type" => "application/json"))
85
+ http_post(target, path, Util.json(body), headers.merge("content-type" => JSON_UTF8))
83
86
  end
84
87
 
85
88
  def json_put(target, path, body, headers = {})
86
- http_put(target, path, Util.json(body), headers.merge("content-type" => "application/json"))
89
+ http_put(target, path, Util.json(body), headers.merge("content-type" => JSON_UTF8))
87
90
  end
88
91
 
89
92
  def json_parse_reply(style, status, body, headers)
data/lib/uaa/misc.rb CHANGED
@@ -98,9 +98,8 @@ class Misc
98
98
  # @return [Hash]
99
99
  def self.password_strength(target, password)
100
100
  json_parse_reply(@key_style, *request(target, :post, '/password/score',
101
- Util.encode_form(:password => password),
102
- "content-type" => "application/x-www-form-urlencoded",
103
- "accept" => "application/json"))
101
+ Util.encode_form(:password => password), "content-type" => Http::FORM_UTF8,
102
+ "accept" => Http::JSON_UTF8))
104
103
  end
105
104
 
106
105
  end
data/lib/uaa/scim.rb CHANGED
@@ -209,9 +209,8 @@ class Scim
209
209
  end
210
210
  end
211
211
 
212
- # Gets id/name pairs for given names.
212
+ # Gets id/name pairs for given names. For naming attribute of each object type see {Scim}
213
213
  # @param type (see #add)
214
- # @param [Array<String>] names. For naming attribute of each object type see {Scim}
215
214
  # @return [Array] array of name/id hashes for each object found
216
215
  def ids(type, *names)
217
216
  na = type_info(type, :name_attr)
@@ -46,8 +46,7 @@ class TokenCoder
46
46
 
47
47
  # Constructs a signed JWT.
48
48
  # @param token_body Contents of the token in any object that can be converted to JSON.
49
- # @param skey (see #initialize)
50
- # @param pkey (see #initialize)
49
+ # @param options (see #initialize)
51
50
  # @return [String] a signed JWT token string in the form "xxxx.xxxxx.xxxx".
52
51
  def self.encode(token_body, options = {}, obsolete1 = nil, obsolete2 = nil)
53
52
  unless options.is_a?(Hash) && obsolete1.nil? && obsolete2.nil?
@@ -78,9 +77,7 @@ class TokenCoder
78
77
  # The JWT header indicates what signature algorithm was used and the
79
78
  # corresponding key is used to verify the signature (if +verify+ is true).
80
79
  # @param [String] token A JWT token as returned by {TokenCoder.encode}
81
- # @param skey (see #initialize)
82
- # @param pkey (see #initialize)
83
- # @param [Boolean] verify
80
+ # @param options (see #initialize)
84
81
  # @return [Hash] the token contents
85
82
  def self.decode(token, options = {}, obsolete1 = nil, obsolete2 = nil)
86
83
  unless options.is_a?(Hash) && obsolete1.nil? && obsolete2.nil?
@@ -112,17 +109,26 @@ class TokenCoder
112
109
 
113
110
  # Creates a new token en/decoder for a service that is associated with
114
111
  # the the audience_ids, the symmetrical token validation key, and the
115
- # public and/or private keys. Parameters:
116
- # @param [Array<String>, String] audience_ids An array or space separated
117
- # strings of values which indicate the token is intended for this service
118
- # instance. It will be compared with tokens as they are decoded to ensure
119
- # that the token was intended for this audience.
120
- # @param [String] skey is used to sign and validate tokens using symmetrical
121
- # key algoruthms
122
- # @param [String, File, OpenSSL::PKey::PKey] pkey may be a String, File in
123
- # PEM or DER formats. May include public and/or private key data. The
124
- # private key is used to sign tokens and the public key is used to
125
- # validate tokens.
112
+ # public and/or private keys.
113
+ # @param [Hash] options Supported options:
114
+ # * :audience_ids [Array<String>, String] -- An array or space separated
115
+ # string of values which indicate the token is intended for this service
116
+ # instance. It will be compared with tokens as they are decoded to ensure
117
+ # that the token was intended for this audience.
118
+ # * :skey [String] -- used to sign and validate tokens using symmetrical
119
+ # key algoruthms
120
+ # * :pkey [String, File, OpenSSL::PKey::PKey] -- may be a String or File in
121
+ # PEM or DER formats. May include public and/or private key data. The
122
+ # private key is used to sign tokens and the public key is used to
123
+ # validate tokens.
124
+ # * :algorithm [String] -- Sets default used for encoding. May be HS256,
125
+ # HS384, HS512, RS256, RS384, RS512, or none.
126
+ # * :verify [String] -- Verifies signatures when decoding tokens. Defaults
127
+ # to +true+.
128
+ # @note the TokenCoder instance must be configured with the appropriate
129
+ # key material to support particular algorithm families and operations
130
+ # -- i.e. :pkey must include a private key in order to sign tokens with
131
+ # the RS algorithms.
126
132
  def initialize(options = {}, obsolete1 = nil, obsolete2 = nil)
127
133
  unless options.is_a?(Hash) && obsolete1.nil? && obsolete2.nil?
128
134
  # deprecated: def initialize(audience_ids, skey, pkey = nil)
@@ -135,10 +141,8 @@ class TokenCoder
135
141
 
136
142
  # Encode a JWT token. Takes a hash of values to use as the token body.
137
143
  # Returns a signed token in JWT format (header, body, signature).
138
- # Algorithm may be HS256, HS384, HS512, RS256, RS384, RS512, or none --
139
- # assuming the TokenCoder instance is configured with the appropriate
140
- # key -- i.e. pkey must include a private key for the RS algorithms.
141
144
  # @param token_body (see TokenCoder.encode)
145
+ # @param [String] algorithm -- overrides default. See {#initialize} for possible values.
142
146
  # @return (see TokenCoder.encode)
143
147
  def encode(token_body = {}, algorithm = nil)
144
148
  token_body[:aud] = @options[:audience_ids] if @options[:audience_ids] && !token_body[:aud] && !token_body['aud']
@@ -72,8 +72,7 @@ class TokenIssuer
72
72
  if scope = Util.arglist(params.delete(:scope))
73
73
  params[:scope] = Util.strlist(scope)
74
74
  end
75
- headers = {'content-type' => 'application/x-www-form-urlencoded',
76
- 'accept' => 'application/json',
75
+ headers = {'content-type' => FORM_UTF8, 'accept' => JSON_UTF8,
77
76
  'authorization' => Http.basic_auth(@client_id, @client_secret) }
78
77
  reply = json_parse_reply(@key_style, *request(@token_target, :post,
79
78
  '/oauth/token', Util.encode_form(params), headers))
@@ -134,7 +133,7 @@ class TokenIssuer
134
133
  uri = authorize_path_args("token", redir_uri, scope, state = random_state)
135
134
 
136
135
  # the accept header is only here so the uaa will issue error replies in json to aid debugging
137
- headers = {'content-type' => 'application/x-www-form-urlencoded', 'accept' => 'application/json' }
136
+ headers = {'content-type' => FORM_UTF8, 'accept' => JSON_UTF8 }
138
137
  body = Util.encode_form(credentials.merge(:source => 'credentials'))
139
138
  status, body, headers = request(@target, :post, uri, body, headers)
140
139
  raise BadResponse, "status #{status}" unless status == 302
@@ -184,8 +183,7 @@ class TokenIssuer
184
183
  # @param [String] redirect_uri (see #authcode_uri)
185
184
  # @return (see #authcode_uri)
186
185
  def autologin_uri(redirect_uri, credentials, scope = nil)
187
- headers = {'content-type' => 'application/x-www-form-urlencoded',
188
- 'accept' => 'application/json',
186
+ headers = {'content-type' => FORM_UTF8, 'accept' => JSON_UTF8,
189
187
  'authorization' => Http.basic_auth(@client_id, @client_secret) }
190
188
  body = Util.encode_form(credentials)
191
189
  reply = json_parse_reply(nil, *request(@target, :post, "/autologin", body, headers))
data/lib/uaa/version.rb CHANGED
@@ -14,6 +14,6 @@
14
14
  # Cloud Foundry namespace
15
15
  module CF
16
16
  module UAA
17
- VERSION = "1.3.2"
17
+ VERSION = "1.3.3"
18
18
  end
19
19
  end
data/spec/misc_spec.rb CHANGED
@@ -29,7 +29,7 @@ describe Misc do
29
29
  url.should == "https://uaa.cloudfoundry.com/login"
30
30
  method.should == :get
31
31
  headers["content-type"].should be_nil
32
- headers["accept"].should =~ /application\/json/
32
+ headers["accept"].gsub(/\s/, '').should =~ /application\/json;charset=utf-8/i
33
33
  [200, '{"commit_id":"12345","prompts":["one","two"]}', {"content-type" => "application/json"}]
34
34
  end
35
35
  result = Misc.server("https://uaa.cloudfoundry.com")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cf-uaa-lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.3.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -63,38 +63,6 @@ dependencies:
63
63
  - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
- - !ruby/object:Gem::Dependency
67
- name: yard
68
- requirement: !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - ! '>='
72
- - !ruby/object:Gem::Version
73
- version: '0'
74
- type: :development
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- none: false
78
- requirements:
79
- - - ! '>='
80
- - !ruby/object:Gem::Version
81
- version: '0'
82
- - !ruby/object:Gem::Dependency
83
- name: redcarpet
84
- requirement: !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ! '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- none: false
94
- requirements:
95
- - - ! '>='
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
66
  - !ruby/object:Gem::Dependency
99
67
  name: rspec
100
68
  requirement: !ruby/object:Gem::Requirement
@@ -191,6 +159,7 @@ extensions: []
191
159
  extra_rdoc_files: []
192
160
  files:
193
161
  - .gitignore
162
+ - .yardopts
194
163
  - Gemfile
195
164
  - LICENSE.TXT
196
165
  - NOTICE.TXT
@@ -226,7 +195,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
226
195
  version: '0'
227
196
  segments:
228
197
  - 0
229
- hash: -1911536519495271904
198
+ hash: 1871594390469590559
230
199
  required_rubygems_version: !ruby/object:Gem::Requirement
231
200
  none: false
232
201
  requirements:
@@ -235,12 +204,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
235
204
  version: '0'
236
205
  segments:
237
206
  - 0
238
- hash: -1911536519495271904
207
+ hash: 1871594390469590559
239
208
  requirements: []
240
209
  rubyforge_project: cf-uaa-lib
241
- rubygems_version: 1.8.23
210
+ rubygems_version: 1.8.24
242
211
  signing_key:
243
212
  specification_version: 3
244
213
  summary: Client library for CloudFoundry UAA
245
214
  test_files: []
246
- has_rdoc: