58 lines
1.2 KiB
Go
58 lines
1.2 KiB
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
"net/url"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func buildEncodedOAuthBindUserCookie(t *testing.T, userID int64, secret string) string {
|
|
t.Helper()
|
|
value, err := buildOAuthBindUserCookieValue(userID, secret)
|
|
require.NoError(t, err)
|
|
return value
|
|
}
|
|
|
|
func encodedCookie(name, value string) *http.Cookie {
|
|
return &http.Cookie{
|
|
Name: name,
|
|
Value: encodeCookieValue(value),
|
|
Path: "/",
|
|
}
|
|
}
|
|
|
|
func findCookie(cookies []*http.Cookie, name string) *http.Cookie {
|
|
for _, cookie := range cookies {
|
|
if cookie.Name == name {
|
|
return cookie
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func decodeCookieValueForTest(t *testing.T, value string) string {
|
|
t.Helper()
|
|
decoded, err := decodeCookieValue(value)
|
|
require.NoError(t, err)
|
|
return decoded
|
|
}
|
|
|
|
func assertOAuthRedirectError(t *testing.T, location string, errorCode string, errorMessage string) {
|
|
t.Helper()
|
|
require.NotEmpty(t, location)
|
|
|
|
parsed, err := url.Parse(location)
|
|
require.NoError(t, err)
|
|
|
|
rawValues := parsed.RawQuery
|
|
if rawValues == "" {
|
|
rawValues = parsed.Fragment
|
|
}
|
|
values, err := url.ParseQuery(rawValues)
|
|
require.NoError(t, err)
|
|
require.Equal(t, errorCode, values.Get("error"))
|
|
require.Equal(t, errorMessage, values.Get("error_message"))
|
|
}
|