Remove state file

This commit is contained in:
katexochen 2022-10-11 12:24:33 +02:00 committed by Paul Meyer
parent 0d1fd8fb2a
commit 1556e239ca
28 changed files with 381 additions and 319 deletions

View file

@ -6,7 +6,10 @@ SPDX-License-Identifier: AGPL-3.0-only
package cloudprovider
import "strings"
import (
"encoding/json"
"strings"
)
//go:generate stringer -type=Provider
@ -21,6 +24,21 @@ const (
QEMU
)
// MarshalJSON marshals the Provider to JSON string.
func (p Provider) MarshalJSON() ([]byte, error) {
return json.Marshal(p.String())
}
// UnmarshalJSON unmarshals the Provider from JSON string.
func (p *Provider) UnmarshalJSON(b []byte) error {
var s string
if err := json.Unmarshal(b, &s); err != nil {
return err
}
*p = FromString(s)
return nil
}
// FromString returns cloud provider from string.
func FromString(s string) Provider {
s = strings.ToLower(s)

View file

@ -0,0 +1,143 @@
/*
Copyright (c) Edgeless Systems GmbH
SPDX-License-Identifier: AGPL-3.0-only
*/
package cloudprovider
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestMarshalJSON(t *testing.T) {
testCases := map[string]struct {
input Provider
want []byte
}{
"unknown": {
input: Unknown,
want: []byte("\"Unknown\""),
},
"aws": {
input: AWS,
want: []byte("\"AWS\""),
},
"azure": {
input: Azure,
want: []byte("\"Azure\""),
},
"gcp": {
input: GCP,
want: []byte("\"GCP\""),
},
"qemu": {
input: QEMU,
want: []byte("\"QEMU\""),
},
}
for name, tc := range testCases {
t.Run(name, func(t *testing.T) {
assert := assert.New(t)
b, err := tc.input.MarshalJSON()
assert.NoError(err)
assert.Equal(tc.want, b)
})
}
}
func TestUnmarshalJSON(t *testing.T) {
testCases := map[string]struct {
input []byte
want Provider
wantErr bool
}{
"empty": {
input: []byte{},
wantErr: true,
},
"unknown": {
input: []byte("\"unknown\""),
want: Unknown,
},
"aws": {
input: []byte("\"aws\""),
want: AWS,
},
"azure": {
input: []byte("\"azure\""),
want: Azure,
},
"gcp": {
input: []byte("\"gcp\""),
want: GCP,
},
"qemu": {
input: []byte("\"qemu\""),
want: QEMU,
},
}
for name, tc := range testCases {
t.Run(name, func(t *testing.T) {
assert := assert.New(t)
var p Provider
err := p.UnmarshalJSON(tc.input)
if tc.wantErr {
assert.Error(err)
} else {
assert.NoError(err)
assert.Equal(tc.want, p)
}
})
}
}
func TestFromString(t *testing.T) {
testCases := map[string]struct {
input string
want Provider
}{
"empty": {
input: "",
want: Unknown,
},
"unknown": {
input: "unknown",
want: Unknown,
},
"aws": {
input: "aws",
want: AWS,
},
"azure": {
input: "azure",
want: Azure,
},
"gcp": {
input: "gcp",
want: GCP,
},
"qemu": {
input: "qemu",
want: QEMU,
},
}
for name, tc := range testCases {
t.Run(name, func(t *testing.T) {
assert := assert.New(t)
p := FromString(tc.input)
assert.Equal(tc.want, p)
})
}
}