44package integration
55
66import (
7+ "code.gitea.io/gitea/models/db"
78 "fmt"
89 "net/http"
910 "strings"
@@ -99,34 +100,40 @@ func TestSignupEmailActive(t *testing.T) {
99100
100101 // try to sign up and send the activation email
101102 req := NewRequestWithValues (t , "POST" , "/user/sign_up" , map [string ]string {
102- "user_name" : "test-user -1" ,
103- "email" :
"email [email protected] " ,
103+ "user_name" : "Test-User -1" ,
104+ "email" :
"EmAiL [email protected] " ,
104105 "password" : "password1" ,
105106 "retype" : "password1" ,
106107 })
107108 resp := MakeRequest (t , req , http .StatusOK )
108- assert .
Contains (
t ,
resp .
Body .
String (),
`A new confirmation email has been sent to <b>email [email protected] </b>.` )
109+ assert .
Contains (
t ,
resp .
Body .
String (),
`A new confirmation email has been sent to <b>EmAiL [email protected] </b>.` )
109110
110111 // access "user/activate" means trying to re-send the activation email
111112 session := loginUserWithPassword (t , "test-user-1" , "password1" )
112113 resp = session .MakeRequest (t , NewRequest (t , "GET" , "/user/activate" ), http .StatusOK )
113114 assert .Contains (t , resp .Body .String (), "You have already requested an activation email recently" )
114115
115- // access anywhere else will see a "Activate Your Account" prompt, and there is a chance to change email
116+ // access anywhere else will see an "Activate Your Account" prompt, and there is a chance to change email
116117 resp = session .MakeRequest (t , NewRequest (t , "GET" , "/user/issues" ), http .StatusOK )
117118 assert .Contains (t , resp .Body .String (), `<input id="change-email" name="change_email" ` )
118119
119120 // post to "user/activate" with a new email
120121 session .
MakeRequest (
t ,
NewRequestWithValues (
t ,
"POST" ,
"/user/activate" ,
map [
string ]
string {
"change_email" :
"[email protected] " }),
http .
StatusSeeOther )
121- user := unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "test-user -1" })
122+ user := unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Test-User -1" })
122123 assert .
Equal (
t ,
"[email protected] " ,
user .
Email )
123124 email := unittest .
AssertExistsAndLoadBean (
t ,
& user_model.
EmailAddress {
Email :
"[email protected] " })
124125 assert .False (t , email .IsActivated )
125126 assert .True (t , email .IsPrimary )
126127
128+ // generate an activation code from lower-cased email
129+ activationCode := user_model .GenerateUserTimeLimitCode (& user_model.TimeLimitCodeOptions {Purpose : user_model .TimeLimitCodeActivateAccount }, user )
130+ // and update the user email to case-sensitive, it shouldn't affect the verification later
131+ _ ,
_ = db .
Exec (
db .
DefaultContext ,
"UPDATE `user` SET email=? WHERE id=?" ,
"[email protected] " ,
user .
ID )
132+ user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Test-User-1" })
133+ assert .
Equal (
t ,
"[email protected] " ,
user .
Email )
134+
127135 // access "user/activate" with a valid activation code, then get the "verify password" page
128- user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "test-user-1" })
129- activationCode := user .GenerateEmailActivateCode (user .Email )
136+ user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Test-User-1" })
130137 resp = session .MakeRequest (t , NewRequest (t , "GET" , "/user/activate?code=" + activationCode ), http .StatusOK )
131138 assert .Contains (t , resp .Body .String (), `<input id="verify-password"` )
132139
@@ -138,7 +145,7 @@ func TestSignupEmailActive(t *testing.T) {
138145 resp = session .MakeRequest (t , req , http .StatusOK )
139146 assert .Contains (t , resp .Body .String (), `Your password does not match` )
140147 assert .Contains (t , resp .Body .String (), `<input id="verify-password"` )
141- user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "test-user -1" })
148+ user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Test-User -1" })
142149 assert .False (t , user .IsActive )
143150
144151 // then use a correct password, the user should be activated
@@ -148,31 +155,6 @@ func TestSignupEmailActive(t *testing.T) {
148155 })
149156 resp = session .MakeRequest (t , req , http .StatusSeeOther )
150157 assert .Equal (t , "/" , test .RedirectURL (resp ))
151- user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "test-user-1" })
152- assert .True (t , user .IsActive )
153- }
154-
155- func TestSignUpWithUppercaseEmail (t * testing.T ) {
156- defer tests .PrepareTestEnv (t )()
157- defer test .MockVariableValue (& setting .Service .RegisterEmailConfirm , true )()
158-
159- req := NewRequestWithValues (t , "POST" , "/user/sign_up" , map [string ]string {
160- "user_name" : "Upper-user-1" ,
161- 162- "password" : "password1" ,
163- "retype" : "password1" ,
164- })
165- MakeRequest (t , req , http .StatusOK )
166-
167- user := unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Upper-user-1" })
168- session := loginUserWithPassword (t , "Upper-user-1" , "password1" )
169- activationCode := user .GenerateEmailActivateCode (user .Email )
170- req = NewRequestWithValues (t , "POST" , "/user/activate" , map [string ]string {
171- "code" : activationCode ,
172- "password" : "password1" ,
173- })
174- resp := session .MakeRequest (t , req , http .StatusSeeOther )
175- assert .Equal (t , "/" , test .RedirectURL (resp ))
176- user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Upper-user-1" })
158+ user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Test-User-1" })
177159 assert .True (t , user .IsActive )
178160}
0 commit comments