1
// Copyright 2015 Canonical Ltd.
2
// Licensed under the LGPLv3, see LICENSE file for details.
13
type OAuthTestSuite struct {
19
var _ = Suite(&OAuthTestSuite{})
21
func (suite *OAuthTestSuite) SetUpTest(c *C) {
22
baseUrl := "https://localhost"
23
suite.ssodata = SSOData{ConsumerKey: consumerKey,
24
ConsumerSecret: consumerSecret, Realm: realm, TokenKey: tokenKey,
25
TokenName: tokenName, TokenSecret: tokenSecret}
26
suite.rp = RequestParameters{BaseURL: baseUrl, HTTPMethod: "GET",
27
Nonce: "10888885", Timestamp: "1358853126"}
28
suite.request, _ = http.NewRequest("GET", baseUrl, nil)
31
// It is possible to sign a request with oauth_signature_method = PLAINTEXT
32
func (suite *OAuthTestSuite) TestSignRequestPlainText(c *C) {
33
suite.rp.SignatureMethod = PLAINTEXT{}
34
err := suite.ssodata.SignRequest(&suite.rp, suite.request)
39
authHeader := suite.request.Header["Authorization"][0]
40
c.Assert(authHeader, Matches, `^OAuth.*`)
41
c.Assert(authHeader, Matches, `.*realm="API".*`)
42
c.Assert(authHeader, Matches,
43
`.*oauth_consumer_key="`+url.QueryEscape(
44
suite.ssodata.ConsumerKey)+`".*`)
45
c.Assert(authHeader, Matches,
46
`.*oauth_token="`+url.QueryEscape(suite.ssodata.TokenKey)+`".*`)
47
c.Assert(authHeader, Matches,
48
`.*oauth_signature="`+url.QueryEscape(
49
suite.ssodata.ConsumerSecret)+`&`+url.QueryEscape(
50
suite.ssodata.TokenSecret)+`.*`)
53
// It is possible to sign a request with oauth_signature_method = SHA1
54
func (suite *OAuthTestSuite) TestSignRequestSHA1(c *C) {
55
suite.rp.SignatureMethod = HMACSHA1{}
56
err := suite.ssodata.SignRequest(&suite.rp, suite.request)
61
authHeader := suite.request.Header["Authorization"][0]
62
c.Assert(authHeader, Matches, `^OAuth.*`)
63
c.Assert(authHeader, Matches, `.*realm="API".*`)
64
c.Assert(authHeader, Matches,
65
`.*oauth_consumer_key="`+url.QueryEscape(
66
suite.ssodata.ConsumerKey)+`".*`)
67
c.Assert(authHeader, Matches,
68
`.*oauth_token="`+url.QueryEscape(suite.ssodata.TokenKey)+`".*`)
69
c.Assert(authHeader, Matches,
70
`.*oauth_signature="`+"amJnYeek4G9ObTgTiE2y6cwTyPg="+`.*`)
73
func (suite *OAuthTestSuite) TestSignRequestSHA1WithParams(c *C) {
75
rp.SignatureMethod = HMACSHA1{}
76
rp.Params = url.Values{
77
"a": []string{"B", "A"},
80
err := suite.ssodata.SignRequest(&rp, suite.request)
85
authHeader := suite.request.Header["Authorization"][0]
86
c.Assert(authHeader, Matches, `^OAuth.*`)
87
c.Assert(authHeader, Matches, `.*realm="API".*`)
88
c.Assert(authHeader, Matches,
89
`.*oauth_consumer_key="`+url.QueryEscape(
90
suite.ssodata.ConsumerKey)+`".*`)
91
c.Assert(authHeader, Matches,
92
`.*oauth_token="`+url.QueryEscape(suite.ssodata.TokenKey)+`".*`)
93
c.Assert(authHeader, Matches,
94
`.*oauth_signature="`+"a/PwZ4HMX0FptNA4KRFl1jIqlOg="+`.*`)