remotes: support cross-repo-push
With distribution source label in content store, select the longest common prefix components as condidate mount blob source and try to push with mount blob. Fix #2964 Signed-off-by: Wei Fu <fuweid89@gmail.com>
This commit is contained in:
@@ -17,6 +17,7 @@
|
||||
package docker
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/containerd/containerd/reference"
|
||||
@@ -54,3 +55,42 @@ func TestRepositoryScope(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetTokenScopes(t *testing.T) {
|
||||
testCases := []struct {
|
||||
scopesInCtx []string
|
||||
commonScopes []string
|
||||
expected []string
|
||||
}{
|
||||
{
|
||||
scopesInCtx: []string{},
|
||||
commonScopes: []string{"repository:foo/bar:pull"},
|
||||
expected: []string{"repository:foo/bar:pull"},
|
||||
},
|
||||
{
|
||||
scopesInCtx: []string{"repository:foo/bar:pull,push"},
|
||||
commonScopes: []string{},
|
||||
expected: []string{"repository:foo/bar:pull,push"},
|
||||
},
|
||||
{
|
||||
scopesInCtx: []string{"repository:foo/bar:pull"},
|
||||
commonScopes: []string{"repository:foo/bar:pull"},
|
||||
expected: []string{"repository:foo/bar:pull"},
|
||||
},
|
||||
{
|
||||
scopesInCtx: []string{"repository:foo/bar:pull"},
|
||||
commonScopes: []string{"repository:foo/bar:pull,push"},
|
||||
expected: []string{"repository:foo/bar:pull", "repository:foo/bar:pull,push"},
|
||||
},
|
||||
{
|
||||
scopesInCtx: []string{"repository:foo/bar:pull"},
|
||||
commonScopes: []string{"repository:foo/bar:pull,push", "repository:foo/bar:pull"},
|
||||
expected: []string{"repository:foo/bar:pull", "repository:foo/bar:pull,push"},
|
||||
},
|
||||
}
|
||||
for _, tc := range testCases {
|
||||
ctx := context.WithValue(context.TODO(), tokenScopesKey{}, tc.scopesInCtx)
|
||||
actual := getTokenScopes(ctx, tc.commonScopes)
|
||||
assert.DeepEqual(t, tc.expected, actual)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user