1 package modify
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 TestNetworkServiceModify(t *testing.T) {
44 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
45 cmd := NewCmd(&testConfig)
46
47 require.Error(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required")
48 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0"))
49 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0"))
50 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0"))
51 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1"))
52 require.NoError(t, cmd.Command().Exec(context.Background(), []string{}))
53 }
54
55 func TestNetworkServiceModifyBadStore(t *testing.T) {
56 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
57 cmd := NewCmd(&testConfig)
58
59 require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required")
60 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "cluster-not-exist"))
61 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0"))
62 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0"))
63 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1"))
64 require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "cluster does not exist: cluster-not-exist")
65 }
66
67 func TestNetworkServiceModifyBadBanner(t *testing.T) {
68 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
69 cmd := NewCmd(&testConfig)
70
71 require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required")
72 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0"))
73 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "banner-not-exist"))
74 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0"))
75 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1"))
76 require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "could not find banner: banner-not-exist")
77 }
78
79 func TestNetworkServiceModifyBadNetworkServiceID(t *testing.T) {
80 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
81 cmd := NewCmd(&testConfig)
82
83 require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required")
84 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0"))
85 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0"))
86 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "networkservice-id-not-exist"))
87 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1"))
88 require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "the networkServiceID provided does not exist in this cluster")
89 }
90
91 func TestNetworkServiceModifyBadIPv4(t *testing.T) {
92 testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL
93 cmd := NewCmd(&testConfig)
94
95 require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required")
96 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0"))
97 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0"))
98 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0"))
99 require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "ipv4-not-exist"))
100 require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "invalid IPv4 address or domain ipv4-not-exist")
101 }
102
View as plain text