94 lines
3.2 KiB
Go
94 lines
3.2 KiB
Go
package nsnetworkpolicy
|
|
|
|
import (
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/tools/record"
|
|
"kubesphere.io/kubesphere/pkg/apis/network/v1alpha1"
|
|
nsnplister "kubesphere.io/kubesphere/pkg/client/listers/network/v1alpha1"
|
|
"kubesphere.io/kubesphere/pkg/controller/network/controllerapi"
|
|
"kubesphere.io/kubesphere/pkg/controller/network/provider"
|
|
controllertesting "kubesphere.io/kubesphere/pkg/controller/network/testing"
|
|
)
|
|
|
|
var (
|
|
fakeControllerBuilder *controllertesting.FakeControllerBuilder
|
|
c controllerapi.Controller
|
|
stopCh chan struct{}
|
|
calicoProvider *provider.FakeCalicoNetworkProvider
|
|
nsnpLister nsnplister.NamespaceNetworkPolicyLister
|
|
)
|
|
|
|
var _ = Describe("Nsnetworkpolicy", func() {
|
|
BeforeEach(func() {
|
|
fakeControllerBuilder = controllertesting.NewFakeControllerBuilder()
|
|
stopCh = make(chan struct{})
|
|
informer, _ := fakeControllerBuilder.NewControllerInformer()
|
|
calicoProvider = provider.NewFakeCalicoNetworkProvider()
|
|
c = NewController(fakeControllerBuilder.KubeClient, fakeControllerBuilder.KsClient, informer.Network().V1alpha1().NamespaceNetworkPolicies(), calicoProvider)
|
|
go informer.Network().V1alpha1().NamespaceNetworkPolicies().Informer().Run(stopCh)
|
|
originalController := c.(*controller)
|
|
originalController.recorder = &record.FakeRecorder{}
|
|
go c.Run(1, stopCh)
|
|
nsnpLister = informer.Network().V1alpha1().NamespaceNetworkPolicies().Lister()
|
|
})
|
|
|
|
It("Should create a new calico object", func() {
|
|
objSrt := `{
|
|
"apiVersion": "network.kubesphere.io/v1alpha1",
|
|
"kind": "NetworkPolicy",
|
|
"metadata": {
|
|
"name": "allow-tcp-6379",
|
|
"namespace": "production"
|
|
},
|
|
"spec": {
|
|
"selector": "color == 'red'",
|
|
"ingress": [
|
|
{
|
|
"action": "Allow",
|
|
"protocol": "TCP",
|
|
"source": {
|
|
"selector": "color == 'blue'"
|
|
},
|
|
"destination": {
|
|
"ports": [
|
|
6379
|
|
]
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}`
|
|
obj := &v1alpha1.NamespaceNetworkPolicy{}
|
|
Expect(controllertesting.StringToObject(objSrt, obj)).ShouldNot(HaveOccurred())
|
|
_, err := fakeControllerBuilder.KsClient.NetworkV1alpha1().NamespaceNetworkPolicies(obj.Namespace).Create(obj)
|
|
Expect(err).ShouldNot(HaveOccurred())
|
|
Eventually(func() bool {
|
|
exist, _ := calicoProvider.CheckExist(obj)
|
|
return exist
|
|
}).Should(BeTrue())
|
|
obj, _ = fakeControllerBuilder.KsClient.NetworkV1alpha1().NamespaceNetworkPolicies(obj.Namespace).Get(obj.Name, metav1.GetOptions{})
|
|
Expect(obj.Finalizers).To(HaveLen(1))
|
|
// TestUpdate
|
|
newStr := "color == 'green'"
|
|
obj.Spec.Selector = newStr
|
|
_, err = fakeControllerBuilder.KsClient.NetworkV1alpha1().NamespaceNetworkPolicies(obj.Namespace).Update(obj)
|
|
Expect(err).ShouldNot(HaveOccurred())
|
|
Eventually(func() string {
|
|
o, err := calicoProvider.Get(obj)
|
|
if err != nil {
|
|
return err.Error()
|
|
}
|
|
n := o.(*v1alpha1.NamespaceNetworkPolicy)
|
|
return n.Spec.Selector
|
|
}).Should(Equal(newStr))
|
|
// TestDelete
|
|
Expect(fakeControllerBuilder.KsClient.NetworkV1alpha1().NamespaceNetworkPolicies(obj.Namespace).Delete(obj.Name, &metav1.DeleteOptions{})).ShouldNot(HaveOccurred())
|
|
})
|
|
|
|
AfterEach(func() {
|
|
close(stopCh)
|
|
})
|
|
})
|