| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package apitest
- import (
- "context"
- "fmt"
- "net/http"
- "net/http/httptest"
- "testing"
- "github.com/porter-dev/porter/api/server/shared/config"
- "github.com/porter-dev/porter/api/types"
- "github.com/porter-dev/porter/internal/auth/token"
- "github.com/porter-dev/porter/internal/models"
- )
- // AuthenticateUserWithCookie uses the session store to create a cookie for a user
- func AuthenticateUserWithCookie(
- t *testing.T,
- config *config.Config,
- user *models.User,
- badUserIDType bool,
- ) *http.Cookie {
- rr2 := httptest.NewRecorder()
- req2, err := http.NewRequest("GET", "/login", nil)
- if err != nil {
- t.Fatal(err)
- }
- // set the user as authenticated
- session, err := config.Store.Get(req2, config.ServerConf.CookieName)
- if err != nil {
- t.Fatal(err)
- }
- session.Values["authenticated"] = true
- session.Values["user_id"] = user.ID
- session.Values["email"] = user.Email
- if badUserIDType {
- session.Values["user_id"] = "badtype"
- }
- if err := session.Save(req2, rr2); err != nil {
- t.Fatal(err)
- }
- var cookie *http.Cookie
- if cookies := rr2.Result().Cookies(); len(cookies) > 0 {
- cookie = cookies[0]
- } else {
- t.Fatal(fmt.Errorf("no cookie in response"))
- }
- return cookie
- }
- // AuthenticateUserWithToken uses the JWT token generator to create a token for a user
- func AuthenticateUserWithToken(t *testing.T, config *config.Config, userID uint) string {
- issToken, err := token.GetTokenForUser(userID)
- if err != nil {
- t.Fatal(err)
- }
- res, err := issToken.EncodeToken(config.TokenConf)
- if err != nil {
- t.Fatal(err)
- }
- return res
- }
- func WithAuthenticatedUser(t *testing.T, req *http.Request, user *models.User) *http.Request {
- ctx := req.Context()
- ctx = context.WithValue(ctx, types.UserScope, user)
- req = req.WithContext(ctx)
- return req
- }
|