From f488ed4b82a2438bbf95c7eb5280de6eface902f Mon Sep 17 00:00:00 2001 From: "Dr. Stefan Schimanski" Date: Thu, 7 Feb 2019 11:55:40 +0100 Subject: [PATCH] openapi: add spec roundtrip test --- pkg/generated/openapi/BUILD | 12 ++++++- pkg/generated/openapi/openapi_test.go | 51 +++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 pkg/generated/openapi/openapi_test.go diff --git a/pkg/generated/openapi/BUILD b/pkg/generated/openapi/BUILD index c79f243286..2f7428dc57 100644 --- a/pkg/generated/openapi/BUILD +++ b/pkg/generated/openapi/BUILD @@ -1,7 +1,7 @@ package(default_visibility = ["//visibility:public"]) load("//build:code_generation.bzl", "gen_openapi", "openapi_deps") -load("@io_bazel_rules_go//go:def.bzl", "go_library") +load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test") gen_openapi( outs = ["zz_generated.openapi.go"], @@ -30,3 +30,13 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) + +go_test( + name = "go_default_test", + srcs = ["openapi_test.go"], + embed = [":go_default_library"], + deps = [ + "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", + "//vendor/github.com/go-openapi/spec:go_default_library", + ], +) diff --git a/pkg/generated/openapi/openapi_test.go b/pkg/generated/openapi/openapi_test.go new file mode 100644 index 0000000000..bf3513abbe --- /dev/null +++ b/pkg/generated/openapi/openapi_test.go @@ -0,0 +1,51 @@ +/* +Copyright 2019 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package openapi + +import ( + "encoding/json" + "reflect" + "testing" + + "github.com/go-openapi/spec" + + "k8s.io/apimachinery/pkg/util/diff" +) + +func TestOpenAPIRoundtrip(t *testing.T) { + dummyRef := func(name string) spec.Ref { return spec.MustCreateRef("#/definitions/dummy") } + for name, value := range GetOpenAPIDefinitions(dummyRef) { + t.Run(name, func(t *testing.T) { + data, err := json.Marshal(value.Schema) + if err != nil { + t.Error(err) + return + } + + roundTripped := spec.Schema{} + if err := json.Unmarshal(data, &roundTripped); err != nil { + t.Error(err) + return + } + + if !reflect.DeepEqual(value.Schema, roundTripped) { + t.Errorf("unexpected diff (a=expected,b=roundtripped):\n%s", diff.ObjectReflectDiff(value.Schema, roundTripped)) + return + } + }) + } +}