Merge pull request #3179 from my-git9/ut-format

[UT] Add ut for utils/format.go
This commit is contained in:
karmada-bot 2023-02-20 17:45:23 +08:00 committed by GitHub
commit ea497819f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 330 additions and 0 deletions

View File

@ -0,0 +1,330 @@
package utils
import (
"net"
"os"
"reflect"
"testing"
)
func stringInslice(target string, strArray []string) bool {
for _, element := range strArray {
if target == element {
return true
}
}
return false
}
func TestIsExist(t *testing.T) {
tests := []struct {
name string
path string
want bool
}{
{
name: "path exist",
path: "./",
want: true,
},
{
name: "path is not exist",
path: "for-a-not-exist-path" + randString(),
want: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := IsExist(tt.path); got != tt.want {
t.Errorf("IsExist() = %v, want %v", got, tt.want)
}
})
}
}
func TestStringToNetIP(t *testing.T) {
tests := []struct {
name string
addr string
want net.IP
}{
{
name: "get ipv4",
addr: "10.1.1.1",
want: net.ParseIP("10.1.1.1"),
},
{
name: "get ipv6",
addr: "fe80::f4e6:6514:7461:9698",
want: net.ParseIP("fe80::f4e6:6514:7461:9698"),
},
{
name: "get invalid ip",
addr: "120.1",
want: net.ParseIP("127.0.0.1"),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := StringToNetIP(tt.addr); !reflect.DeepEqual(got, tt.want) {
t.Errorf("StringToNetIP() = %v, want %v", got, tt.want)
}
})
}
}
func TestFlagsIP(t *testing.T) {
tests := []struct {
name string
ip string
want []net.IP
}{
{
name: "all ips are vaild",
ip: "10.0.0.1,10.0.0.2",
want: []net.IP{
net.ParseIP("10.0.0.1"),
net.ParseIP("10.0.0.2"),
},
},
{
name: "have invaild ip",
ip: "10.0.0,10.0.0.2",
want: []net.IP{
net.ParseIP("127.0.0.1"),
net.ParseIP("10.0.0.2"),
},
},
{
name: "have ipv6 and ipv4",
ip: "fe80::f4e6:6514:7461:9698, 10.0.0.1",
want: []net.IP{
net.ParseIP("fe80::f4e6:6514:7461:9698"),
net.ParseIP("127.0.0.1"),
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := FlagsIP(tt.ip); !reflect.DeepEqual(got, tt.want) {
t.Errorf("FlagsIP() = %v, want %v", got, tt.want)
}
})
}
}
func TestFlagsDNS(t *testing.T) {
tests := []struct {
name string
dns string
want []string
}{
{
name: "get dns from flags",
dns: "github.com,karmada.io,kubernetes.io",
want: []string{
"github.com", "karmada.io", "kubernetes.io",
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := FlagsDNS(tt.dns); !reflect.DeepEqual(got, tt.want) {
t.Errorf("FlagsDNS() = %v, want %v", got, tt.want)
}
})
}
}
func TestInternetIP(t *testing.T) {
got, err := InternetIP()
if got == nil {
t.Errorf("InternetIP() want return not nil, but return nil")
}
if err != nil {
t.Errorf("InternetIP() want return not error, but return error")
}
}
func TestFileToBytes(t *testing.T) {
type args struct {
path string
name string
}
tests := []struct {
name string
createtmp bool
tempcontent string
args args
want []byte
wantErr bool
}{
{
name: "the file is not exist",
createtmp: false,
tempcontent: "",
args: args{
path: "a-not-exits-path",
name: "a-not-exit-file.txt",
},
want: nil,
wantErr: true,
},
{
name: "the file is not exist",
createtmp: true,
tempcontent: "hello, world",
args: args{
path: "a-not-exits-path-" + randString(),
name: "a-not-exit-file-" + randString() + ".txt",
},
want: []byte("hello, world"),
wantErr: false,
},
}
for _, tt := range tests {
if tt.createtmp {
err := os.Mkdir(tt.args.path, 0755)
if err != nil {
t.Fatal(err)
}
f, err := os.Create(tt.args.path + "/" + tt.args.name)
if err != nil {
t.Fatal(err)
}
_, err = f.Write([]byte(tt.tempcontent))
if err != nil {
t.Fatal(err)
}
if err = f.Close(); err != nil {
t.Fatal(err)
}
}
t.Run(tt.name, func(t *testing.T) {
got, err := FileToBytes(tt.args.path, tt.args.name)
if (err != nil) != tt.wantErr {
t.Errorf("FileToBytes() error = %v, wantErr %v", err, tt.wantErr)
return
}
if !reflect.DeepEqual(got, tt.want) {
t.Errorf("FileToBytes() = %v, want %v", got, tt.want)
}
})
if tt.createtmp {
os.RemoveAll(tt.args.path)
}
}
}
func TestBytesToFile(t *testing.T) {
type args struct {
path string
name string
data []byte
}
tests := []struct {
name string
createtmp bool
args args
wantErr bool
}{
{
name: "a not exist file",
createtmp: false,
args: args{
path: "temp-kubeconfig-" + randString(),
name: randString() + ".kubeconfig",
data: []byte("hello world"),
},
wantErr: true,
},
{
name: "a not exist file",
createtmp: true,
args: args{
path: "temp-kubeconfig-" + randString(),
name: randString() + ".kubeconfig",
data: []byte("hello world"),
},
wantErr: false,
},
}
for _, tt := range tests {
if tt.createtmp {
err := os.Mkdir(tt.args.path, 0755)
if err != nil {
t.Fatal(err)
}
f, err := os.Create(tt.args.path + "/" + tt.args.name)
if err != nil {
t.Fatal(err)
}
if err = f.Close(); err != nil {
t.Fatal(err)
}
}
t.Run(tt.name, func(t *testing.T) {
if err := BytesToFile(tt.args.path, tt.args.name, tt.args.data); (err != nil) != tt.wantErr {
t.Errorf("BytesToFile() error = %v, wantErr %v", err, tt.wantErr)
}
})
if tt.createtmp {
os.RemoveAll(tt.args.path)
}
}
}
func TestMapToString(t *testing.T) {
tests := []struct {
name string
labels map[string]string
want []string
}{
{
name: "map is not null",
labels: map[string]string{
"foo1": "bar1",
"foo2": "bar2",
},
want: []string{"foo1=bar1,foo2=bar2", "foo2=bar2,foo1=bar1"},
},
{
name: "map is null",
labels: map[string]string{},
want: []string{""},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := MapToString(tt.labels); !stringInslice(got, tt.want) {
t.Errorf("MapToString() = %v, want string in list%v", got, tt.want)
}
})
}
}
func TestStringToMap(t *testing.T) {
tests := []struct {
name string
labels string
want map[string]string
}{
{
name: "valid map string",
labels: "foo=bar",
want: map[string]string{"foo": "bar"},
},
{
name: "invalid map string",
labels: "foo=bar,bar=foo",
want: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if got := StringToMap(tt.labels); !reflect.DeepEqual(got, tt.want) {
t.Errorf("StringToMap() = %v, want %v", got, tt.want)
}
})
}
}