2017-03-11 17:30:29 +03:00
// 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.
2022-09-02 22:18:23 +03:00
package integration
2017-03-11 17:30:29 +03:00
import (
2020-11-14 19:53:43 +03:00
"fmt"
2017-04-25 10:24:51 +03:00
"net/http"
2020-11-14 19:53:43 +03:00
"strings"
2017-03-11 17:30:29 +03:00
"testing"
2021-11-16 11:53:21 +03:00
"code.gitea.io/gitea/models/unittest"
2021-11-24 12:49:20 +03:00
user_model "code.gitea.io/gitea/models/user"
2017-04-25 10:24:51 +03:00
"code.gitea.io/gitea/modules/setting"
2022-06-26 17:19:22 +03:00
"code.gitea.io/gitea/modules/translation"
2022-09-02 22:18:23 +03:00
"code.gitea.io/gitea/tests"
2021-11-17 15:34:35 +03:00
2020-11-14 19:53:43 +03:00
"github.com/stretchr/testify/assert"
2017-04-25 10:24:51 +03:00
)
2017-03-11 17:30:29 +03:00
func TestSignup ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2017-04-28 16:23:28 +03:00
2017-04-25 10:24:51 +03:00
setting . Service . EnableCaptcha = false
2017-06-17 07:49:45 +03:00
req := NewRequestWithValues ( t , "POST" , "/user/sign_up" , map [ string ] string {
"user_name" : "exampleUser" ,
"email" : "exampleUser@example.com" ,
2019-11-09 06:40:37 +03:00
"password" : "examplePassword!1" ,
"retype" : "examplePassword!1" ,
2017-06-17 07:49:45 +03:00
} )
2022-03-23 07:54:07 +03:00
MakeRequest ( t , req , http . StatusSeeOther )
2017-03-11 17:30:29 +03:00
2017-04-25 10:24:51 +03:00
// should be able to view new user's page
2017-06-10 03:41:36 +03:00
req = NewRequest ( t , "GET" , "/exampleUser" )
2017-07-07 22:36:47 +03:00
MakeRequest ( t , req , http . StatusOK )
2017-03-11 17:30:29 +03:00
}
2020-11-14 19:53:43 +03:00
2021-07-15 22:19:48 +03:00
func TestSignupAsRestricted ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2021-07-15 22:19:48 +03:00
setting . Service . EnableCaptcha = false
setting . Service . DefaultUserIsRestricted = true
req := NewRequestWithValues ( t , "POST" , "/user/sign_up" , map [ string ] string {
"user_name" : "restrictedUser" ,
"email" : "restrictedUser@example.com" ,
"password" : "examplePassword!1" ,
"retype" : "examplePassword!1" ,
} )
2022-03-23 07:54:07 +03:00
MakeRequest ( t , req , http . StatusSeeOther )
2021-07-15 22:19:48 +03:00
// should be able to view new user's page
req = NewRequest ( t , "GET" , "/restrictedUser" )
MakeRequest ( t , req , http . StatusOK )
2022-08-16 05:22:25 +03:00
user2 := unittest . AssertExistsAndLoadBean ( t , & user_model . User { Name : "restrictedUser" } )
2021-07-15 22:19:48 +03:00
assert . True ( t , user2 . IsRestricted )
}
2020-11-14 19:53:43 +03:00
func TestSignupEmail ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2020-11-14 19:53:43 +03:00
setting . Service . EnableCaptcha = false
tests := [ ] struct {
email string
wantStatus int
wantMsg string
} {
2022-06-26 17:19:22 +03:00
{ "exampleUser@example.com\r\n" , http . StatusOK , translation . NewLocale ( "en-US" ) . Tr ( "form.email_invalid" ) } ,
{ "exampleUser@example.com\r" , http . StatusOK , translation . NewLocale ( "en-US" ) . Tr ( "form.email_invalid" ) } ,
{ "exampleUser@example.com\n" , http . StatusOK , translation . NewLocale ( "en-US" ) . Tr ( "form.email_invalid" ) } ,
2022-03-23 07:54:07 +03:00
{ "exampleUser@example.com" , http . StatusSeeOther , "" } ,
2020-11-14 19:53:43 +03:00
}
for i , test := range tests {
req := NewRequestWithValues ( t , "POST" , "/user/sign_up" , map [ string ] string {
"user_name" : fmt . Sprintf ( "exampleUser%d" , i ) ,
"email" : test . email ,
"password" : "examplePassword!1" ,
"retype" : "examplePassword!1" ,
} )
resp := MakeRequest ( t , req , test . wantStatus )
if test . wantMsg != "" {
htmlDoc := NewHTMLParser ( t , resp . Body )
assert . Equal ( t ,
test . wantMsg ,
strings . TrimSpace ( htmlDoc . doc . Find ( ".ui.message" ) . Text ( ) ) ,
)
}
}
}