...
1 package syncedobject
2
3 import (
4 "encoding/base64"
5 "testing"
6
7 "github.com/google/uuid"
8 "github.com/stretchr/testify/require"
9
10 soapi "edge-infra.dev/pkg/edge/apis/syncedobject/apis/v1alpha1"
11 )
12
13 func TestValidateSyncedObject(t *testing.T) {
14 var goodDir = "foo"
15 var goodObject = "YXBpVmVyc2lvbjogY2x1c3RlcnJlZ2lzdHJ5Lms4cy5pby92MWFscGhhMQpraW5kOiBOYW1lc3BhY2UKbWV0YWRhdGE6CiAgbmFtZTogZjIwMTJkMDcxZTI4ZjM1MjRiYTM1NzkwMDlkZjUyNWYKICBnZW5lcmF0ZW5hbWU6ICIiCiAgbmFtZXNwYWNlOiAiIgogIHNlbGZsaW5rOiAiIgogIHVpZDogIiIKICByZXNvdXJjZXZlcnNpb246ICIiCiAgZ2VuZXJhdGlvbjogMAogIGNyZWF0aW9udGltZXN0YW1wOiAiMDAwMS0wMS0wMVQwMDowMDowMFoiCiAgZGVsZXRpb250aW1lc3RhbXA6IG51bGwKICBkZWxldGlvbmdyYWNlcGVyaW9kc2Vjb25kczogbnVsbAogIGxhYmVsczoge30KICBhbm5vdGF0aW9uczoge30KICBvd25lcnJlZmVyZW5jZXM6IFtdCiAgZmluYWxpemVyczogW10KICBtYW5hZ2VkZmllbGRzOiBbXQpzcGVjOgogIGZvbzogYWFmN2YxZDQ3ODQyMTEyMjA2MjZhZTBlM2NiZjVhYzEKICBiYXI6IDMwYTQ2ZTkyZGMxMTliODA2NDJmNmI4NTU1NjQ1NzAxCiAgYmF6OiA4N2RlMTFiZWY5OTcyYjk4M2IyMWYxYWJkNDFmMzVhZTFhMmQ5MWYxMzAyOTNhYjcxOTc1NmU1ZTZhNzEyZDM0Cg=="
16
17 var good = soapi.SyncedObject{
18 Spec: soapi.SyncedObjectSpec{
19 Banner: "ret-edge-test0",
20 Cluster: uuid.New().String(),
21 Directory: &goodDir,
22 Object: goodObject,
23 },
24 }
25 require.NoError(t, ValidateSyncedObject(&good))
26
27
28 var so soapi.SyncedObject
29 require.Error(t, ValidateSyncedObject(&so))
30
31
32 so = good
33 so.Spec.Banner = ""
34 require.Error(t, ValidateSyncedObject(&so))
35 so.Spec.Banner = "hello world"
36 require.Error(t, ValidateSyncedObject(&so))
37 so.Spec.Banner = "four"
38 require.Error(t, ValidateSyncedObject(&so))
39 so.Spec.Banner = "ret-edge-too-long-of-a-banner-name-is-not-allowed-1234567890"
40 require.Error(t, ValidateSyncedObject(&so))
41
42
43 so = good
44 so.Spec.Cluster = ""
45 require.NoError(t, ValidateSyncedObject(&so))
46 so.Spec.Cluster = "foreman0"
47 require.NoError(t, ValidateSyncedObject(&so))
48 so.Spec.Cluster = "0 not valid cluster"
49 require.Error(t, ValidateSyncedObject(&so))
50 so.Spec.Cluster = uuid.Nil.String()
51 require.Error(t, ValidateSyncedObject(&so))
52
53
54 so = good
55 so.Spec.Directory = nil
56 require.NoError(t, ValidateSyncedObject(&so))
57
58
59 so = good
60 so.Spec.Object = ""
61 require.Error(t, ValidateSyncedObject(&so))
62 so.Spec.Object = "apiVersion: v1\nkind: Foo\nmetadata:\n name: foo\n"
63 require.Error(t, ValidateSyncedObject(&so))
64 so.Spec.Object = base64.StdEncoding.EncodeToString([]byte("kind: Foo"))
65 require.Error(t, ValidateSyncedObject(&so))
66 }
67
View as plain text