99 "strings"
1010 "testing"
1111
12+ "code.gitea.io/gitea/models/db"
1213 "code.gitea.io/gitea/models/unittest"
1314 user_model "code.gitea.io/gitea/models/user"
1415 "code.gitea.io/gitea/modules/setting"
@@ -99,34 +100,39 @@ 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 )
130136 resp = session .MakeRequest (t , NewRequest (t , "GET" , "/user/activate?code=" + activationCode ), http .StatusOK )
131137 assert .Contains (t , resp .Body .String (), `<input id="verify-password"` )
132138
@@ -138,7 +144,7 @@ func TestSignupEmailActive(t *testing.T) {
138144 resp = session .MakeRequest (t , req , http .StatusOK )
139145 assert .Contains (t , resp .Body .String (), `Your password does not match` )
140146 assert .Contains (t , resp .Body .String (), `<input id="verify-password"` )
141- user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "test-user -1" })
147+ user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Test-User -1" })
142148 assert .False (t , user .IsActive )
143149
144150 // then use a correct password, the user should be activated
@@ -148,6 +154,6 @@ func TestSignupEmailActive(t *testing.T) {
148154 })
149155 resp = session .MakeRequest (t , req , http .StatusSeeOther )
150156 assert .Equal (t , "/" , test .RedirectURL (resp ))
151- user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "test-user -1" })
157+ user = unittest .AssertExistsAndLoadBean (t , & user_model.User {Name : "Test-User -1" })
152158 assert .True (t , user .IsActive )
153159}
0 commit comments