1package cli
2
3import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 "github.com/stretchr/testify/require"
8)
9
10func TestParseAndConvertScopes_DefaultWildcard(t *testing.T) {
11 got, err := parseAndConvertScopes("push,pull", "*")
12 require.NoError(t, err)
13 assert.Equal(t, []string{"repository:*:push,pull"}, got)
14}
15
16func TestParseAndConvertScopes_SpecificRepo(t *testing.T) {
17 got, err := parseAndConvertScopes("push,pull", "myapp")
18 require.NoError(t, err)
19 assert.Equal(t, []string{"repository:myapp:push,pull"}, got)
20}
21
22func TestParseAndConvertScopes_SpecificRepoPushOnly(t *testing.T) {
23 got, err := parseAndConvertScopes("push", "myapp")
24 require.NoError(t, err)
25 assert.Equal(t, []string{"repository:myapp:push"}, got)
26}
27
28func TestParseAndConvertScopes_MixedWithAdminScopes(t *testing.T) {
29 got, err := parseAndConvertScopes("push,pull,admin:routes:read", "myapp")
30 require.NoError(t, err)
31 assert.ElementsMatch(t, []string{"repository:myapp:push,pull", "admin:routes:read"}, got)
32}
33
34func TestParseAndConvertScopes_AlreadyV2Format_RepoIgnored(t *testing.T) {
35 // When scopes are already in v2 format, --repo is ignored (scopes returned as-is)
36 got, err := parseAndConvertScopes("repository:specific:push", "*")
37 require.NoError(t, err)
38 assert.Equal(t, []string{"repository:specific:push"}, got)
39}
40
41func TestParseAndConvertScopes_EmptyRepo(t *testing.T) {
42 _, err := parseAndConvertScopes("push,pull", "")
43 assert.EqualError(t, err, "repository name cannot be empty")
44}
45
46func TestParseAndConvertScopes_WhitespaceRepo(t *testing.T) {
47 _, err := parseAndConvertScopes("push,pull", " ")
48 assert.EqualError(t, err, "repository name cannot be empty")
49}