code.gitea.io/gitea@v1.22.3/tests/integration/signin_test.go (about) 1 // Copyright 2017 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package integration 5 6 import ( 7 "net/http" 8 "net/url" 9 "strings" 10 "testing" 11 12 "code.gitea.io/gitea/models/unittest" 13 user_model "code.gitea.io/gitea/models/user" 14 "code.gitea.io/gitea/modules/setting" 15 "code.gitea.io/gitea/modules/translation" 16 "code.gitea.io/gitea/tests" 17 18 "github.com/stretchr/testify/assert" 19 ) 20 21 func testLoginFailed(t *testing.T, username, password, message string) { 22 session := emptyTestSession(t) 23 req := NewRequestWithValues(t, "POST", "/user/login", map[string]string{ 24 "_csrf": GetCSRF(t, session, "/user/login"), 25 "user_name": username, 26 "password": password, 27 }) 28 resp := session.MakeRequest(t, req, http.StatusOK) 29 30 htmlDoc := NewHTMLParser(t, resp.Body) 31 resultMsg := htmlDoc.doc.Find(".ui.message>p").Text() 32 33 assert.EqualValues(t, message, resultMsg) 34 } 35 36 func TestSignin(t *testing.T) { 37 defer tests.PrepareTestEnv(t)() 38 39 user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) 40 41 // add new user with user2's email 42 user.Name = "testuser" 43 user.LowerName = strings.ToLower(user.Name) 44 user.ID = 0 45 unittest.AssertSuccessfulInsert(t, user) 46 47 samples := []struct { 48 username string 49 password string 50 message string 51 }{ 52 {username: "wrongUsername", password: "wrongPassword", message: translation.NewLocale("en-US").TrString("form.username_password_incorrect")}, 53 {username: "wrongUsername", password: "password", message: translation.NewLocale("en-US").TrString("form.username_password_incorrect")}, 54 {username: "user15", password: "wrongPassword", message: translation.NewLocale("en-US").TrString("form.username_password_incorrect")}, 55 {username: "user1@example.com", password: "wrongPassword", message: translation.NewLocale("en-US").TrString("form.username_password_incorrect")}, 56 } 57 58 for _, s := range samples { 59 testLoginFailed(t, s.username, s.password, s.message) 60 } 61 } 62 63 func TestSigninWithRememberMe(t *testing.T) { 64 defer tests.PrepareTestEnv(t)() 65 66 user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2}) 67 baseURL, _ := url.Parse(setting.AppURL) 68 69 session := emptyTestSession(t) 70 req := NewRequestWithValues(t, "POST", "/user/login", map[string]string{ 71 "_csrf": GetCSRF(t, session, "/user/login"), 72 "user_name": user.Name, 73 "password": userPassword, 74 "remember": "on", 75 }) 76 session.MakeRequest(t, req, http.StatusSeeOther) 77 78 c := session.GetCookie(setting.CookieRememberName) 79 assert.NotNil(t, c) 80 81 session = emptyTestSession(t) 82 83 // Without session the settings page should not be reachable 84 req = NewRequest(t, "GET", "/user/settings") 85 session.MakeRequest(t, req, http.StatusSeeOther) 86 87 req = NewRequest(t, "GET", "/user/login") 88 // Set the remember me cookie for the login GET request 89 session.jar.SetCookies(baseURL, []*http.Cookie{c}) 90 session.MakeRequest(t, req, http.StatusSeeOther) 91 92 // With session the settings page should be reachable 93 req = NewRequest(t, "GET", "/user/settings") 94 session.MakeRequest(t, req, http.StatusOK) 95 }