Beispiel #1
0
        public async Task A_Created_Namespace_Will_Have_the_KIAM_Annotation()
        {
            // Arrange
            var namespaceName = "namespace-from-test";
            var awsRoleName   = "awsRoleName";
            var config        = KubernetesClientConfiguration.BuildConfigFromConfigFile();
            var client        = new k8s.Kubernetes(config);

            var sut = new NamespaceRespoitory(client);

            try
            {
                // act
                await sut.CreateNamespace(namespaceName, awsRoleName);


                // Assert
                var namespaces = await client.ListNamespaceAsync();

                var @namespace = namespaces.Items.Single(n => n.Metadata.Name == namespaceName);


                var annotationValue = @namespace.Metadata.Annotations["iam.amazonaws.com/permitted"];

                Assert.Equal(awsRoleName, annotationValue);
            }
            finally
            {
                client.DeleteNamespace(
                    body: new V1DeleteOptions(),
                    name: namespaceName
                    );
            }
        }
Beispiel #2
0
        public async Task Two_Namespace_Will_Create_A_Error()
        {
            // Arrange
            var namespaceName = "namespace-from-test";
            var awsRoleName   = "awsRoleName";
            var config        = KubernetesClientConfiguration.BuildConfigFromConfigFile();
            var client        = new k8s.Kubernetes(config);

            var sut = new NamespaceRespoitory(client);

            try
            {
                await sut.CreateNamespace(namespaceName, awsRoleName);


                // Act
                var ex = await Assert.ThrowsAsync <Exception>(async() => await sut.CreateNamespace(namespaceName, awsRoleName));

                // Assert
                var expectedStart = "Error occured while communicating with k8s:";
                Assert.StartsWith(expectedStart, ex.Message);
            }
            finally
            {
                client.DeleteNamespace(
                    body: new V1DeleteOptions(),
                    name: namespaceName
                    );
            }
        }
        public async Task Create_A_Role_For_A_Existing_Namespace()
        {
            // Arrange
            var config = KubernetesClientConfiguration.BuildConfigFromConfigFile();

            var client  = new k8s.Kubernetes(config);
            var wrapper = new KubernetesWrapper(client);

            var namespaceRepository = new NamespaceRespoitory(client);
            var subjectNameSpace    = "namespace-with-role-test";
            var awsRoleName         = "notUSed";

            var sut = new WebApi.Repositories.Kubernetes.RoleRepository(wrapper);

            try
            {
                // Act
                await namespaceRepository.CreateNamespace(subjectNameSpace, awsRoleName);

                await sut.CreateNamespaceFullAccessRole(subjectNameSpace);

                // Assert
                client.ListNamespacedRole(subjectNameSpace).Items.Single();
            }
            finally
            {
                client.DeleteNamespace(
                    body: new V1DeleteOptions(),
                    name: subjectNameSpace
                    );
            }
        }
Beispiel #4
0
        public async Task Bind_To_A_Existing_Namespace()
        {
            var config = KubernetesClientConfiguration.BuildConfigFromConfigFile();

            var client              = new k8s.Kubernetes(config);
            var wrapper             = new KubernetesWrapper(client);
            var namespaceRepository = new NamespaceRespoitory(client);
            var roleRepository      = new WebApi.Repositories.Kubernetes.RoleRepository(wrapper);
            var sut = new WebApi.Repositories.Kubernetes.RoleBindingRepository(client);

            var subjectNameSpace = "namespace-with-role-test";
            var awsRoleName      = "notUSed";
            var groupName        = "a-test-group";

            try
            {
                await namespaceRepository.CreateNamespace(subjectNameSpace, awsRoleName);

                var roleName = await roleRepository.CreateNamespaceFullAccessRole(subjectNameSpace);

                // Act
                await sut.BindNamespaceRoleToGroup(
                    subjectNameSpace,
                    roleName,
                    groupName
                    );

                // Assert
                var roleBindings = await client.ListNamespacedRoleBindingAsync(subjectNameSpace);

                roleBindings.Items.Single();
            }
            finally
            {
                client.DeleteNamespace(
                    body: new V1DeleteOptions(),
                    name: subjectNameSpace
                    );
            }
        }