harbor/src/server/v2.0/handler/preheat_test.go
chlins 37a00912b7 feat: add p2p preheat swagger yaml and implement preheat api policy handler
Signed-off-by: chlins <chlins.zhang@gmail.com>
2020-07-06 21:05:22 +08:00

153 lines
3.8 KiB
Go

package handler
import (
"reflect"
"testing"
"time"
"github.com/go-openapi/strfmt"
"github.com/goharbor/harbor/src/pkg/p2p/preheat/models/policy"
"github.com/goharbor/harbor/src/pkg/p2p/preheat/provider"
"github.com/goharbor/harbor/src/server/v2.0/models"
"github.com/stretchr/testify/assert"
)
func Test_convertProvidersToFrontend(t *testing.T) {
backend, _ := provider.ListProviders()
tests := []struct {
name string
backend []*provider.Metadata
wantFrontend []*models.Metadata
}{
{"",
backend,
[]*models.Metadata{
{ID: "dragonfly", Icon: "https://raw.githubusercontent.com/alibaba/Dragonfly/master/docs/images/logo.png", Maintainers: []string{"Jin Zhang/taiyun.zj@alibaba-inc.com"}, Name: "Dragonfly", Source: "https://github.com/alibaba/Dragonfly", Version: "0.10.1"},
{Icon: "https://github.com/uber/kraken/blob/master/assets/kraken-logo-color.svg", ID: "kraken", Maintainers: []string{"mmpei/peimingming@corp.netease.com"}, Name: "Kraken", Source: "https://github.com/uber/kraken", Version: "0.1.3"},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if gotFrontend := convertProvidersToFrontend(tt.backend); !reflect.DeepEqual(gotFrontend, tt.wantFrontend) {
t.Errorf("convertProvidersToFrontend() = %#v, want %#v", gotFrontend, tt.wantFrontend)
}
})
}
}
func Test_convertPolicyToPayload(t *testing.T) {
tests := []struct {
name string
input *policy.Schema
expect *models.PreheatPolicy
shouldErr bool
}{
{
name: "should error",
input: nil,
expect: nil,
shouldErr: true,
},
{
name: "should success",
input: &policy.Schema{
ID: 0,
Name: "abc",
Description: "test case",
ProjectID: 0,
ProviderID: 0,
Filters: nil,
FiltersStr: "",
Trigger: nil,
TriggerStr: "",
Enabled: false,
CreatedAt: time.Time{},
UpdatedTime: time.Time{},
},
expect: &models.PreheatPolicy{
CreationTime: strfmt.DateTime{},
Description: "test case",
Enabled: false,
Filters: "",
ID: 0,
Name: "abc",
ProjectID: 0,
ProviderID: 0,
Trigger: "",
UpdateTime: strfmt.DateTime{},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
actual, err := convertPolicyToPayload(tt.input)
if !tt.shouldErr {
if !assert.Equal(t, tt.expect, actual) {
t.Errorf("convertPolicyToPayload() = %#v, want %#v", actual, tt.expect)
}
} else {
assert.NotNil(t, err)
}
})
}
}
func Test_convertParamPolicyToModelPolicy(t *testing.T) {
tests := []struct {
name string
input *models.PreheatPolicy
expect *policy.Schema
shouldErr bool
}{
{
name: "should err",
input: nil,
expect: nil,
shouldErr: true,
},
{
name: "should success",
input: &models.PreheatPolicy{
CreationTime: strfmt.DateTime{},
Description: "test case",
Enabled: false,
Filters: "",
ID: 0,
Name: "abc",
ProjectID: 0,
ProviderID: 0,
Trigger: "",
UpdateTime: strfmt.DateTime{},
},
expect: &policy.Schema{
ID: 0,
Name: "abc",
Description: "test case",
ProjectID: 0,
ProviderID: 0,
Filters: nil,
FiltersStr: "",
Trigger: nil,
TriggerStr: "",
Enabled: false,
CreatedAt: time.Time{},
UpdatedTime: time.Time{},
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
actual, err := convertParamPolicyToModelPolicy(tt.input)
if !tt.shouldErr {
if !assert.Equal(t, tt.expect, actual) {
t.Errorf("convertParamPolicyToModelPolicy() = %#v, want %#v", actual, tt.expect)
}
} else {
assert.NotNil(t, err)
}
})
}
}