@@ -19,6 +19,7 @@ import (
19
19
"code.gitea.io/gitea/modules/optional"
20
20
"code.gitea.io/gitea/modules/setting"
21
21
"code.gitea.io/gitea/modules/structs"
22
+ "code.gitea.io/gitea/modules/test"
22
23
"code.gitea.io/gitea/modules/timeutil"
23
24
24
25
"github.com/stretchr/testify/assert"
@@ -616,3 +617,37 @@ func TestGetInactiveUsers(t *testing.T) {
616
617
assert .NoError (t , err )
617
618
assert .Empty (t , users )
618
619
}
620
+
621
+ func TestCanCreateRepo (t * testing.T ) {
622
+ defer test .MockVariableValue (& setting .Repository .MaxCreationLimit )()
623
+ const noLimit = - 1
624
+ doerNormal := & user_model.User {}
625
+ doerAdmin := & user_model.User {IsAdmin : true }
626
+ t .Run ("NoGlobalLimit" , func (t * testing.T ) {
627
+ setting .Repository .MaxCreationLimit = noLimit
628
+
629
+ assert .True (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : noLimit }))
630
+ assert .False (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 0 }))
631
+ assert .True (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 100 }))
632
+
633
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : noLimit }))
634
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 0 }))
635
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 100 }))
636
+ })
637
+
638
+ t .Run ("GlobalLimit50" , func (t * testing.T ) {
639
+ setting .Repository .MaxCreationLimit = 50
640
+
641
+ assert .True (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : noLimit }))
642
+ assert .False (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 60 , MaxRepoCreation : noLimit })) // limited by global limit
643
+ assert .False (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 0 }))
644
+ assert .True (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 100 }))
645
+ assert .True (t , doerNormal .CanCreateRepoIn (& user_model.User {NumRepos : 60 , MaxRepoCreation : 100 }))
646
+
647
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : noLimit }))
648
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 60 , MaxRepoCreation : noLimit }))
649
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 0 }))
650
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 10 , MaxRepoCreation : 100 }))
651
+ assert .True (t , doerAdmin .CanCreateRepoIn (& user_model.User {NumRepos : 60 , MaxRepoCreation : 100 }))
652
+ })
653
+ }
0 commit comments