Пример #1
0
        public async Task ScopeProvidedByGenerateParameter(string scope)
        {
            // arrange
            var generator = new CustomResourceDefinitionGenerator();

            // act
            var crd = await generator.GenerateCustomResourceDefinitionAsync <SimpleResource>(scope);

            // assert
            crd.Spec.Scope.ShouldBe(scope);
        }
Пример #2
0
        public async Task MetadataNameComesFromPluralNameAndGroup()
        {
            // arrange
            var generator = new CustomResourceDefinitionGenerator();

            // act
            var crd = await generator.GenerateCustomResourceDefinitionAsync <SimpleResource>("Namespaced");

            // assert
            crd.Name().ShouldBe("testkinds.test-group");
        }
Пример #3
0
        public async Task GroupAndNamesComesFromKubernetesEntityAttribute(Type resourceType, string group, string kind, string plural)
        {
            // arrange
            var generator = new CustomResourceDefinitionGenerator();

            // act
            var crd = await generator.GenerateCustomResourceDefinitionAsync(resourceType, "Namespaced");

            // assert
            crd.Spec.Group.ShouldBe(group);
            crd.Spec.Names.Kind.ShouldBe(kind);
            crd.Spec.Names.Plural.ShouldBe(plural);
        }
Пример #4
0
        public async Task CreateWithSingleVersionThatIsStoredAndServed(Type resourceType, string version)
        {
            // arrange
            var generator = new CustomResourceDefinitionGenerator();

            // act
            var crd = await generator.GenerateCustomResourceDefinitionAsync(resourceType, "Namespaced");

            // assert
            var crdVersion = crd.Spec.Versions.ShouldHaveSingleItem();

            crdVersion.Name.ShouldBe(version);
            crdVersion.Served.ShouldBe(true);
            crdVersion.Storage.ShouldBe(true);
        }
Пример #5
0
        public async Task ApiVersionAndKindAreCorrect()
        {
            // arrange
            var generator = new CustomResourceDefinitionGenerator();

            // act
            var crd = await generator.GenerateCustomResourceDefinitionAsync <SimpleResource>("Namespaced");

            // assert
            crd.ApiGroupVersion().ShouldBe("v1");
            crd.ApiGroupVersion().ShouldBe(V1CustomResourceDefinition.KubeApiVersion);
            crd.ApiGroup().ShouldBe("apiextensions.k8s.io");
            crd.ApiGroup().ShouldBe(V1CustomResourceDefinition.KubeGroup);
            crd.Kind.ShouldBe("CustomResourceDefinition");
            crd.Kind.ShouldBe(V1CustomResourceDefinition.KubeKind);
            crd.Validate();
        }
Пример #6
0
        public async Task DescriptionsComeFromDocComments()
        {
            // arrange
            var generator = new CustomResourceDefinitionGenerator();

            // act
            var crd = await generator.GenerateCustomResourceDefinitionAsync <TypicalResource>("Namespaced");

            // assert
            var schema = crd
                         .Spec.ShouldNotBeNull()
                         .Versions.ShouldHaveSingleItem()
                         .Schema.ShouldNotBeNull()
                         .OpenAPIV3Schema.ShouldNotBeNull();

            schema.Description.ShouldNotBeNull().ShouldContain("TypicalResource doc comment");
            schema.Properties["spec"].Description.ShouldNotBeNull().ShouldContain("Spec doc comment");
            schema.Properties["status"].Description.ShouldNotBeNull().ShouldContain("Status doc comment");
        }
Пример #7
0
        public async Task TypicalResourceHasSchema()
        {
            // arrange
            var generator = new CustomResourceDefinitionGenerator();

            // act
            var crd = await generator.GenerateCustomResourceDefinitionAsync <TypicalResource>("Namespaced");

            // assert
            var schema = crd
                         .Spec.ShouldNotBeNull()
                         .Versions.ShouldHaveSingleItem()
                         .Schema.ShouldNotBeNull()
                         .OpenAPIV3Schema.ShouldNotBeNull();

            schema.Properties.Keys.ShouldBe(new[] { "apiVersion", "kind", "metadata", "spec", "status" });

            schema.Properties["apiVersion"].Type.ShouldBe("string");
            schema.Properties["kind"].Type.ShouldBe("string");
            schema.Properties["metadata"].Type.ShouldBe("object");
            schema.Properties["spec"].Type.ShouldBe("object");
            schema.Properties["status"].Type.ShouldBe("object");
        }