From 7b62fbb4e08df1a08265bcc77368d279a1de6f09 Mon Sep 17 00:00:00 2001 From: thb Date: Sun, 11 Sep 2016 00:08:51 +0200 Subject: [PATCH] Consumer key redirection support (fix #8) Signed-off-by: thb --- ovh/consumer_key.go | 10 ++++++++++ ovh/consumer_key_test.go | 18 +++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/ovh/consumer_key.go b/ovh/consumer_key.go index 24980e2e..71637551 100644 --- a/ovh/consumer_key.go +++ b/ovh/consumer_key.go @@ -40,6 +40,7 @@ type CkValidationState struct { type CkRequest struct { client *Client AccessRules []AccessRule `json:"accessRules"` + Redirection string `json:"redirection,omitempty"` } func (ck *CkValidationState) String() string { @@ -58,6 +59,15 @@ func (c *Client) NewCkRequest() *CkRequest { } } +// NewCkRequestWithRedirection helps create a new ck request with a redirect URL +func (c *Client) NewCkRequestWithRedirection(redirection string) *CkRequest { + return &CkRequest{ + client: c, + AccessRules: []AccessRule{}, + Redirection: redirection, + } +} + // AddRule adds a new rule to the ckRequest func (ck *CkRequest) AddRule(method, path string) { ck.AccessRules = append(ck.AccessRules, AccessRule{ diff --git a/ovh/consumer_key_test.go b/ovh/consumer_key_test.go index 831f85fa..86379423 100644 --- a/ovh/consumer_key_test.go +++ b/ovh/consumer_key_test.go @@ -9,7 +9,7 @@ import ( // Common helpers are in ovh_test.go -func TestNewCkReqest(t *testing.T) { +func TestNewCkRequest(t *testing.T) { const expectedRequest = `{"accessRules":[{"method":"GET","path":"/me"},{"method":"GET","path":"/xdsl/*"}]}` // Init test @@ -50,7 +50,7 @@ func TestNewCkReqest(t *testing.T) { ensureHeaderPresent(t, InputRequest, "X-Ovh-Application", MockApplicationKey) } -func TestInvalidCkReqest(t *testing.T) { +func TestInvalidCkRequest(t *testing.T) { // Init test var InputRequest *http.Request var InputRequestBody string @@ -129,7 +129,7 @@ func TestAddRules(t *testing.T) { } } -func TestCkReqestString(t *testing.T) { +func TestCkRequestString(t *testing.T) { ckValidationState := &CkValidationState{ ConsumerKey: "ck", State: "pending", @@ -143,3 +143,15 @@ func TestCkReqestString(t *testing.T) { t.Errorf("expected %q, got %q", expected, got) } } + +func TestCkRequestRedirection(t *testing.T) { + client, _ := NewClient("endpoint", "appKey", "appSecret", "consumerKey") + + redirection := "http://localhost/api/auth/callback?token=123456" + + ckRequest := client.NewCkRequestWithRedirection(redirection) + + if ckRequest.Redirection != redirection { + t.Fatalf("NewCkRequestWithRedirection should set ckRequest.Redirection") + } +}