Files
oci-portal/internal/service/subscription_test.go
T

88 lines
2.7 KiB
Go

package service
import (
"context"
"testing"
"oci-portal/internal/oci"
)
func TestSubscriptionsPassThrough(t *testing.T) {
client := &fakeClient{
tenancy: oci.TenancyInfo{Name: "t", HomeRegionKey: "FRA"},
subscriptions: []oci.SubscriptionInfo{
{ID: "ocid1.organizationssubscription.oc1..a", ServiceName: "CLOUDCM"},
{ID: "ocid1.organizationssubscription.oc1..b", ServiceName: "SAAS"},
},
}
svc := newTestService(t, client)
cfg := importAliveConfig(t, svc)
subs, err := svc.Subscriptions(context.Background(), cfg.ID)
if err != nil {
t.Fatalf("Subscriptions: %v", err)
}
if len(subs) != 2 {
t.Fatalf("len(subs) = %d, want 2", len(subs))
}
if got, want := subs[0].ServiceName, "CLOUDCM"; got != want {
t.Errorf("subs[0].ServiceName = %q, want %q", got, want)
}
}
func TestSubscriptionDetailPassesID(t *testing.T) {
client := &fakeClient{
tenancy: oci.TenancyInfo{Name: "t", HomeRegionKey: "FRA"},
subDetail: oci.SubscriptionDetail{
ID: "ocid1.organizationssubscription.oc1..a",
ServiceName: "CLOUDCM",
PaymentModel: "FREE_TRIAL",
Promotions: []oci.PromotionInfo{{Status: "ACTIVE", Amount: 300}},
},
}
svc := newTestService(t, client)
cfg := importAliveConfig(t, svc)
detail, err := svc.SubscriptionDetail(context.Background(), cfg.ID, "ocid1.organizationssubscription.oc1..a")
if err != nil {
t.Fatalf("SubscriptionDetail: %v", err)
}
if got, want := client.subDetailID, "ocid1.organizationssubscription.oc1..a"; got != want {
t.Errorf("passed subscription id = %q, want %q", got, want)
}
if len(detail.Promotions) != 1 || detail.Promotions[0].Amount != 300 {
t.Errorf("Promotions = %+v, want one ACTIVE amount 300", detail.Promotions)
}
}
func TestSubscriptionDetailRejectsEmptyID(t *testing.T) {
svc := newTestService(t, &fakeClient{tenancy: oci.TenancyInfo{Name: "t"}})
cfg := importAliveConfig(t, svc)
if _, err := svc.SubscriptionDetail(context.Background(), cfg.ID, ""); err == nil {
t.Error("SubscriptionDetail(empty id): got nil error, want failure")
}
}
func TestLimitServicesPassThrough(t *testing.T) {
client := &fakeClient{
tenancy: oci.TenancyInfo{Name: "t", HomeRegionKey: "FRA"},
limitServices: []oci.LimitService{
{Name: "compute", Description: "Compute"},
{Name: "vcn", Description: "Virtual Cloud Network"},
},
}
svc := newTestService(t, client)
cfg := importAliveConfig(t, svc)
services, err := svc.LimitServices(context.Background(), cfg.ID, "")
if err != nil {
t.Fatalf("LimitServices: %v", err)
}
if len(services) != 2 {
t.Fatalf("len(services) = %d, want 2", len(services))
}
if got, want := services[0].Name, "compute"; got != want {
t.Errorf("services[0].Name = %q, want %q", got, want)
}
}