@ -26,8 +26,10 @@ import (
"testing"
"k8s.io/kubernetes/pkg/api/meta"
"k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/api/unversioned"
api "k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/api/validation"
"k8s.io/kubernetes/pkg/client/unversioned/fake"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/runtime"
@ -67,12 +69,13 @@ func TestUpdateResource(t *testing.T) {
func TestPerform ( t * testing . T ) {
tests := [ ] struct {
name string
namespace string
reader io . Reader
count int
err bool
errMessage string
name string
namespace string
reader io . Reader
count int
swaggerFile string
err bool
errMessage string
} {
{
name : "Valid input" ,
@ -85,6 +88,13 @@ func TestPerform(t *testing.T) {
reader : strings . NewReader ( "" ) ,
err : true ,
errMessage : "no objects visited" ,
} , {
name : "Invalid schema" ,
namespace : "test" ,
reader : strings . NewReader ( testInvalidServiceManifest ) ,
swaggerFile : "../../vendor/k8s.io/kubernetes/api/swagger-spec/" + testapi . Default . GroupVersion ( ) . Version + ".json" ,
err : true ,
errMessage : ` error validating "": error validating data: expected type int, for field spec.ports[0].port, got string ` ,
} ,
}
@ -105,6 +115,16 @@ func TestPerform(t *testing.T) {
c . ClientForMapping = func ( mapping * meta . RESTMapping ) ( resource . RESTClient , error ) {
return & fake . RESTClient { } , nil
}
c . Validator = func ( validate bool , cacheDir string ) ( validation . Schema , error ) {
if tt . swaggerFile == "" {
return validation . NullSchema { } , nil
}
data , err := ioutil . ReadFile ( tt . swaggerFile )
if err != nil {
t . Fatalf ( "could not load swagger spec: %s" , err )
}
return validation . NewSwaggerSchemaFromBytes ( data , nil )
}
err := perform ( c , tt . namespace , tt . reader , fn )
if ( err != nil ) != tt . err {
@ -159,6 +179,14 @@ spec:
targetPort : 9376
`
const testInvalidServiceManifest = `
kind : Service
apiVersion : v1
spec :
ports :
- port : "80"
`
const testEndpointManifest = `
kind : Endpoints
apiVersion : v1