mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Add integration tests for signin (#2363)
Signed-off-by: David Schneiderbauer <dschneiderbauer@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Lauris BH
						Lauris BH
					
				
			
			
				
	
			
			
			
						parent
						
							fd6e91077a
						
					
				
				
					commit
					8aadf79f80
				
			| @@ -160,6 +160,13 @@ const userPassword = "password" | |||||||
|  |  | ||||||
| var loginSessionCache = make(map[string]*TestSession, 10) | var loginSessionCache = make(map[string]*TestSession, 10) | ||||||
|  |  | ||||||
|  | func emptyTestSession(t testing.TB) *TestSession { | ||||||
|  | 	jar, err := cookiejar.New(nil) | ||||||
|  | 	assert.NoError(t, err) | ||||||
|  |  | ||||||
|  | 	return &TestSession{jar: jar} | ||||||
|  | } | ||||||
|  |  | ||||||
| func loginUser(t testing.TB, userName string) *TestSession { | func loginUser(t testing.TB, userName string) *TestSession { | ||||||
| 	if session, ok := loginSessionCache[userName]; ok { | 	if session, ok := loginSessionCache[userName]; ok { | ||||||
| 		return session | 		return session | ||||||
| @@ -185,13 +192,13 @@ func loginUserWithPassword(t testing.TB, userName, password string) *TestSession | |||||||
| 	ch.Add("Cookie", strings.Join(resp.Headers["Set-Cookie"], ";")) | 	ch.Add("Cookie", strings.Join(resp.Headers["Set-Cookie"], ";")) | ||||||
| 	cr := http.Request{Header: ch} | 	cr := http.Request{Header: ch} | ||||||
|  |  | ||||||
| 	jar, err := cookiejar.New(nil) | 	session := emptyTestSession(t) | ||||||
| 	assert.NoError(t, err) |  | ||||||
| 	baseURL, err := url.Parse(setting.AppURL) | 	baseURL, err := url.Parse(setting.AppURL) | ||||||
| 	assert.NoError(t, err) | 	assert.NoError(t, err) | ||||||
| 	jar.SetCookies(baseURL, cr.Cookies()) | 	session.jar.SetCookies(baseURL, cr.Cookies()) | ||||||
|  |  | ||||||
| 	return &TestSession{jar: jar} | 	return session | ||||||
| } | } | ||||||
|  |  | ||||||
| type TestResponseWriter struct { | type TestResponseWriter struct { | ||||||
|   | |||||||
							
								
								
									
										60
									
								
								integrations/signin_test.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								integrations/signin_test.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | |||||||
|  | // Copyright 2017 The Gitea Authors. All rights reserved. | ||||||
|  | // Use of this source code is governed by a MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | package integrations | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"net/http" | ||||||
|  | 	"strings" | ||||||
|  | 	"testing" | ||||||
|  |  | ||||||
|  | 	"code.gitea.io/gitea/models" | ||||||
|  |  | ||||||
|  | 	"github.com/Unknwon/i18n" | ||||||
|  | 	"github.com/stretchr/testify/assert" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func testLoginFailed(t *testing.T, username, password, message string) { | ||||||
|  | 	session := emptyTestSession(t) | ||||||
|  | 	req := NewRequestWithValues(t, "POST", "/user/login", map[string]string{ | ||||||
|  | 		"_csrf":     GetCSRF(t, session, "/user/login"), | ||||||
|  | 		"user_name": username, | ||||||
|  | 		"password":  password, | ||||||
|  | 	}) | ||||||
|  | 	resp := session.MakeRequest(t, req, http.StatusOK) | ||||||
|  |  | ||||||
|  | 	htmlDoc := NewHTMLParser(t, resp.Body) | ||||||
|  | 	resultMsg := htmlDoc.doc.Find(".ui.message>p").Text() | ||||||
|  |  | ||||||
|  | 	assert.EqualValues(t, message, resultMsg) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func TestSignin(t *testing.T) { | ||||||
|  | 	prepareTestEnv(t) | ||||||
|  |  | ||||||
|  | 	user := models.AssertExistsAndLoadBean(t, &models.User{ID: 2}).(*models.User) | ||||||
|  |  | ||||||
|  | 	// add new user with user2's email | ||||||
|  | 	user.Name = "testuser" | ||||||
|  | 	user.LowerName = strings.ToLower(user.Name) | ||||||
|  | 	user.ID = 0 | ||||||
|  | 	models.AssertSuccessfulInsert(t, user) | ||||||
|  |  | ||||||
|  | 	samples := []struct { | ||||||
|  | 		username string | ||||||
|  | 		password string | ||||||
|  | 		message  string | ||||||
|  | 	}{ | ||||||
|  | 		{username: "wrongUsername", password: "wrongPassword", message: i18n.Tr("en", "form.username_password_incorrect")}, | ||||||
|  | 		{username: "wrongUsername", password: "password", message: i18n.Tr("en", "form.username_password_incorrect")}, | ||||||
|  | 		{username: "user15", password: "wrongPassword", message: i18n.Tr("en", "form.username_password_incorrect")}, | ||||||
|  | 		{username: "user1@example.com", password: "wrongPassword", message: i18n.Tr("en", "form.username_password_incorrect")}, | ||||||
|  | 		// test for duplicate email | ||||||
|  | 		{username: "user2@example.com", password: "password", message: i18n.Tr("en", "form.email_been_used")}, | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for _, s := range samples { | ||||||
|  | 		testLoginFailed(t, s.username, s.password, s.message) | ||||||
|  | 	} | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user