package modify import ( "context" "net/http/httptest" "os" "testing" "github.com/stretchr/testify/require" "edge-infra.dev/pkg/edge/api/fake" "edge-infra.dev/pkg/edge/edgecli" "edge-infra.dev/pkg/edge/edgecli/flagutil" ) var ( testBanner = edgecli.BannerContext{ BannerEdgeID: "test-banner-edge-id-0", BannerName: "test-banner-0", TenantOrg: "test-org-0", Username: "test-user-0", Token: "test-token-0", } testCurrrentBanner = "test-current-banner" testConfig = edgecli.Config{ CurrentBannerContext: testCurrrentBanner, BannerContexts: map[string]*edgecli.BannerContext{ testCurrrentBanner: &testBanner, }, } edgeAPIMockSvr *httptest.Server edgeAPIMockURL string ) func TestMain(m *testing.M) { edgeAPIMockSvr = fake.GetMockAPIServer() edgeAPIMockURL = edgeAPIMockSvr.URL + "/api/v2" run := m.Run() edgeAPIMockSvr.Close() os.Exit(run) } func TestNetworkServiceModify(t *testing.T) { testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL cmd := NewCmd(&testConfig) require.Error(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required") require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1")) require.NoError(t, cmd.Command().Exec(context.Background(), []string{})) } func TestNetworkServiceModifyBadStore(t *testing.T) { testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL cmd := NewCmd(&testConfig) require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required") require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "cluster-not-exist")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1")) require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "cluster does not exist: cluster-not-exist") } func TestNetworkServiceModifyBadBanner(t *testing.T) { testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL cmd := NewCmd(&testConfig) require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required") require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "banner-not-exist")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1")) require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "could not find banner: banner-not-exist") } func TestNetworkServiceModifyBadNetworkServiceID(t *testing.T) { testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL cmd := NewCmd(&testConfig) require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required") require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "networkservice-id-not-exist")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "1.1.1.1")) require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "the networkServiceID provided does not exist in this cluster") } func TestNetworkServiceModifyBadIPv4(t *testing.T) { testConfig.BannerContexts[testCurrrentBanner].Endpoint = edgeAPIMockURL cmd := NewCmd(&testConfig) require.Errorf(t, cmd.Command().Exec(context.Background(), []string{}), "Flag 'store' is required") require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.StoreFlag, "test-cluster-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.BannerFlag, "test-banner-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.NetworkServiceIDFlag, "test-networkservice-id-0")) require.NoError(t, flagutil.SetFlag(cmd.Rags, flagutil.IPv4Flag, "ipv4-not-exist")) require.ErrorContains(t, cmd.Command().Exec(context.Background(), []string{}), "invalid IPv4 address or domain ipv4-not-exist") }