1 package lease
2
3 import (
4 "context"
5 "net/http/httptest"
6 "os"
7 "testing"
8
9 "github.com/stretchr/testify/require"
10
11 "edge-infra.dev/pkg/edge/api/fake"
12 "edge-infra.dev/pkg/edge/edgecli"
13 "edge-infra.dev/pkg/edge/edgecli/flagutil"
14 )
15
16 var (
17 testBanner = edgecli.BannerContext{
18 BannerEdgeID: "test-banner-edge-id-0",
19 BannerName: "test-banner-0",
20 TenantOrg: "test-org-0",
21 Username: "test-user-0",
22 Token: "test-token-0",
23 }
24 testCurrrentBanner = "test-current-banner"
25 testConfig = edgecli.Config{
26 CurrentBannerContext: testCurrrentBanner,
27 BannerContexts: map[string]*edgecli.BannerContext{
28 testCurrrentBanner: &testBanner,
29 },
30 }
31 edgeAPIMockSvr *httptest.Server
32 edgeAPIMockURL string
33 )
34
35 func TestMain(m *testing.M) {
36 edgeAPIMockSvr = fake.GetMockAPIServer()
37 edgeAPIMockURL = edgeAPIMockSvr.URL + "/api/v2"
38 run := m.Run()
39 edgeAPIMockSvr.Close()
40 os.Exit(run)
41 }
42
43 func TestGetClusterSecretLease(t *testing.T) {
44 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
45 ctx := context.Background()
46 view := View(&testConfig)
47
48 require.Error(t, view.Command().Exec(ctx, []string{}), "Flag 'store' is required")
49 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.StoreFlag, "test-cluster-0"))
50 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.BannerFlag, "banner-not-exist"))
51 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.SecretTypeFlag, "grub"))
52 require.ErrorContains(t, view.Command().Exec(ctx, []string{}), "could not find banner: banner-not-exist")
53
54 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.StoreFlag, "cluster-not-exist"))
55 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.BannerFlag, "test-banner-0"))
56 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.SecretTypeFlag, "grub"))
57 require.ErrorContains(t, view.Command().Exec(ctx, []string{}), "cluster does not exist: cluster-not-exist")
58
59 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.StoreFlag, "test-cluster-0"))
60 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.BannerFlag, "test-banner-0"))
61 require.NoError(t, flagutil.SetFlag(view.Rags, flagutil.SecretTypeFlag, "invalid-type"))
62 require.Error(t, view.Command().Exec(ctx, []string{}), "invalid secret type invalid-type")
63 }
64
65 func TestReleaseClusterSecretLease(t *testing.T) {
66 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
67 ctx := context.Background()
68 release := Release(&testConfig)
69
70 require.Error(t, release.Command().Exec(ctx, []string{}), "Flag 'store' is required")
71 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.StoreFlag, "test-cluster-0"))
72 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.BannerFlag, "banner-not-exist"))
73 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.SecretTypeFlag, "grub"))
74 require.ErrorContains(t, release.Command().Exec(ctx, []string{}), "could not find banner: banner-not-exist")
75
76 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.StoreFlag, "cluster-not-exist"))
77 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.BannerFlag, "test-banner-0"))
78 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.SecretTypeFlag, "grub"))
79 require.ErrorContains(t, release.Command().Exec(ctx, []string{}), "cluster does not exist: cluster-not-exist")
80
81 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.StoreFlag, "test-cluster-0"))
82 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.BannerFlag, "test-banner-0"))
83 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.SecretTypeFlag, "invalid-type"))
84 require.Error(t, release.Command().Exec(ctx, []string{}), "invalid secret type invalid-type")
85
86 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.StoreFlag, "test-cluster-0"))
87 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.BannerFlag, "test-banner-0"))
88 require.NoError(t, flagutil.SetFlag(release.Rags, flagutil.SecretTypeFlag, "grub"))
89 require.NoError(t, release.Command().Exec(ctx, []string{}))
90 }
91
92 func TestRevokeClusterSecretLease(t *testing.T) {
93 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
94 ctx := context.Background()
95 revoke := Revoke(&testConfig)
96
97 require.Error(t, revoke.Command().Exec(ctx, []string{}), "Flag 'store' is required")
98 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.StoreFlag, "test-cluster-0"))
99 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.BannerFlag, "banner-not-exist"))
100 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.SecretTypeFlag, "grub"))
101 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.RevokeUsername, "testuser"))
102 require.ErrorContains(t, revoke.Command().Exec(ctx, []string{}), "could not find banner: banner-not-exist")
103
104 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.StoreFlag, "cluster-not-exist"))
105 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.BannerFlag, "test-banner-0"))
106 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.SecretTypeFlag, "grub"))
107 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.RevokeUsername, "testuser"))
108 require.ErrorContains(t, revoke.Command().Exec(ctx, []string{}), "cluster does not exist: cluster-not-exist")
109
110 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.StoreFlag, "test-cluster-0"))
111 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.BannerFlag, "test-banner-0"))
112 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.SecretTypeFlag, "invalid-type"))
113 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.RevokeUsername, "testuser"))
114 require.Error(t, revoke.Command().Exec(ctx, []string{}), "invalid secret type invalid-type")
115
116 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.StoreFlag, "test-cluster-0"))
117 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.BannerFlag, "test-banner-0"))
118 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.SecretTypeFlag, "invalid-type"))
119 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.RevokeUsername, "invalid-user"))
120 require.Error(t, revoke.Command().Exec(ctx, []string{}), "user does not own lease")
121
122 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.StoreFlag, "test-cluster-0"))
123 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.BannerFlag, "test-banner-0"))
124 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.RevokeUsername, "testuser"))
125 require.NoError(t, flagutil.SetFlag(revoke.Rags, flagutil.SecretTypeFlag, "grub"))
126 require.NoError(t, revoke.Command().Exec(ctx, []string{}))
127 }
128
View as plain text