github.com/docker/compose-on-kubernetes@v0.5.0/internal/registry/strategyprepare_test.go (about) 1 package registry 2 3 import ( 4 "testing" 5 6 "github.com/docker/compose-on-kubernetes/api/compose/latest" 7 iv "github.com/docker/compose-on-kubernetes/internal/internalversion" 8 "github.com/stretchr/testify/assert" 9 "k8s.io/apiserver/pkg/authentication/user" 10 genericapirequest "k8s.io/apiserver/pkg/endpoints/request" 11 ) 12 13 func TestPrepareStackOwnership(t *testing.T) { 14 testuser := &user.DefaultInfo{ 15 Name: "test-user", 16 Groups: []string{"group1", "group2"}, 17 Extra: map[string][]string{"extra1": {"v1", "v2"}}, 18 } 19 ctx := genericapirequest.WithUser(genericapirequest.NewDefaultContext(), testuser) 20 stack := iv.Stack{} 21 err := prepareStackOwnership()(ctx, nil, &stack) 22 assert.NoError(t, err) 23 assert.Equal(t, testuser.Name, stack.Spec.Owner.UserName) 24 assert.True(t, assert.ObjectsAreEqual(testuser.Groups, stack.Spec.Owner.Groups)) 25 assert.True(t, assert.ObjectsAreEqual(testuser.Extra, stack.Spec.Owner.Extra)) 26 } 27 28 func TestPrepareStackOwnershipNoUser(t *testing.T) { 29 stack := iv.Stack{} 30 err := prepareStackOwnership()(genericapirequest.NewDefaultContext(), nil, &stack) 31 assert.Error(t, err) 32 } 33 34 func TestSetFieldsV1beta1SameCompose(t *testing.T) { 35 oldStack := iv.Stack{ 36 Spec: iv.StackSpec{ 37 Stack: &latest.StackSpec{}, 38 ComposeFile: "test", 39 }, 40 } 41 newStack := iv.Stack{ 42 Spec: iv.StackSpec{ 43 ComposeFile: "test", 44 }, 45 } 46 err := prepareFieldsForUpdate(APIV1beta1)(nil, &oldStack, &newStack) 47 assert.NoError(t, err) 48 assert.Equal(t, oldStack.Spec.Stack, newStack.Spec.Stack) 49 } 50 51 func TestSetFieldsV1beta1DifferentCompose(t *testing.T) { 52 oldStack := iv.Stack{ 53 Spec: iv.StackSpec{ 54 Stack: &latest.StackSpec{}, 55 ComposeFile: "test", 56 }, 57 } 58 newStack := iv.Stack{ 59 Spec: iv.StackSpec{ 60 Stack: &latest.StackSpec{}, 61 ComposeFile: "test2", 62 }, 63 } 64 err := prepareFieldsForUpdate(APIV1beta1)(nil, &oldStack, &newStack) 65 assert.NoError(t, err) 66 assert.Nil(t, newStack.Spec.Stack) 67 } 68 69 func TestSetFieldsV1beta2SameStack(t *testing.T) { 70 oldStack := iv.Stack{ 71 Spec: iv.StackSpec{ 72 Stack: &latest.StackSpec{}, 73 ComposeFile: "test", 74 }, 75 } 76 newStack := iv.Stack{ 77 Spec: iv.StackSpec{ 78 Stack: &latest.StackSpec{}, 79 }, 80 } 81 err := prepareFieldsForUpdate(APIV1beta2)(nil, &oldStack, &newStack) 82 assert.NoError(t, err) 83 assert.Equal(t, oldStack.Spec.ComposeFile, newStack.Spec.ComposeFile) 84 } 85 86 func TestSetFieldsV1beta2DifferentStack(t *testing.T) { 87 oldStack := iv.Stack{ 88 Spec: iv.StackSpec{ 89 Stack: &latest.StackSpec{}, 90 ComposeFile: "test", 91 }, 92 } 93 newStack := iv.Stack{ 94 Spec: iv.StackSpec{ 95 Stack: &latest.StackSpec{ 96 Services: []latest.ServiceConfig{ 97 {}, 98 }, 99 }, 100 }, 101 } 102 err := prepareFieldsForUpdate(APIV1beta2)(nil, &oldStack, &newStack) 103 assert.NoError(t, err) 104 assert.Equal(t, composeOutOfDate+oldStack.Spec.ComposeFile, newStack.Spec.ComposeFile) 105 } 106 107 func TestPrepareStackFromValidComposefile(t *testing.T) { 108 stack := iv.Stack{ 109 Spec: iv.StackSpec{ 110 ComposeFile: `version: '3.2' 111 services: 112 front: 113 image: nginx:1.12.1-alpine 114 ports: 115 - 80:80`, 116 }, 117 } 118 err := prepareStackFromComposefile(false)(nil, nil, &stack) 119 assert.NoError(t, err) 120 assert.NotNil(t, stack.Spec.Stack) 121 } 122 123 func TestPrepareStackFromInvalidComposefile(t *testing.T) { 124 stack := iv.Stack{ 125 Spec: iv.StackSpec{ 126 ComposeFile: `test`, 127 }, 128 } 129 err := prepareStackFromComposefile(false)(nil, nil, &stack) 130 assert.Error(t, err) 131 }