signet 0.15.0 → 0.16.0

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,61 +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"
16
- require "signet/oauth_1"
17
- require "signet/oauth_1/signature_methods/hmac_sha1"
18
-
19
- describe Signet::OAuth1::HMACSHA1 do
20
- it "should correctly generate a signature" do
21
- method = "GET"
22
- uri = "http://photos.example.net/photos"
23
- parameters = {
24
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
25
- "oauth_token" => "nnch734d00sl2jdk",
26
- "oauth_signature_method" => "HMAC-SHA1",
27
- "oauth_timestamp" => "1191242096",
28
- "oauth_nonce" => "kllo9940pd9333jh",
29
- "oauth_version" => "1.0",
30
- "file" => "vacation.jpg",
31
- "size" => "original"
32
- }
33
- client_credential_secret = "kd94hf93k423kf44"
34
- token_credential_secret = "pfkkdhi9sl3r4s00"
35
- base_string = Signet::OAuth1.generate_base_string method, uri, parameters
36
- expect(Signet::OAuth1::HMACSHA1.generate_signature(
37
- base_string, client_credential_secret, token_credential_secret
38
- )).to eq "tR3+Ty81lMeYAr/Fid0kMTYa/WM="
39
- end
40
-
41
- it "should correctly generate a signature" do
42
- method = "GET"
43
- uri = "http://photos.example.net/photos"
44
- parameters = {
45
- "oauth_consumer_key" => "www.example.com",
46
- "oauth_token" => "4/QL2GT6b5uznYem1ZGH6v+-9mMvRL",
47
- "oauth_signature_method" => "HMAC-SHA1",
48
- "oauth_timestamp" => "1191242096",
49
- "oauth_nonce" => "kllo9940pd9333jh",
50
- "oauth_version" => "1.0",
51
- "file" => "vacation.jpg",
52
- "size" => "original"
53
- }
54
- client_credential_secret = "Kv+o2XXL/9RxkQW3lO3QTVlH"
55
- token_credential_secret = "QllSuL9eQ5FXFO1Z/HcgL4ON"
56
- base_string = Signet::OAuth1.generate_base_string method, uri, parameters
57
- expect(Signet::OAuth1::HMACSHA1.generate_signature(
58
- base_string, client_credential_secret, token_credential_secret
59
- )).to eq "G/nkdbmbpEA+6RD1Sc5uIefhFfQ="
60
- end
61
- end
@@ -1,61 +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"
16
- require "signet/oauth_1"
17
- require "signet/oauth_1/signature_methods/plaintext"
18
-
19
- describe Signet::OAuth1::PLAINTEXT do
20
- it "should correctly generate a signature" do
21
- method = "GET"
22
- uri = "http://photos.example.net/photos"
23
- parameters = {
24
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
25
- "oauth_token" => "nnch734d00sl2jdk",
26
- "oauth_signature_method" => "HMAC-SHA1",
27
- "oauth_timestamp" => "1191242096",
28
- "oauth_nonce" => "kllo9940pd9333jh",
29
- "oauth_version" => "1.0",
30
- "file" => "vacation.jpg",
31
- "size" => "original"
32
- }
33
- client_credential_secret = "kd94hf93k423kf44"
34
- token_credential_secret = "pfkkdhi9sl3r4s00"
35
- base_string = Signet::OAuth1.generate_base_string method, uri, parameters
36
- expect(Signet::OAuth1::PLAINTEXT.generate_signature(
37
- base_string, client_credential_secret, token_credential_secret
38
- )).to eq "kd94hf93k423kf44%26pfkkdhi9sl3r4s00"
39
- end
40
-
41
- it "should correctly generate a signature" do
42
- method = "GET"
43
- uri = "http://photos.example.net/photos"
44
- parameters = {
45
- "oauth_consumer_key" => "www.example.com",
46
- "oauth_token" => "4/QL2GT6b5uznYem1ZGH6v+-9mMvRL",
47
- "oauth_signature_method" => "HMAC-SHA1",
48
- "oauth_timestamp" => "1191242096",
49
- "oauth_nonce" => "kllo9940pd9333jh",
50
- "oauth_version" => "1.0",
51
- "file" => "vacation.jpg",
52
- "size" => "original"
53
- }
54
- client_credential_secret = "Kv+o2XXL/9RxkQW3lO3QTVlH"
55
- token_credential_secret = "QllSuL9eQ5FXFO1Z/HcgL4ON"
56
- base_string = Signet::OAuth1.generate_base_string method, uri, parameters
57
- expect(Signet::OAuth1::PLAINTEXT.generate_signature(
58
- base_string, client_credential_secret, token_credential_secret
59
- )).to eq "Kv%252Bo2XXL%252F9RxkQW3lO3QTVlH%26QllSuL9eQ5FXFO1Z%252FHcgL4ON"
60
- end
61
- end
@@ -1,126 +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"
16
- require "signet/oauth_1"
17
- require "signet/oauth_1/signature_methods/rsa_sha1"
18
-
19
- describe Signet::OAuth1::RSASHA1 do
20
- it "should correctly generate a signature" do
21
- method = "GET"
22
- uri = "http://term.ie/oauth/example/request_token.php"
23
- parameters = {
24
- "oauth_consumer_key" => "key",
25
- "oauth_signature_method" => "RSA-SHA1",
26
- "oauth_timestamp" => "1377815426",
27
- "oauth_nonce" => "c3839c47cb204a20e042b11a5cc9f971",
28
- "oauth_version" => "1.0"
29
- }
30
- client_credential_secret = "-----BEGIN PRIVATE KEY-----
31
- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V
32
- A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d
33
- 7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ
34
- hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H
35
- X9u2AC2ry8vD/l7cqedtwMPp9k7TubgNFo+NGvKsl2ynyprOZR1xjQ7WgrgVB+mm
36
- uScOM/5HVceFuGRDhYTCObE+y1kxRloNYXnx3ei1zbeYLPCHdhxRYW7T0qcynNmw
37
- rn05/KO2RLjgQNalsQJBANeA3Q4Nugqy4QBUCEC09SqylT2K9FrrItqL2QKc9v0Z
38
- zO2uwllCbg0dwpVuYPYXYvikNHHg+aCWF+VXsb9rpPsCQQDWR9TT4ORdzoj+Nccn
39
- qkMsDmzt0EfNaAOwHOmVJ2RVBspPcxt5iN4HI7HNeG6U5YsFBb+/GZbgfBT3kpNG
40
- WPTpAkBI+gFhjfJvRw38n3g/+UeAkwMI2TJQS4n8+hid0uus3/zOjDySH3XHCUno
41
- cn1xOJAyZODBo47E+67R4jV1/gzbAkEAklJaspRPXP877NssM5nAZMU0/O/NGCZ+
42
- 3jPgDUno6WbJn5cqm8MqWhW1xGkImgRk+fkDBquiq4gPiT898jusgQJAd5Zrr6Q8
43
- AO/0isr/3aa6O6NLQxISLKcPDk2NOccAfS/xOtfOz4sJYM3+Bs4Io9+dZGSDCA54
44
- Lw03eHTNQghS0A==
45
- -----END PRIVATE KEY-----"
46
- token_credential_secret = "pfkkdhi9sl3r4s00"
47
- base_string = Signet::OAuth1.generate_base_string method, uri, parameters
48
-
49
- expect(Signet::OAuth1::RSASHA1.generate_signature(
50
- base_string, client_credential_secret, token_credential_secret
51
- )).to eq "P72T4RS8dVBneQPJSY71D3iLEjge2tiivxEasPVoaoDldDgPdwpQfhS1q0th19jB3B3+9P6tBWjpWaVPxrNZe3ssBCiwS/EmXZ/6VCJGU3YoDHMtz+0jCd36NjHj5I6TpLVQ8/rtfy6+EzpdUMz7ydnhKXYqJFPOWnNv8HM1W7I="
52
- end
53
- end
54
-
55
- describe Signet::OAuth1::RSASHA1 do
56
- it "should correctly generate a signature" do
57
- method = "GET"
58
- uri = "http://photos.example.net/photos"
59
- parameters = {
60
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
61
- "oauth_signature_method" => "RSA-SHA1",
62
- "oauth_timestamp" => "1196666512",
63
- "oauth_nonce" => "13917289812797014437",
64
- "oauth_version" => "1.0",
65
- "file" => "vacaction.jpg",
66
- "size" => "original"
67
- }
68
- client_credential_secret = "-----BEGIN PRIVATE KEY-----
69
- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V
70
- A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d
71
- 7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ
72
- hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H
73
- X9u2AC2ry8vD/l7cqedtwMPp9k7TubgNFo+NGvKsl2ynyprOZR1xjQ7WgrgVB+mm
74
- uScOM/5HVceFuGRDhYTCObE+y1kxRloNYXnx3ei1zbeYLPCHdhxRYW7T0qcynNmw
75
- rn05/KO2RLjgQNalsQJBANeA3Q4Nugqy4QBUCEC09SqylT2K9FrrItqL2QKc9v0Z
76
- zO2uwllCbg0dwpVuYPYXYvikNHHg+aCWF+VXsb9rpPsCQQDWR9TT4ORdzoj+Nccn
77
- qkMsDmzt0EfNaAOwHOmVJ2RVBspPcxt5iN4HI7HNeG6U5YsFBb+/GZbgfBT3kpNG
78
- WPTpAkBI+gFhjfJvRw38n3g/+UeAkwMI2TJQS4n8+hid0uus3/zOjDySH3XHCUno
79
- cn1xOJAyZODBo47E+67R4jV1/gzbAkEAklJaspRPXP877NssM5nAZMU0/O/NGCZ+
80
- 3jPgDUno6WbJn5cqm8MqWhW1xGkImgRk+fkDBquiq4gPiT898jusgQJAd5Zrr6Q8
81
- AO/0isr/3aa6O6NLQxISLKcPDk2NOccAfS/xOtfOz4sJYM3+Bs4Io9+dZGSDCA54
82
- Lw03eHTNQghS0A==
83
- -----END PRIVATE KEY-----"
84
- token_credential_secret = "pfkkdhi9sl3r4s00"
85
- base_string = Signet::OAuth1.generate_base_string method, uri, parameters
86
-
87
- expect(Signet::OAuth1::RSASHA1.generate_signature(
88
- base_string, client_credential_secret, token_credential_secret
89
- )).to eq "jvTp/wX1TYtByB1m+Pbyo0lnCOLIsyGCH7wke8AUs3BpnwZJtAuEJkvQL2/9n4s5wUmUl4aCI4BwpraNx4RtEXMe5qg5T1LVTGliMRpKasKsW//e+RinhejgCuzoH26dyF8iY2ZZ/5D1ilgeijhV/vBka5twt399mXwaYdCwFYE="
90
- end
91
-
92
-
93
- it "should correctly generate a signature" do
94
- method = "GET"
95
- uri = "http://term.ie/oauth/example/access_token.php"
96
- parameters = {
97
- "oauth_consumer_key" => "key",
98
- "oauth_token" => "requestkey",
99
- "oauth_signature_method" => "RSA-SHA1",
100
- "oauth_timestamp" => "1377815426",
101
- "oauth_nonce" => "8ae9ac8192dd3cd7372e0324bf879602",
102
- "oauth_version" => "1.0"
103
- }
104
- client_credential_secret = "-----BEGIN PRIVATE KEY-----
105
- MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALRiMLAh9iimur8V
106
- A7qVvdqxevEuUkW4K+2KdMXmnQbG9Aa7k7eBjK1S+0LYmVjPKlJGNXHDGuy5Fw/d
107
- 7rjVJ0BLB+ubPK8iA/Tw3hLQgXMRRGRXXCn8ikfuQfjUS1uZSatdLB81mydBETlJ
108
- hI6GH4twrbDJCR2Bwy/XWXgqgGRzAgMBAAECgYBYWVtleUzavkbrPjy0T5FMou8H
109
- X9u2AC2ry8vD/l7cqedtwMPp9k7TubgNFo+NGvKsl2ynyprOZR1xjQ7WgrgVB+mm
110
- uScOM/5HVceFuGRDhYTCObE+y1kxRloNYXnx3ei1zbeYLPCHdhxRYW7T0qcynNmw
111
- rn05/KO2RLjgQNalsQJBANeA3Q4Nugqy4QBUCEC09SqylT2K9FrrItqL2QKc9v0Z
112
- zO2uwllCbg0dwpVuYPYXYvikNHHg+aCWF+VXsb9rpPsCQQDWR9TT4ORdzoj+Nccn
113
- qkMsDmzt0EfNaAOwHOmVJ2RVBspPcxt5iN4HI7HNeG6U5YsFBb+/GZbgfBT3kpNG
114
- WPTpAkBI+gFhjfJvRw38n3g/+UeAkwMI2TJQS4n8+hid0uus3/zOjDySH3XHCUno
115
- cn1xOJAyZODBo47E+67R4jV1/gzbAkEAklJaspRPXP877NssM5nAZMU0/O/NGCZ+
116
- 3jPgDUno6WbJn5cqm8MqWhW1xGkImgRk+fkDBquiq4gPiT898jusgQJAd5Zrr6Q8
117
- AO/0isr/3aa6O6NLQxISLKcPDk2NOccAfS/xOtfOz4sJYM3+Bs4Io9+dZGSDCA54
118
- Lw03eHTNQghS0A==
119
- -----END PRIVATE KEY-----"
120
- token_credential_secret = "QllSuL9eQ5FXFO1Z/HcgL4ON"
121
- base_string = Signet::OAuth1.generate_base_string method, uri, parameters
122
- expect(Signet::OAuth1::RSASHA1.generate_signature(
123
- base_string, client_credential_secret, token_credential_secret
124
- )).to eq "Q1O7Ovi0jdacl/OTJoH3MAyOO/9H/tTXmoJzP/YqiKEJ+/wfShXo1RXX0xmlcjDR1XYxB1RMgHkFWQYYwz1qGCUhkXlH1c/to2qxPksptfPHRe7PJTxRClrdqLFOlhN7w2kO7tHVCeEp8IJIKON9q7cdXroTP7ctPPS+Q883SS0="
125
- end
126
- end
@@ -1,1036 +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_1"
16
- require "signet/oauth_1/client"
17
- require "signet/oauth_1/credential"
18
-
19
- describe Signet::OAuth1 do
20
- it "should correctly normalize parameters" do
21
- parameters = [
22
- %w[a 1],
23
- ["c", "hi there"],
24
- %w[f 25],
25
- %w[f 50],
26
- %w[f a],
27
- %w[z p],
28
- %w[z t]
29
- ]
30
- expect(Signet::OAuth1.normalize_parameters(parameters)).to eq(
31
- "a=1&c=hi%20there&f=25&f=50&f=a&z=p&z=t"
32
- )
33
- end
34
-
35
- it "should correctly normalize parameters" do
36
- parameters = [
37
- ["b5", "=%3D"],
38
- %w[a3 a],
39
- ["c@", ""],
40
- ["a2", "r b"],
41
- %w[oauth_consumer_key 9djdj82h48djs9d2],
42
- %w[oauth_token kkk9d7dh3k39sjv7],
43
- ["oauth_signature_method", "HMAC-SHA1"],
44
- %w[oauth_timestamp 137131201],
45
- %w[oauth_nonce 7d8f3e4a],
46
- ["c2", ""],
47
- ["a3", "2 q"]
48
- ]
49
- expect(Signet::OAuth1.normalize_parameters(parameters)).to eq(
50
- "a2=r%20b&a3=2%20q&a3=a&b5=%3D%253D&c%40=&c2=&oauth_consumer_key=9dj" \
51
- "dj82h48djs9d2&oauth_nonce=7d8f3e4a&oauth_signature_method=HMAC-SHA1" \
52
- "&oauth_timestamp=137131201&oauth_token=kkk9d7dh3k39sjv7"
53
- )
54
- end
55
-
56
- it 'should exclude the "oauth_signature" parameter when normalizing' do
57
- parameters = [
58
- %w[a 1],
59
- %w[b 2],
60
- %w[c 3],
61
- %w[oauth_signature dpf43f3p2l4k3l03]
62
- ]
63
- expect(Signet::OAuth1.normalize_parameters(parameters)).to eq(
64
- "a=1&b=2&c=3"
65
- )
66
- end
67
-
68
- it "should raise an error if normalizing parameters with bogus values" do
69
- expect(lambda do
70
- Signet::OAuth1.normalize_parameters 42
71
- end).to raise_error(TypeError)
72
- end
73
-
74
- it "should raise an error if generating a base string with bogus values" do
75
- expect(lambda do
76
- Signet::OAuth1.generate_base_string(
77
- "GET", "http://photos.example.net/photos", 42
78
- )
79
- end).to raise_error(TypeError)
80
- end
81
-
82
- it "should correctly generate a base string" do
83
- method = "GET"
84
- uri = "http://photos.example.net/photos"
85
- parameters = {
86
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
87
- "oauth_token" => "nnch734d00sl2jdk",
88
- "oauth_signature_method" => "HMAC-SHA1",
89
- "oauth_timestamp" => "1191242096",
90
- "oauth_nonce" => "kllo9940pd9333jh",
91
- "oauth_version" => "1.0",
92
- "file" => "vacation.jpg",
93
- "size" => "original"
94
- }
95
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
96
- "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" \
97
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
98
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
99
- "oauth_signature_method%3DHMAC-SHA1%26" \
100
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
101
- "oauth_version%3D1.0%26size%3Doriginal"
102
- )
103
- end
104
-
105
- it "should correctly generate a base string with an already encoded URI" do
106
- method = "GET"
107
- uri = "http://photos.example.net/https%3A%2F%2Fwww.example.com"
108
- parameters = {
109
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
110
- "oauth_token" => "nnch734d00sl2jdk",
111
- "oauth_signature_method" => "HMAC-SHA1",
112
- "oauth_timestamp" => "1191242096",
113
- "oauth_nonce" => "kllo9940pd9333jh",
114
- "oauth_version" => "1.0",
115
- "file" => "vacation.jpg",
116
- "size" => "original"
117
- }
118
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
119
- "GET&http%3A%2F%2Fphotos.example.net%2F" \
120
- "https%253A%252F%252Fwww.example.com&file%3Dvacation.jpg%26" \
121
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
122
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
123
- "oauth_signature_method%3DHMAC-SHA1%26" \
124
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
125
- "oauth_version%3D1.0%26size%3Doriginal"
126
- )
127
- end
128
-
129
- it "should correctly generate a base string with an already encoded URI" do
130
- method = "GET"
131
- uri = "http://example.com/r%20v/X?id=123"
132
- parameters = {
133
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
134
- "oauth_token" => "nnch734d00sl2jdk",
135
- "oauth_signature_method" => "HMAC-SHA1",
136
- "oauth_timestamp" => "1191242096",
137
- "oauth_nonce" => "kllo9940pd9333jh",
138
- "oauth_version" => "1.0"
139
- }
140
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
141
- "GET&http%3A%2F%2Fexample.com%2Fr%2520v%2FX&" \
142
- "id%3D123%26oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
143
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
144
- "oauth_signature_method%3DHMAC-SHA1%26" \
145
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
146
- "oauth_version%3D1.0"
147
- )
148
- end
149
-
150
- it "should correctly generate a base string when port 8080 is specified" do
151
- method = "GET"
152
- uri = "http://www.example.net:8080/?q=1"
153
- parameters = {
154
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
155
- "oauth_token" => "nnch734d00sl2jdk",
156
- "oauth_signature_method" => "HMAC-SHA1",
157
- "oauth_timestamp" => "1191242096",
158
- "oauth_nonce" => "kllo9940pd9333jh",
159
- "oauth_version" => "1.0"
160
- }
161
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
162
- "GET&http%3A%2F%2Fwww.example.net%3A8080%2F&" \
163
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
164
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
165
- "oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1191242096%26" \
166
- "oauth_token%3Dnnch734d00sl2jdk%26oauth_version%3D1.0%26q%3D1"
167
- )
168
- end
169
-
170
- it "should correctly generate a base string when port 80 is specified" do
171
- method = "GET"
172
- uri = "http://photos.example.net:80/photos"
173
- parameters = {
174
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
175
- "oauth_token" => "nnch734d00sl2jdk",
176
- "oauth_signature_method" => "HMAC-SHA1",
177
- "oauth_timestamp" => "1191242096",
178
- "oauth_nonce" => "kllo9940pd9333jh",
179
- "oauth_version" => "1.0",
180
- "file" => "vacation.jpg",
181
- "size" => "original"
182
- }
183
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
184
- "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" \
185
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
186
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
187
- "oauth_signature_method%3DHMAC-SHA1%26" \
188
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
189
- "oauth_version%3D1.0%26size%3Doriginal"
190
- )
191
- end
192
-
193
- it "should correctly generate a base string when port 443 is specified" do
194
- method = "GET"
195
- uri = "https://photos.example.net:443/photos"
196
- parameters = {
197
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
198
- "oauth_token" => "nnch734d00sl2jdk",
199
- "oauth_signature_method" => "HMAC-SHA1",
200
- "oauth_timestamp" => "1191242096",
201
- "oauth_nonce" => "kllo9940pd9333jh",
202
- "oauth_version" => "1.0",
203
- "file" => "vacation.jpg",
204
- "size" => "original"
205
- }
206
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
207
- "GET&https%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" \
208
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
209
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
210
- "oauth_signature_method%3DHMAC-SHA1%26" \
211
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
212
- "oauth_version%3D1.0%26size%3Doriginal"
213
- )
214
- end
215
-
216
- it "should correctly generate a base signature with uppercase scheme" do
217
- method = "GET"
218
- uri =
219
- "HTTP://photos.example.net/photos?file=vacation.jpg"
220
- parameters = {
221
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
222
- "oauth_token" => "nnch734d00sl2jdk",
223
- "oauth_signature_method" => "HMAC-SHA1",
224
- "oauth_timestamp" => "1191242096",
225
- "oauth_nonce" => "kllo9940pd9333jh",
226
- "oauth_version" => "1.0",
227
- "size" => "original"
228
- }
229
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
230
- "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" \
231
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
232
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
233
- "oauth_signature_method%3DHMAC-SHA1%26" \
234
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
235
- "oauth_version%3D1.0%26size%3Doriginal"
236
- )
237
- end
238
-
239
- it "should correctly generate a base signature with mixedcase authority" do
240
- method = "GET"
241
- uri =
242
- "http://photos.eXaMpLe.NET/photos?file=vacation.jpg"
243
- parameters = {
244
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
245
- "oauth_token" => "nnch734d00sl2jdk",
246
- "oauth_signature_method" => "HMAC-SHA1",
247
- "oauth_timestamp" => "1191242096",
248
- "oauth_nonce" => "kllo9940pd9333jh",
249
- "oauth_version" => "1.0",
250
- "size" => "original"
251
- }
252
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
253
- "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" \
254
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
255
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
256
- "oauth_signature_method%3DHMAC-SHA1%26" \
257
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
258
- "oauth_version%3D1.0%26size%3Doriginal"
259
- )
260
- end
261
-
262
- it "should correctly generate a base signature with a method symbol" do
263
- method = :get
264
- uri =
265
- "http://photos.example.net/photos?file=vacation.jpg"
266
- parameters = {
267
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
268
- "oauth_token" => "nnch734d00sl2jdk",
269
- "oauth_signature_method" => "HMAC-SHA1",
270
- "oauth_timestamp" => "1191242096",
271
- "oauth_nonce" => "kllo9940pd9333jh",
272
- "oauth_version" => "1.0",
273
- "size" => "original"
274
- }
275
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
276
- "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" \
277
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
278
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
279
- "oauth_signature_method%3DHMAC-SHA1%26" \
280
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
281
- "oauth_version%3D1.0%26size%3Doriginal"
282
- )
283
- end
284
-
285
- it "should correctly generate a base signature with duplicated query params" do
286
- method = "GET"
287
- uri = "http://photos.example.net/photos?foo=bar&foo=baz&foo=qux"
288
- parameters = {
289
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
290
- "oauth_token" => "nnch734d00sl2jdk",
291
- "oauth_signature_method" => "HMAC-SHA1",
292
- "oauth_timestamp" => "1191242096",
293
- "oauth_nonce" => "kllo9940pd9333jh",
294
- "oauth_version" => "1.0",
295
- "file" => "vacation.jpg",
296
- "size" => "original"
297
- }
298
- expect(Signet::OAuth1.generate_base_string(method, uri, parameters)).to eq(
299
- "GET&http%3A%2F%2Fphotos.example.net%2Fphotos&file%3Dvacation.jpg%26" \
300
- "foo%3Dbar%26" \
301
- "foo%3Dbaz%26" \
302
- "foo%3Dqux%26" \
303
- "oauth_consumer_key%3Ddpf43f3p2l4k3l03%26" \
304
- "oauth_nonce%3Dkllo9940pd9333jh%26" \
305
- "oauth_signature_method%3DHMAC-SHA1%26" \
306
- "oauth_timestamp%3D1191242096%26oauth_token%3Dnnch734d00sl2jdk%26" \
307
- "oauth_version%3D1.0%26size%3Doriginal"
308
- )
309
- end
310
-
311
- it "should correctly generate an authorization header" do
312
- parameters = [
313
- %w[oauth_consumer_key 0685bd9184jfhq22],
314
- %w[oauth_token ad180jjd733klru7],
315
- ["oauth_signature_method", "HMAC-SHA1"],
316
- ["oauth_signature", "wOJIO9A2W5mFwDgiDvZbTSMK/PY="],
317
- %w[oauth_timestamp 137131200],
318
- %w[oauth_nonce 4572616e48616d6d65724c61686176],
319
- ["oauth_version", "1.0"]
320
- ]
321
- expect(Signet::OAuth1.generate_authorization_header(
322
- parameters, "http://sp.example.com/"
323
- )).to eq(
324
- 'OAuth realm="http://sp.example.com/", ' \
325
- 'oauth_consumer_key="0685bd9184jfhq22", ' \
326
- 'oauth_token="ad180jjd733klru7", ' \
327
- 'oauth_signature_method="HMAC-SHA1", ' \
328
- 'oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", ' \
329
- 'oauth_timestamp="137131200", ' \
330
- 'oauth_nonce="4572616e48616d6d65724c61686176", ' \
331
- 'oauth_version="1.0"'
332
- )
333
- end
334
-
335
- it "should raise an error if generating an authorization header " \
336
- "with bogus values" do
337
- expect(lambda do
338
- Signet::OAuth1.generate_authorization_header 42
339
- end).to raise_error(TypeError)
340
- end
341
-
342
- it "should raise an error if generating an authorization header " \
343
- 'with the "realm" parameter specified the wrong way' do
344
- parameters = [
345
- ["realm", "http://sp.example.com/"],
346
- %w[oauth_consumer_key 0685bd9184jfhq22],
347
- %w[oauth_token ad180jjd733klru7],
348
- ["oauth_signature_method", "HMAC-SHA1"],
349
- ["oauth_signature", "wOJIO9A2W5mFwDgiDvZbTSMK/PY="],
350
- %w[oauth_timestamp 137131200],
351
- %w[oauth_nonce 4572616e48616d6d65724c61686176],
352
- ["oauth_version", "1.0"]
353
- ]
354
- expect(lambda do
355
- Signet::OAuth1.generate_authorization_header parameters
356
- end).to raise_error(ArgumentError)
357
- end
358
-
359
- it "should correctly parse an authorization header" do
360
- parameters = Signet::OAuth1.parse_authorization_header(
361
- 'OAuth realm="http://sp.example.com/", ' \
362
- 'oauth_consumer_key="0685bd9184jfhq22", ' \
363
- 'oauth_token="ad180jjd733klru7", ' \
364
- 'oauth_signature_method="HMAC-SHA1", ' \
365
- 'oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", ' \
366
- 'oauth_timestamp="137131200", ' \
367
- 'oauth_nonce="4572616e48616d6d65724c61686176", ' \
368
- 'oauth_version="1.0"'
369
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
370
- expect(parameters["realm"]).to eq "http://sp.example.com/"
371
- expect(parameters["oauth_consumer_key"]).to eq "0685bd9184jfhq22"
372
- expect(parameters["oauth_token"]).to eq "ad180jjd733klru7"
373
- expect(parameters["oauth_signature_method"]).to eq "HMAC-SHA1"
374
- expect(parameters["oauth_signature"]).to eq "wOJIO9A2W5mFwDgiDvZbTSMK/PY="
375
- expect(parameters["oauth_timestamp"]).to eq "137131200"
376
- expect(parameters["oauth_nonce"]).to eq "4572616e48616d6d65724c61686176"
377
- expect(parameters["oauth_version"]).to eq "1.0"
378
- end
379
-
380
- it "should not unescape a realm in an authorization header" do
381
- parameters = Signet::OAuth1.parse_authorization_header(
382
- 'OAuth realm="http%3A%2F%2Fsp.example.com%2F", ' \
383
- 'domain="http%3A%2F%2Fsp.example.com%2F", ' \
384
- 'oauth_consumer_key="0685bd9184jfhq22", ' \
385
- 'oauth_token="ad180jjd733klru7", ' \
386
- 'oauth_signature_method="HMAC-SHA1", ' \
387
- 'oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", ' \
388
- 'oauth_timestamp="137131200", ' \
389
- 'oauth_nonce="4572616e48616d6d65724c61686176", ' \
390
- 'oauth_version="1.0"'
391
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
392
- expect(parameters["realm"]).to eq "http%3A%2F%2Fsp.example.com%2F"
393
- expect(parameters["domain"]).to eq "http://sp.example.com/"
394
- expect(parameters["oauth_consumer_key"]).to eq "0685bd9184jfhq22"
395
- expect(parameters["oauth_token"]).to eq "ad180jjd733klru7"
396
- expect(parameters["oauth_signature_method"]).to eq "HMAC-SHA1"
397
- expect(parameters["oauth_signature"]).to eq "wOJIO9A2W5mFwDgiDvZbTSMK/PY="
398
- expect(parameters["oauth_timestamp"]).to eq "137131200"
399
- expect(parameters["oauth_nonce"]).to eq "4572616e48616d6d65724c61686176"
400
- expect(parameters["oauth_version"]).to eq "1.0"
401
- end
402
-
403
- it "should raise an error if parsing an authorization header " \
404
- "with bogus values" do
405
- expect(lambda do
406
- Signet::OAuth1.parse_authorization_header 42
407
- end).to raise_error(TypeError)
408
- end
409
-
410
- it "should raise an error if parsing a non-OAuth authorization header" do
411
- expect(lambda do
412
- Signet::OAuth1.parse_authorization_header(
413
- "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
414
- )
415
- end).to raise_error(Signet::ParseError)
416
- end
417
-
418
- it "should correctly parse a form encoded credential" do
419
- credential = Signet::OAuth1.parse_form_encoded_credentials(
420
- "oauth_token=hh5s93j4hdidpola&oauth_token_secret=hdhd0244k9j7ao03"
421
- )
422
- expect(credential.key).to eq "hh5s93j4hdidpola"
423
- expect(credential.secret).to eq "hdhd0244k9j7ao03"
424
- end
425
-
426
- it "should correctly parse a form encoded credential" do
427
- credential = Signet::OAuth1.parse_form_encoded_credentials(
428
- "oauth_token=hdk48Djdsa&oauth_token_secret=xyz4992k83j47x0b&" \
429
- "oauth_callback_confirmed=true"
430
- )
431
- expect(credential.key).to eq "hdk48Djdsa"
432
- expect(credential.secret).to eq "xyz4992k83j47x0b"
433
- end
434
-
435
- it "should raise an error if parsing a form encoded credential " \
436
- "with bogus values" do
437
- expect(lambda do
438
- Signet::OAuth1.parse_form_encoded_credentials 42
439
- end).to raise_error(TypeError)
440
- end
441
-
442
- it "should correctly generate a signature for a set of parameters" do
443
- method = :get
444
- uri = "http://photos.example.net/photos"
445
- client_credential_secret = "kd94hf93k423kf44"
446
- token_credential_secret = "pfkkdhi9sl3r4s00"
447
- parameters = {
448
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
449
- "oauth_token" => "nnch734d00sl2jdk",
450
- "oauth_signature_method" => "HMAC-SHA1",
451
- "oauth_timestamp" => "1191242096",
452
- "oauth_nonce" => "kllo9940pd9333jh",
453
- "oauth_version" => "1.0",
454
- "file" => "vacation.jpg",
455
- "size" => "original"
456
- }
457
- expect(Signet::OAuth1.sign_parameters(
458
- method,
459
- uri,
460
- parameters,
461
- client_credential_secret,
462
- token_credential_secret
463
- )).to eq "tR3+Ty81lMeYAr/Fid0kMTYa/WM="
464
- end
465
-
466
- it "should raise an error when trying to sign with with unknown method" do
467
- method = :get
468
- uri = "http://photos.example.net/photos"
469
- client_credential_secret = "kd94hf93k423kf44"
470
- token_credential_secret = "pfkkdhi9sl3r4s00"
471
- parameters = {
472
- "oauth_consumer_key" => "dpf43f3p2l4k3l03",
473
- "oauth_token" => "nnch734d00sl2jdk",
474
- "oauth_signature_method" => "HMAC-BOGUS", # Unknown signature method
475
- "oauth_timestamp" => "1191242096",
476
- "oauth_nonce" => "kllo9940pd9333jh",
477
- "oauth_version" => "1.0",
478
- "file" => "vacation.jpg",
479
- "size" => "original"
480
- }
481
- expect(lambda do
482
- Signet::OAuth1.sign_parameters(
483
- method,
484
- uri,
485
- parameters,
486
- client_credential_secret,
487
- token_credential_secret
488
- )
489
- end).to raise_error(NotImplementedError)
490
- end
491
-
492
- it "should correctly generate authorization URIs" do
493
- authorization_uri = "http://photos.example.net/authorize"
494
- temporary_credential_key = "hh5s93j4hdidpola"
495
- callback = "http://printer.example.com/request_token_ready"
496
- parsed_uri = Addressable::URI.parse(
497
- Signet::OAuth1.generate_authorization_uri(
498
- authorization_uri,
499
- temporary_credential_key: temporary_credential_key,
500
- callback: callback
501
- )
502
- )
503
- expect(parsed_uri.query_values).to have_key("oauth_token")
504
- expect(parsed_uri.query_values["oauth_token"]).to eq temporary_credential_key
505
- expect(parsed_uri.query_values).to have_key("oauth_callback")
506
- expect(parsed_uri.query_values["oauth_callback"]).to eq callback
507
- end
508
- end
509
-
510
- describe Signet::OAuth1, "when generating temporary credentials parameters" do
511
- before do
512
- @client_credential_key = "dpf43f3p2l4k3l03"
513
- @callback = "http://printer.example.com/request_token_ready"
514
- @signature_method = "HMAC-SHA1"
515
- @scope = "http://photos.example.com/full_access"
516
- @additional_parameters = [["scope", @scope]]
517
- @unsigned_parameters =
518
- Signet::OAuth1.unsigned_temporary_credential_parameters(
519
- client_credential_key: @client_credential_key,
520
- callback: @callback,
521
- signature_method: @signature_method,
522
- additional_parameters: @additional_parameters
523
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
524
- end
525
-
526
- it "should raise an error if the client credential key is missing" do
527
- expect(lambda do
528
- Signet::OAuth1.unsigned_temporary_credential_parameters(
529
- client_credential_key: nil,
530
- callback: @callback,
531
- signature_method: @signature_method,
532
- additional_parameters: @additional_parameters
533
- )
534
- end).to raise_error(ArgumentError)
535
- end
536
-
537
- it "should have the correct client credential key" do
538
- expect(@unsigned_parameters).to have_key("oauth_consumer_key")
539
- expect(@unsigned_parameters["oauth_consumer_key"]).to eq @client_credential_key
540
- end
541
-
542
- it "should have the correct signature method" do
543
- expect(@unsigned_parameters).to have_key("oauth_signature_method")
544
- expect(@unsigned_parameters["oauth_signature_method"]).to eq @signature_method
545
- end
546
-
547
- it "should have a valid timestamp" do
548
- # Verify that we have a timestamp, it's in the correct format and within
549
- # a reasonable range of the current time.
550
- expect(@unsigned_parameters).to have_key("oauth_timestamp")
551
- expect(@unsigned_parameters["oauth_timestamp"]).to match(/^[0-9]+$/)
552
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be <= Time.now.to_i
553
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be >= Time.now.to_i - 1
554
- end
555
-
556
- it "should have a valid nonce" do
557
- # Verify that we have a nonce and that it has sufficient length for
558
- # uniqueness.
559
- expect(@unsigned_parameters).to have_key("oauth_nonce")
560
- expect(@unsigned_parameters["oauth_nonce"]).to match(/^[0-9a-zA-Z]{16,100}$/)
561
- end
562
-
563
- it "should have the correct callback" do
564
- expect(@unsigned_parameters).to have_key("oauth_callback")
565
- expect(@unsigned_parameters["oauth_callback"]).to eq @callback
566
- end
567
-
568
- it "should have the correct scope parameter" do
569
- expect(@unsigned_parameters).to have_key("scope")
570
- expect(@unsigned_parameters["scope"]).to eq @scope
571
- end
572
-
573
- it "should have the correct OAuth version" do
574
- expect(@unsigned_parameters).to have_key("oauth_version")
575
- expect(@unsigned_parameters["oauth_version"]).to eq "1.0"
576
- end
577
- end
578
-
579
- describe Signet::OAuth1, "when generating token credential parameters" do
580
- before do
581
- @client_credential_key = "dpf43f3p2l4k3l03"
582
- @temporary_credential_key = "hh5s93j4hdidpola"
583
- @verifier = "473f82d3"
584
- @signature_method = "HMAC-SHA1"
585
- @unsigned_parameters =
586
- Signet::OAuth1.unsigned_token_credential_parameters(
587
- client_credential_key: @client_credential_key,
588
- temporary_credential_key: @temporary_credential_key,
589
- signature_method: @signature_method,
590
- verifier: @verifier
591
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
592
- end
593
-
594
- it "should raise an error if the client credential key is missing" do
595
- expect(lambda do
596
- Signet::OAuth1.unsigned_token_credential_parameters(
597
- client_credential_key: nil,
598
- temporary_credential_key: @temporary_credential_key,
599
- signature_method: @signature_method,
600
- verifier: @verifier
601
- )
602
- end).to raise_error(ArgumentError)
603
- end
604
-
605
- it "should raise an error if the temporary credential key is missing" do
606
- expect(lambda do
607
- Signet::OAuth1.unsigned_token_credential_parameters(
608
- client_credential_key: @client_credential_key,
609
- temporary_credential_key: nil,
610
- signature_method: @signature_method,
611
- verifier: @verifier
612
- )
613
- end).to raise_error(ArgumentError)
614
- end
615
-
616
- it "should raise an error if the verifier is missing" do
617
- expect(lambda do
618
- Signet::OAuth1.unsigned_token_credential_parameters(
619
- client_credential_key: @client_credential_key,
620
- temporary_credential_key: @temporary_credential_key,
621
- signature_method: @signature_method,
622
- verifier: nil
623
- )
624
- end).to raise_error(ArgumentError)
625
- end
626
-
627
- it "should have the correct client credential key" do
628
- expect(@unsigned_parameters).to have_key("oauth_consumer_key")
629
- expect(@unsigned_parameters["oauth_consumer_key"]).to eq @client_credential_key
630
- end
631
-
632
- it "should have the correct temporary credentials key" do
633
- expect(@unsigned_parameters).to have_key("oauth_token")
634
- expect(@unsigned_parameters["oauth_token"]).to eq @temporary_credential_key
635
- end
636
-
637
- it "should have the correct signature method" do
638
- expect(@unsigned_parameters).to have_key("oauth_signature_method")
639
- expect(@unsigned_parameters["oauth_signature_method"]).to eq @signature_method
640
- end
641
-
642
- it "should have a valid timestamp" do
643
- # Verify that we have a timestamp, it's in the correct format and within
644
- # a reasonable range of the current time.
645
- expect(@unsigned_parameters).to have_key("oauth_timestamp")
646
- expect(@unsigned_parameters["oauth_timestamp"]).to match(/^[0-9]+$/)
647
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be <= Time.now.to_i
648
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be >= Time.now.to_i - 1
649
- end
650
-
651
- it "should have a valid nonce" do
652
- # Verify that we have a nonce and that it has sufficient length for
653
- # uniqueness.
654
- expect(@unsigned_parameters).to have_key("oauth_nonce")
655
- expect(@unsigned_parameters["oauth_nonce"]).to match(/^[0-9a-zA-Z]{16,100}$/)
656
- end
657
-
658
- it "should have the verifier" do
659
- expect(@unsigned_parameters).to have_key("oauth_verifier")
660
- expect(@unsigned_parameters["oauth_verifier"]).to eq @verifier
661
- end
662
-
663
- it "should have the correct OAuth version" do
664
- expect(@unsigned_parameters).to have_key("oauth_version")
665
- expect(@unsigned_parameters["oauth_version"]).to eq "1.0"
666
- end
667
- end
668
-
669
- describe Signet::OAuth1, "when generating protected resource parameters" do
670
- before do
671
- @client_credential_key = "dpf43f3p2l4k3l03"
672
- @token_credential_key = "nnch734d00sl2jdk"
673
- @signature_method = "HMAC-SHA1"
674
- @unsigned_parameters =
675
- Signet::OAuth1.unsigned_resource_parameters(
676
- client_credential_key: @client_credential_key,
677
- token_credential_key: @token_credential_key,
678
- signature_method: @signature_method
679
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
680
- end
681
-
682
- it "should raise an error if the client credential key is missing" do
683
- expect(lambda do
684
- Signet::OAuth1.unsigned_resource_parameters(
685
- client_credential_key: nil,
686
- token_credential_key: @token_credential_key,
687
- signature_method: @signature_method
688
- )
689
- end).to raise_error(ArgumentError)
690
- end
691
-
692
- it "should raise an error if the token credential key is missing" do
693
- expect(lambda do
694
- Signet::OAuth1.unsigned_resource_parameters(
695
- client_credential_key: @client_credential_key,
696
- token_credential_key: nil,
697
- signature_method: @signature_method
698
- )
699
- end).to raise_error(ArgumentError)
700
- end
701
-
702
- it "should have the correct client credential key" do
703
- expect(@unsigned_parameters).to have_key("oauth_consumer_key")
704
- expect(@unsigned_parameters["oauth_consumer_key"]).to eq @client_credential_key
705
- end
706
-
707
- it "should have the correct token credentials key" do
708
- expect(@unsigned_parameters).to have_key("oauth_token")
709
- expect(@unsigned_parameters["oauth_token"]).to eq @token_credential_key
710
- end
711
-
712
- it "should have the correct signature method" do
713
- expect(@unsigned_parameters).to have_key("oauth_signature_method")
714
- expect(@unsigned_parameters["oauth_signature_method"]).to eq @signature_method
715
- end
716
-
717
- it "should have a valid timestamp" do
718
- # Verify that we have a timestamp, it's in the correct format and within
719
- # a reasonable range of the current time.
720
- expect(@unsigned_parameters).to have_key("oauth_timestamp")
721
- expect(@unsigned_parameters["oauth_timestamp"]).to match(/^[0-9]+$/)
722
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be <= Time.now.to_i
723
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be >= Time.now.to_i - 1
724
- end
725
-
726
- it "should have a valid nonce" do
727
- # Verify that we have a nonce and that it has sufficient length for
728
- # uniqueness.
729
- expect(@unsigned_parameters).to have_key("oauth_nonce")
730
- expect(@unsigned_parameters["oauth_nonce"]).to match(/^[0-9a-zA-Z]{16,100}$/)
731
- end
732
-
733
- it "should have the correct OAuth version" do
734
- expect(@unsigned_parameters).to have_key("oauth_version")
735
- expect(@unsigned_parameters["oauth_version"]).to eq "1.0"
736
- end
737
- end
738
-
739
- describe Signet::OAuth1, "when generating token credential parameters " \
740
- "with Signet::OAuth1::Credential objects" do
741
- before do
742
- @client_credential = Signet::OAuth1::Credential.new(
743
- "dpf43f3p2l4k3l03", "kd94hf93k423kf44"
744
- )
745
- @temporary_credential = Signet::OAuth1::Credential.new(
746
- "hh5s93j4hdidpola", "hdhd0244k9j7ao03"
747
- )
748
- @verifier = "473f82d3"
749
- @signature_method = "HMAC-SHA1"
750
- @unsigned_parameters =
751
- Signet::OAuth1.unsigned_token_credential_parameters(
752
- client_credential: @client_credential,
753
- temporary_credential: @temporary_credential,
754
- signature_method: @signature_method,
755
- verifier: @verifier
756
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
757
- end
758
-
759
- it "should have the correct client credential key" do
760
- expect(@unsigned_parameters).to have_key("oauth_consumer_key")
761
- expect(@unsigned_parameters["oauth_consumer_key"]).to eq @client_credential.key
762
- end
763
-
764
- it "should have the correct temporary credentials key" do
765
- expect(@unsigned_parameters).to have_key("oauth_token")
766
- expect(@unsigned_parameters["oauth_token"]).to eq @temporary_credential.key
767
- end
768
-
769
- it "should have the correct signature method" do
770
- expect(@unsigned_parameters).to have_key("oauth_signature_method")
771
- expect(@unsigned_parameters["oauth_signature_method"]).to eq @signature_method
772
- end
773
-
774
- it "should have a valid timestamp" do
775
- # Verify that we have a timestamp, it's in the correct format and within
776
- # a reasonable range of the current time.
777
- expect(@unsigned_parameters).to have_key("oauth_timestamp")
778
- expect(@unsigned_parameters["oauth_timestamp"]).to match(/^[0-9]+$/)
779
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be <= Time.now.to_i
780
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be >= Time.now.to_i - 1
781
- end
782
-
783
- it "should have a valid nonce" do
784
- # Verify that we have a nonce and that it has sufficient length for
785
- # uniqueness.
786
- expect(@unsigned_parameters).to have_key("oauth_nonce")
787
- expect(@unsigned_parameters["oauth_nonce"]).to match(/^[0-9a-zA-Z]{16,100}$/)
788
- end
789
-
790
- it "should have the correct OAuth version" do
791
- expect(@unsigned_parameters).to have_key("oauth_version")
792
- expect(@unsigned_parameters["oauth_version"]).to eq "1.0"
793
- end
794
- end
795
-
796
- describe Signet::OAuth1, "when generating token credential parameters " \
797
- "with a Signet::OAuth1::Client object" do
798
- before do
799
- @client = Signet::OAuth1::Client.new
800
- @client.client_credential = Signet::OAuth1::Credential.new(
801
- "dpf43f3p2l4k3l03", "kd94hf93k423kf44"
802
- )
803
- @client.temporary_credential = Signet::OAuth1::Credential.new(
804
- "hh5s93j4hdidpola", "hdhd0244k9j7ao03"
805
- )
806
- @verifier = "473f82d3"
807
- @signature_method = "HMAC-SHA1"
808
- @unsigned_parameters =
809
- Signet::OAuth1.unsigned_token_credential_parameters(
810
- client: @client,
811
- signature_method: @signature_method,
812
- verifier: @verifier
813
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
814
- end
815
-
816
- it "should have the correct client credential key" do
817
- expect(@unsigned_parameters).to have_key("oauth_consumer_key")
818
- expect(@unsigned_parameters["oauth_consumer_key"]).to eq @client.client_credential_key
819
- end
820
-
821
- it "should have the correct temporary credentials key" do
822
- expect(@unsigned_parameters).to have_key("oauth_token")
823
- expect(@unsigned_parameters["oauth_token"]).to eq @client.temporary_credential_key
824
- end
825
-
826
- it "should have the correct signature method" do
827
- expect(@unsigned_parameters).to have_key("oauth_signature_method")
828
- expect(@unsigned_parameters["oauth_signature_method"]).to eq @signature_method
829
- end
830
-
831
- it "should have a valid timestamp" do
832
- # Verify that we have a timestamp, it's in the correct format and within
833
- # a reasonable range of the current time.
834
- expect(@unsigned_parameters).to have_key("oauth_timestamp")
835
- expect(@unsigned_parameters["oauth_timestamp"]).to match(/^[0-9]+$/)
836
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be <= Time.now.to_i
837
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be >= Time.now.to_i - 1
838
- end
839
-
840
- it "should have a valid nonce" do
841
- # Verify that we have a nonce and that it has sufficient length for
842
- # uniqueness.
843
- expect(@unsigned_parameters).to have_key("oauth_nonce")
844
- expect(@unsigned_parameters["oauth_nonce"]).to match(/^[0-9a-zA-Z]{16,100}$/)
845
- end
846
-
847
- it "should have the correct OAuth version" do
848
- expect(@unsigned_parameters).to have_key("oauth_version")
849
- expect(@unsigned_parameters["oauth_version"]).to eq "1.0"
850
- end
851
- end
852
-
853
- describe Signet::OAuth1, "when generating token credential parameters " \
854
- "with Signet::OAuth1::Credential objects" do
855
- before do
856
- @client_credential = Signet::OAuth1::Credential.new(
857
- "dpf43f3p2l4k3l03", "kd94hf93k423kf44"
858
- )
859
- @temporary_credential = Signet::OAuth1::Credential.new(
860
- "hh5s93j4hdidpola", "hdhd0244k9j7ao03"
861
- )
862
- @verifier = "473f82d3"
863
- @signature_method = "HMAC-SHA1"
864
- @unsigned_parameters =
865
- Signet::OAuth1.unsigned_token_credential_parameters(
866
- client_credential: @client_credential,
867
- temporary_credential: @temporary_credential,
868
- signature_method: @signature_method,
869
- verifier: @verifier
870
- ).each_with_object({}) { |(k, v), h| h[k] = v; }
871
- end
872
-
873
- it "should have the correct client credential key" do
874
- expect(@unsigned_parameters).to have_key("oauth_consumer_key")
875
- expect(@unsigned_parameters["oauth_consumer_key"]).to eq @client_credential.key
876
- end
877
-
878
- it "should have the correct temporary credentials key" do
879
- expect(@unsigned_parameters).to have_key("oauth_token")
880
- expect(@unsigned_parameters["oauth_token"]).to eq @temporary_credential.key
881
- end
882
-
883
- it "should have the correct signature method" do
884
- expect(@unsigned_parameters).to have_key("oauth_signature_method")
885
- expect(@unsigned_parameters["oauth_signature_method"]).to eq @signature_method
886
- end
887
-
888
- it "should have a valid timestamp" do
889
- # Verify that we have a timestamp, it's in the correct format and within
890
- # a reasonable range of the current time.
891
- expect(@unsigned_parameters).to have_key("oauth_timestamp")
892
- expect(@unsigned_parameters["oauth_timestamp"]).to match(/^[0-9]+$/)
893
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be <= Time.now.to_i
894
- expect(@unsigned_parameters["oauth_timestamp"].to_i).to be >= Time.now.to_i - 1
895
- end
896
-
897
- it "should have a valid nonce" do
898
- # Verify that we have a nonce and that it has sufficient length for
899
- # uniqueness.
900
- expect(@unsigned_parameters).to have_key("oauth_nonce")
901
- expect(@unsigned_parameters["oauth_nonce"]).to match(/^[0-9a-zA-Z]{16,100}$/)
902
- end
903
-
904
- it "should have the correct OAuth version" do
905
- expect(@unsigned_parameters).to have_key("oauth_version")
906
- expect(@unsigned_parameters["oauth_version"]).to eq "1.0"
907
- end
908
- end
909
-
910
- describe Signet::OAuth1, "extracting credential keys from options" do
911
- it "should raise an error for bogus credentials" do
912
- expect(lambda do
913
- Signet::OAuth1.extract_credential_key_option(
914
- :client, client_credential_key: true
915
- )
916
- end).to raise_error(TypeError)
917
- end
918
-
919
- it "should raise an error for bogus credentials" do
920
- expect(lambda do
921
- Signet::OAuth1.extract_credential_key_option(
922
- :client, client_credential: 42
923
- )
924
- end).to raise_error(TypeError)
925
- end
926
-
927
- it "should raise an error for bogus credentials" do
928
- expect(lambda do
929
- Signet::OAuth1.extract_credential_key_option(
930
- :client, client: 42
931
- )
932
- end).to raise_error(TypeError)
933
- end
934
-
935
- it "should return nil for missing credential key" do
936
- expect(Signet::OAuth1.extract_credential_key_option(:client, {})).to eq nil
937
- end
938
-
939
- it "should find the correct credential key" do
940
- expect(Signet::OAuth1.extract_credential_key_option(
941
- :client, client_credential_key: "dpf43f3p2l4k3l03"
942
- )).to eq "dpf43f3p2l4k3l03"
943
- end
944
-
945
- it "should find the correct credential key" do
946
- expect(Signet::OAuth1.extract_credential_key_option(
947
- :client, client_credential: Signet::OAuth1::Credential.new(
948
- "dpf43f3p2l4k3l03", "kd94hf93k423kf44"
949
- )
950
- )).to eq "dpf43f3p2l4k3l03"
951
- end
952
-
953
- it "should find the correct credential key" do
954
- client = Signet::OAuth1::Client.new
955
- client.client_credential = Signet::OAuth1::Credential.new(
956
- "dpf43f3p2l4k3l03", "kd94hf93k423kf44"
957
- )
958
- expect(Signet::OAuth1.extract_credential_key_option(
959
- :client, client: client
960
- )).to eq "dpf43f3p2l4k3l03"
961
- end
962
-
963
- it "should find the correct credential key" do
964
- client = Signet::OAuth1::Client.new
965
- client.temporary_credential = Signet::OAuth1::Credential.new(
966
- "hh5s93j4hdidpola", "hdhd0244k9j7ao03"
967
- )
968
- expect(Signet::OAuth1.extract_credential_key_option(
969
- :temporary, client: client
970
- )).to eq "hh5s93j4hdidpola"
971
- end
972
- end
973
-
974
- describe Signet::OAuth1, "extracting credential secrets from options" do
975
- it "should raise an error for bogus credentials" do
976
- expect(lambda do
977
- Signet::OAuth1.extract_credential_secret_option(
978
- :client, client_credential_secret: true
979
- )
980
- end).to raise_error(TypeError)
981
- end
982
-
983
- it "should raise an error for bogus credentials" do
984
- expect(lambda do
985
- Signet::OAuth1.extract_credential_secret_option(
986
- :client, client_credential: 42
987
- )
988
- end).to raise_error(TypeError)
989
- end
990
-
991
- it "should raise an error for bogus credentials" do
992
- expect(lambda do
993
- Signet::OAuth1.extract_credential_secret_option(
994
- :client, client: 42
995
- )
996
- end).to raise_error(TypeError)
997
- end
998
-
999
- it "should raise an error for missing credential secret" do
1000
- expect(Signet::OAuth1.extract_credential_secret_option(:client, {})).to eq nil
1001
- end
1002
-
1003
- it "should find the correct credential secret" do
1004
- expect(Signet::OAuth1.extract_credential_secret_option(
1005
- :client, client_credential_secret: "kd94hf93k423kf44"
1006
- )).to eq "kd94hf93k423kf44"
1007
- end
1008
-
1009
- it "should find the correct credential secret" do
1010
- expect(Signet::OAuth1.extract_credential_secret_option(
1011
- :client, client_credential: Signet::OAuth1::Credential.new(
1012
- "dpf43f3p2l4k3l03", "kd94hf93k423kf44"
1013
- )
1014
- )).to eq "kd94hf93k423kf44"
1015
- end
1016
-
1017
- it "should find the correct credential secret" do
1018
- client = Signet::OAuth1::Client.new
1019
- client.client_credential = Signet::OAuth1::Credential.new(
1020
- "dpf43f3p2l4k3l03", "kd94hf93k423kf44"
1021
- )
1022
- expect(Signet::OAuth1.extract_credential_secret_option(
1023
- :client, client: client
1024
- )).to eq "kd94hf93k423kf44"
1025
- end
1026
-
1027
- it "should find the correct credential secret" do
1028
- client = Signet::OAuth1::Client.new
1029
- client.temporary_credential = Signet::OAuth1::Credential.new(
1030
- "hh5s93j4hdidpola", "hdhd0244k9j7ao03"
1031
- )
1032
- expect(Signet::OAuth1.extract_credential_secret_option(
1033
- :temporary, client: client
1034
- )).to eq "hdhd0244k9j7ao03"
1035
- end
1036
- end