Skip to content

Commit 034dbbb

Browse files
committed
added method tooling.tokens.rotate
Signed-off-by: Denis Halturin <[email protected]>
1 parent c4095cb commit 034dbbb

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

tooling_tokens.go

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package slack
2+
3+
import (
4+
"context"
5+
"net/url"
6+
)
7+
8+
// ToolingTokensRotate contains our Auth response from the tooling.tokens.rotate endpoint
9+
type ToolingTokensRotate struct {
10+
SlackResponse // Contains the "ok", and "Error", if any
11+
Token string `json:"token"`
12+
RefreshToken string `json:"refresh_token"`
13+
TeamID string `json:"team_id"`
14+
UserID string `json:"user_id"`
15+
Iat int64 `json:"iat"`
16+
Exp int64 `json:"exp"`
17+
}
18+
19+
// ToolingTokensRotate will send a refresh for our token
20+
func (api *Client) ToolingTokensRotate(refresh_token string) (*ToolingTokensRotate, error) {
21+
return api.ToolingTokensRotateContext(context.Background(), refresh_token)
22+
}
23+
24+
// ToolingTokensRotateContext will send a refresh request for our token
25+
func (api *Client) ToolingTokensRotateContext(ctx context.Context, refresh_token string) (*ToolingTokensRotate, error) {
26+
response := &ToolingTokensRotate{}
27+
err := api.postMethod(ctx, "tooling.tokens.rotate", url.Values{"refresh_token": {refresh_token}}, response)
28+
if err != nil {
29+
return nil, err
30+
}
31+
32+
return response, response.Err()
33+
}

tooling_tokens_test.go

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package slack
2+
3+
import (
4+
"net/http"
5+
"testing"
6+
7+
"github.com/stretchr/testify/assert"
8+
)
9+
10+
func toolingTokensRotate(rw http.ResponseWriter, r *http.Request) {
11+
rw.Header().Set("Content-Type", "application/json")
12+
response := []byte(`{
13+
"ok": true,
14+
"token": "xoxe.xoxp-...",
15+
"refresh_token": "xoxe-...",
16+
"team_id": "...",
17+
"user_id": "...",
18+
"iat": 1633095660,
19+
"exp": 1633138860
20+
}`)
21+
rw.Write(response)
22+
}
23+
24+
func TestToolingTokensRotate(t *testing.T) {
25+
http.HandleFunc("/tooling.tokens.rotate", toolingTokensRotate)
26+
27+
once.Do(startServer)
28+
api := New("testing-token", OptionAPIURL("http://"+serverAddr+"/"))
29+
30+
token, err := api.ToolingTokensRotate("xoxe.xoxp-...")
31+
if err != nil {
32+
t.Errorf("Unexpected error: %s", err)
33+
return
34+
}
35+
36+
assert.Equal(t, true, token.Ok)
37+
assert.Equal(t, "", token.Error)
38+
39+
assert.Equal(t, "xoxe.xoxp-...", token.Token)
40+
assert.Equal(t, "xoxe-...", token.RefreshToken)
41+
assert.Equal(t, "...", token.TeamID)
42+
assert.Equal(t, "...", token.UserID)
43+
assert.Equal(t, int64(1633095660), token.Iat)
44+
assert.Equal(t, int64(1633138860), token.Exp)
45+
}

0 commit comments

Comments
 (0)