signet 0.14.1 → 0.16.1

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.
@@ -1,194 +0,0 @@
1
- # Copyright (C) 2010 Google Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- require "spec_helper"
15
- require "signet/errors"
16
- require "signet/oauth_2"
17
-
18
- describe Signet::OAuth2 do
19
- # This behavior will almost certainly change in subsequent updates.
20
- describe "when parsing an Authorization header" do
21
- it "should correctly handle HTTP Basic auth-scheme" do
22
- parameters = Signet::OAuth2.parse_authorization_header(
23
- "Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW"
24
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
25
- expect(parameters["client_id"]).to eq "s6BhdRkqt3"
26
- expect(parameters["client_secret"]).to eq "gX1fBat3bV"
27
- end
28
-
29
- it "should correctly handle OAuth auth-scheme" do
30
- parameters = Signet::OAuth2.parse_authorization_header(
31
- "OAuth vF9dft4qmT"
32
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
33
- expect(parameters["access_token"]).to eq "vF9dft4qmT"
34
- end
35
-
36
- it "should correctly handle OAuth auth-scheme with realm" do
37
- parameters = Signet::OAuth2.parse_authorization_header(
38
- 'OAuth vF9dft4qmT, realm="http://sp.example.com/"'
39
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
40
- expect(parameters["access_token"]).to eq "vF9dft4qmT"
41
- expect(parameters["realm"]).to eq "http://sp.example.com/"
42
- end
43
-
44
- it "should correctly handle OAuth auth-scheme with multiple auth-params" do
45
- parameters = Signet::OAuth2.parse_authorization_header(
46
- 'OAuth vF9dft4qmT, first="one", second="two"'
47
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
48
- expect(parameters["access_token"]).to eq "vF9dft4qmT"
49
- expect(parameters["first"]).to eq "one"
50
- expect(parameters["second"]).to eq "two"
51
- end
52
-
53
- it "should liberally handle auth-params with single-quoted strings" do
54
- parameters = Signet::OAuth2.parse_authorization_header(
55
- "OAuth vF9dft4qmT, first='one', second='two'"
56
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
57
- expect(parameters["access_token"]).to eq "vF9dft4qmT"
58
- expect(parameters["first"]).to eq "one"
59
- expect(parameters["second"]).to eq "two"
60
- end
61
-
62
- it "should liberally handle auth-params with unquoted strings" do
63
- parameters = Signet::OAuth2.parse_authorization_header(
64
- "OAuth vF9dft4qmT, first=one, second=two"
65
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
66
- expect(parameters["access_token"]).to eq "vF9dft4qmT"
67
- expect(parameters["first"]).to eq "one"
68
- expect(parameters["second"]).to eq "two"
69
- end
70
-
71
- it "should not allow unquoted strings that do not match tchar" do
72
- expect(lambda do
73
- parameters = Signet::OAuth2.parse_authorization_header(
74
- "OAuth vF9dft4qmT, first=one:1"
75
- )
76
- end).to raise_error(Signet::ParseError)
77
- end
78
-
79
- it "should not parse non-OAuth auth-schemes" do
80
- expect(lambda do
81
- Signet::OAuth2.parse_authorization_header(
82
- 'AuthSub token="GD32CMCL25aZ-v____8B"'
83
- )
84
- end).to raise_error(Signet::ParseError)
85
- end
86
- end
87
-
88
- # This behavior will almost certainly change in subsequent updates.
89
- describe "when parsing a WWW-Authenticate header" do
90
- it "should correctly handle OAuth challenge with auth-params" do
91
- parameters = Signet::OAuth2.parse_www_authenticate_header(
92
- 'OAuth realm="http://sp.example.com/", error="expired_token", ' \
93
- 'error_description="The access token has expired."'
94
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
95
- expect(parameters["realm"]).to eq "http://sp.example.com/"
96
- expect(parameters["error"]).to eq "expired_token"
97
- expect(parameters["error_description"]).to eq "The access token has expired."
98
- end
99
-
100
- it "should liberally handle auth-params with single-quoted strings" do
101
- parameters = Signet::OAuth2.parse_www_authenticate_header(
102
- "OAuth realm='http://sp.example.com/', error='expired_token', " \
103
- "error_description='The access token has expired.'"
104
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
105
- expect(parameters["realm"]).to eq "http://sp.example.com/"
106
- expect(parameters["error"]).to eq "expired_token"
107
- expect(parameters["error_description"]).to eq "The access token has expired."
108
- end
109
-
110
- it "should liberally handle auth-params with token strings" do
111
- parameters = Signet::OAuth2.parse_www_authenticate_header(
112
- 'OAuth realm="http://sp.example.com/", error=expired_token, ' \
113
- 'error_description="The access token has expired."'
114
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
115
- expect(parameters["realm"]).to eq "http://sp.example.com/"
116
- expect(parameters["error"]).to eq "expired_token"
117
- expect(parameters["error_description"]).to eq "The access token has expired."
118
- end
119
-
120
- it "should liberally handle out-of-order auth-params" do
121
- parameters = Signet::OAuth2.parse_www_authenticate_header(
122
- "OAuth error_description='The access token has expired.', " \
123
- "error='expired_token', realm='http://sp.example.com/'"
124
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
125
- expect(parameters["realm"]).to eq "http://sp.example.com/"
126
- expect(parameters["error"]).to eq "expired_token"
127
- expect(parameters["error_description"]).to eq "The access token has expired."
128
- end
129
-
130
- it "should not allow unquoted strings that do not match tchar" do
131
- expect(lambda do
132
- Signet::OAuth2.parse_www_authenticate_header(
133
- "OAuth realm=http://sp.example.com/, error=expired_token, " \
134
- 'error_description="The access token has expired."'
135
- )
136
- end).to raise_error(Signet::ParseError)
137
- end
138
-
139
- it "should not parse non-OAuth challenges" do
140
- expect(lambda do
141
- Signet::OAuth2.parse_www_authenticate_header(
142
- 'AuthSub realm="https://www.google.com/accounts/AuthSubRequest"'
143
- )
144
- end).to raise_error(Signet::ParseError)
145
- end
146
- end
147
-
148
- describe "when generating a Basic Authorization header" do
149
- it "should correctly handle client ID and password pairs" do
150
- # Example from OAuth 2 spec
151
- expect(Signet::OAuth2.generate_basic_authorization_header(
152
- "s6BhdRkqt3", "gX1fBat3bV"
153
- )).to eq "Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW"
154
- end
155
-
156
- it "should correctly encode using the alogrithm given in RFC 2617" do
157
- # Example from RFC 2617
158
- expect(Signet::OAuth2.generate_basic_authorization_header(
159
- "Aladdin", "open sesame"
160
- )).to eq "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
161
- end
162
- end
163
-
164
- describe "when parsing a token response body" do
165
- it "should correctly handle just an access token" do
166
- expect(Signet::OAuth2.parse_credentials(
167
- '{"access_token": "12345"}',
168
- "application/json; charset=utf-8"
169
- )).to eq ({ "access_token" => "12345" })
170
- end
171
-
172
- it "should handle form encoded responses" do
173
- expect(Signet::OAuth2.parse_credentials(
174
- "access_token=12345&expires=1000",
175
- "application/x-www-form-urlencoded; charset=utf-8"
176
- )).to eq("access_token" => "12345", "expires" => "1000")
177
- end
178
-
179
- it "should raise an error for an invalid body" do
180
- expect(lambda do
181
- Signet::OAuth2.parse_credentials(
182
- "This is not JSON.",
183
- "application/json"
184
- )
185
- end).to raise_error(MultiJson::DecodeError)
186
- end
187
-
188
- it "should raise an error for a bogus body" do
189
- expect(lambda do
190
- Signet::OAuth2.parse_credentials :bogus, "application/json"
191
- end).to raise_error(TypeError)
192
- end
193
- end
194
- end
data/spec/signet_spec.rb DELETED
@@ -1,78 +0,0 @@
1
- # Copyright (C) 2010 Google Inc.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
- require "spec_helper"
15
- require "signet/oauth_2"
16
-
17
- describe Signet do
18
- describe "when parsing an auth param list" do
19
- it "should correctly handle commas" do
20
- parameters = Signet.parse_auth_param_list(
21
- 'a="1, 2" , b="3,4",c="5 , 6" ,d="7 ,8"'
22
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
23
- expect(parameters["a"]).to eq "1, 2"
24
- expect(parameters["b"]).to eq "3,4"
25
- expect(parameters["c"]).to eq "5 , 6"
26
- expect(parameters["d"]).to eq "7 ,8"
27
- end
28
-
29
- it "should correctly handle backslash-escaped pairs" do
30
- parameters = Signet.parse_auth_param_list(
31
- 'token="\t\o\k\e\n" sigalg="\s\i\g\a\l\g" data="\d\a\t\a"'
32
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
33
- expect(parameters["token"]).to eq "token"
34
- expect(parameters["sigalg"]).to eq "sigalg"
35
- expect(parameters["data"]).to eq "data"
36
- end
37
-
38
- it "should liberally handle space-separated auth-param lists" do
39
- parameters = Signet.parse_auth_param_list(
40
- 'token="token" sigalg="sigalg" data="data" sig="sig"'
41
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
42
- expect(parameters["token"]).to eq "token"
43
- expect(parameters["sigalg"]).to eq "sigalg"
44
- expect(parameters["data"]).to eq "data"
45
- expect(parameters["sig"]).to eq "sig"
46
- end
47
-
48
- it "should liberally handle single-quoted auth-param lists" do
49
- parameters = Signet.parse_auth_param_list(
50
- "token='token' sigalg='sigalg' data='data' sig='sig'"
51
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
52
- expect(parameters["token"]).to eq "token"
53
- expect(parameters["sigalg"]).to eq "sigalg"
54
- expect(parameters["data"]).to eq "data"
55
- expect(parameters["sig"]).to eq "sig"
56
- end
57
-
58
- it "should liberally handle unquoted auth-param lists" do
59
- parameters = Signet.parse_auth_param_list(
60
- "token=token sigalg=sigalg data=data sig=sig"
61
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
62
- expect(parameters["token"]).to eq "token"
63
- expect(parameters["sigalg"]).to eq "sigalg"
64
- expect(parameters["data"]).to eq "data"
65
- expect(parameters["sig"]).to eq "sig"
66
- end
67
-
68
- it "should liberally handle auth-param lists with empty sections" do
69
- parameters = Signet.parse_auth_param_list(
70
- "token=token, , sigalg=sigalg,, data=data, sig=sig"
71
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
72
- expect(parameters["token"]).to eq "token"
73
- expect(parameters["sigalg"]).to eq "sigalg"
74
- expect(parameters["data"]).to eq "data"
75
- expect(parameters["sig"]).to eq "sig"
76
- end
77
- end
78
- end
data/spec/spec.opts DELETED
@@ -1,2 +0,0 @@
1
- --colour
2
- --format documentation
data/spec/spec_helper.rb DELETED
@@ -1,10 +0,0 @@
1
- $LOAD_PATH.uniq!
2
-
3
- require "rubygems"
4
- require "signet"
5
- require "rspec"
6
- require "simplecov"
7
- require "faraday"
8
-
9
- SimpleCov.start if ENV["COVERAGE"]
10
- Faraday::Adapter.load_middleware :test
@@ -1,17 +0,0 @@
1
- RSpec.describe "spec_helper.rb" do
2
- let(:spec_dir) { __dir__ }
3
- let(:root_dir) { File.expand_path File.join(spec_dir, "..") }
4
- let(:lib_dir) { File.expand_path File.join(root_dir, "lib") }
5
-
6
- describe "spec_dir" do
7
- it "is already in $LOAD_PATH" do
8
- expect($LOAD_PATH).to include spec_dir
9
- end
10
- end
11
-
12
- describe "lib_dir" do
13
- it "is already in $LOAD_PATH" do
14
- expect($LOAD_PATH).to include lib_dir
15
- end
16
- end
17
- end
data/website/index.html DELETED
@@ -1,95 +0,0 @@
1
- <!DOCTYPE html>
2
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
3
- <head>
4
- <meta charset="utf-8"/>
5
- <title>Signet</title>
6
- <style type="text/css">
7
- * {
8
- font-size: 100%;
9
- margin: 0;
10
- padding: 0;
11
- }
12
-
13
- body {
14
- font-family: "Lucida Grande", Verdana, sans-serif;
15
- margin: 1em;
16
- }
17
-
18
- a {
19
- color: #880000;
20
- }
21
-
22
- a:visited {
23
- color: #333333;
24
- }
25
-
26
- h1 {
27
- font-size: 2em;
28
- margin: 0 0 0.8em 0;
29
- text-align: center;
30
- }
31
-
32
- h2 {
33
- font-size: 1em;
34
- margin: 0.8em 0;
35
- }
36
-
37
- p {
38
- margin: 0.8em 0;
39
- }
40
-
41
- ul {
42
- font-size: 0.9em;
43
- margin: 0 0 0 1.5em;
44
- }
45
-
46
- div {
47
- width: 50%;
48
- margin: 0 auto;
49
- padding: 0.8em;
50
- background-color: #AA5852;
51
- border: 2px solid #C2645D;
52
- }
53
-
54
- @media print {
55
- body {
56
- font-size: 0.9em;
57
- }
58
-
59
- a {
60
- text-decoration: none;
61
- color: #000;
62
- }
63
- }
64
- </style>
65
- </head>
66
- <body>
67
- <h1>Signet</h1>
68
- <div>
69
- <p>
70
- Signet is an OAuth 1.0 / OAuth 2.0 implementation.
71
- </p>
72
- <ul>
73
- <li>
74
- <a href="http://rubyforge.org/projects/signet/">
75
- Project Page
76
- </a>
77
- </li>
78
- <li>
79
- <a href="http://github.com/sporkmonger/signet/tree/">
80
- GitHub Page
81
- </a>
82
- </li>
83
- <li><a href="/api/">API</a></li>
84
- <li><a href="/specdoc/">Specifications</a></li>
85
- <li><a href="/coverage/">Code Coverage</a></li>
86
- </ul>
87
- <p>
88
- You know what to do:
89
- </p>
90
- <p>
91
- <code>sudo gem install signet</code>
92
- </p>
93
- </div>
94
- </body>
95
- </html>