@@ -27,6 +27,7 @@ import (
2727
2828func TestPackageContainer (t * testing.T ) {
2929 defer prepareTestEnv (t )()
30+
3031 user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 }).(* user_model.User )
3132
3233 has := func (l packages_model.PackagePropertyList , name string ) bool {
@@ -37,6 +38,15 @@ func TestPackageContainer(t *testing.T) {
3738 }
3839 return false
3940 }
41+ getAllByName := func (l packages_model.PackagePropertyList , name string ) []string {
42+ values := make ([]string , 0 , len (l ))
43+ for _ , pp := range l {
44+ if pp .Name == name {
45+ values = append (values , pp .Value )
46+ }
47+ }
48+ return values
49+ }
4050
4151 images := []string {"test" , "te/st" }
4252 tags := []string {"latest" , "main" }
@@ -67,7 +77,7 @@ func TestPackageContainer(t *testing.T) {
6777 Token string `json:"token"`
6878 }
6979
70- authenticate := []string {`Bearer realm="` + setting .AppURL + `v2/token"` }
80+ authenticate := []string {`Bearer realm="` + setting .AppURL + `v2/token",service="container_registry",scope="*" ` }
7181
7282 t .Run ("Anonymous" , func (t * testing.T ) {
7383 defer PrintCurrentTest (t )()
@@ -237,7 +247,8 @@ func TestPackageContainer(t *testing.T) {
237247 assert .Nil (t , pd .SemVer )
238248 assert .Equal (t , image , pd .Package .Name )
239249 assert .Equal (t , tag , pd .Version .Version )
240- assert .True (t , has (pd .Properties , container_module .PropertyManifestTagged ))
250+ assert .ElementsMatch (t , []string {strings .ToLower (user .LowerName + "/" + image )}, getAllByName (pd .PackageProperties , container_module .PropertyRepository ))
251+ assert .True (t , has (pd .VersionProperties , container_module .PropertyManifestTagged ))
241252
242253 assert .IsType (t , & container_module.Metadata {}, pd .Metadata )
243254 metadata := pd .Metadata .(* container_module.Metadata )
@@ -331,7 +342,8 @@ func TestPackageContainer(t *testing.T) {
331342 assert .Nil (t , pd .SemVer )
332343 assert .Equal (t , image , pd .Package .Name )
333344 assert .Equal (t , untaggedManifestDigest , pd .Version .Version )
334- assert .False (t , has (pd .Properties , container_module .PropertyManifestTagged ))
345+ assert .ElementsMatch (t , []string {strings .ToLower (user .LowerName + "/" + image )}, getAllByName (pd .PackageProperties , container_module .PropertyRepository ))
346+ assert .False (t , has (pd .VersionProperties , container_module .PropertyManifestTagged ))
335347
336348 assert .IsType (t , & container_module.Metadata {}, pd .Metadata )
337349
@@ -363,18 +375,10 @@ func TestPackageContainer(t *testing.T) {
363375 assert .Nil (t , pd .SemVer )
364376 assert .Equal (t , image , pd .Package .Name )
365377 assert .Equal (t , multiTag , pd .Version .Version )
366- assert .True (t , has (pd .Properties , container_module .PropertyManifestTagged ))
378+ assert .ElementsMatch (t , []string {strings .ToLower (user .LowerName + "/" + image )}, getAllByName (pd .PackageProperties , container_module .PropertyRepository ))
379+ assert .True (t , has (pd .VersionProperties , container_module .PropertyManifestTagged ))
367380
368- getAllByName := func (l packages_model.PackagePropertyList , name string ) []string {
369- values := make ([]string , 0 , len (l ))
370- for _ , pp := range l {
371- if pp .Name == name {
372- values = append (values , pp .Value )
373- }
374- }
375- return values
376- }
377- assert .ElementsMatch (t , []string {manifestDigest , untaggedManifestDigest }, getAllByName (pd .Properties , container_module .PropertyManifestReference ))
381+ assert .ElementsMatch (t , []string {manifestDigest , untaggedManifestDigest }, getAllByName (pd .VersionProperties , container_module .PropertyManifestReference ))
378382
379383 assert .IsType (t , & container_module.Metadata {}, pd .Metadata )
380384 metadata := pd .Metadata .(* container_module.Metadata )
@@ -536,4 +540,56 @@ func TestPackageContainer(t *testing.T) {
536540 })
537541 })
538542 }
543+
544+ t .Run ("OwnerNameChange" , func (t * testing.T ) {
545+ defer PrintCurrentTest (t )()
546+
547+ checkCatalog := func (owner string ) func (t * testing.T ) {
548+ return func (t * testing.T ) {
549+ defer PrintCurrentTest (t )()
550+
551+ req := NewRequest (t , "GET" , fmt .Sprintf ("%sv2/_catalog" , setting .AppURL ))
552+ addTokenAuthHeader (req , userToken )
553+ resp := MakeRequest (t , req , http .StatusOK )
554+
555+ type RepositoryList struct {
556+ Repositories []string `json:"repositories"`
557+ }
558+
559+ repoList := & RepositoryList {}
560+ DecodeJSON (t , resp , & repoList )
561+
562+ assert .Len (t , repoList .Repositories , len (images ))
563+ names := make ([]string , 0 , len (images ))
564+ for _ , image := range images {
565+ names = append (names , strings .ToLower (owner + "/" + image ))
566+ }
567+ assert .ElementsMatch (t , names , repoList .Repositories )
568+ }
569+ }
570+
571+ t .Run (fmt .Sprintf ("Catalog[%s]" , user .LowerName ), checkCatalog (user .LowerName ))
572+
573+ session := loginUser (t , user .Name )
574+
575+ newOwnerName := "newUsername"
576+
577+ req := NewRequestWithValues (t , "POST" , "/user/settings" , map [string ]string {
578+ "_csrf" : GetCSRF (t , session , "/user/settings" ),
579+ "name" : newOwnerName ,
580+ 581+ "language" : "en-US" ,
582+ })
583+ session .MakeRequest (t , req , http .StatusSeeOther )
584+
585+ t .Run (fmt .Sprintf ("Catalog[%s]" , newOwnerName ), checkCatalog (newOwnerName ))
586+
587+ req = NewRequestWithValues (t , "POST" , "/user/settings" , map [string ]string {
588+ "_csrf" : GetCSRF (t , session , "/user/settings" ),
589+ "name" : user .Name ,
590+ 591+ "language" : "en-US" ,
592+ })
593+ session .MakeRequest (t , req , http .StatusSeeOther )
594+ })
539595}
0 commit comments