mirror of
https://github.com/ansible-collections/kubernetes.core.git
synced 2026-03-26 21:33:02 +00:00
Move integration tests to molecule (#198)
Move integration tests to molecule SUMMARY There are only a handful of integration tests in tests/integration. These are presumably left over from before the collection used molecule. The only integration tests that aren't already covered by molecule are the ones testing kubernetes-validate. I have moved these tests into molecule so we can delete the integration test job. ISSUE TYPE COMPONENT NAME ADDITIONAL INFORMATION Reviewed-by: None <None> Reviewed-by: None <None>
This commit is contained in:
@@ -132,6 +132,15 @@
|
||||
tags: [ template, k8s ]
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Include validate.yml
|
||||
include_tasks:
|
||||
file: tasks/validate.yml
|
||||
apply:
|
||||
tags: [ validate, k8s ]
|
||||
tags:
|
||||
- always
|
||||
|
||||
- name: Include waiter.yml
|
||||
include_tasks:
|
||||
file: tasks/waiter.yml
|
||||
|
||||
205
molecule/default/tasks/validate.yml
Normal file
205
molecule/default/tasks/validate.yml
Normal file
@@ -0,0 +1,205 @@
|
||||
- block:
|
||||
- name: Create namespace
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: "{{ validate_namespace }}"
|
||||
|
||||
- name: Create temp directory
|
||||
tempfile:
|
||||
state: directory
|
||||
suffix: .test
|
||||
register: remote_tmp_dir
|
||||
|
||||
- set_fact:
|
||||
remote_tmp_dir: "{{ remote_tmp_dir.path }}"
|
||||
|
||||
- set_fact:
|
||||
virtualenv: "{{ remote_tmp_dir }}/virtualenv"
|
||||
virtualenv_command: "virtualenv --python {{ ansible_python_interpreter }}"
|
||||
|
||||
- set_fact:
|
||||
virtualenv_interpreter: "{{ virtualenv }}/bin/python"
|
||||
|
||||
- pip:
|
||||
name:
|
||||
- kubernetes
|
||||
virtualenv: "{{ virtualenv }}"
|
||||
virtualenv_command: "{{ virtualenv_command }}"
|
||||
virtualenv_site_packages: false
|
||||
|
||||
- name: Validate should fail gracefully without kubernetes-validate
|
||||
k8s:
|
||||
definition: &cmap
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: testmap
|
||||
namespace: "{{ validate_namespace }}"
|
||||
data:
|
||||
mykey: myval
|
||||
validate:
|
||||
fail_on_error: true
|
||||
ignore_errors: true
|
||||
register: k8s_no_validate
|
||||
vars:
|
||||
ansible_python_interpreter: "{{ virtualenv_interpreter }}"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- k8s_no_validate is failed
|
||||
- "k8s_no_validate.msg == 'kubernetes-validate python library is required to validate resources'"
|
||||
|
||||
- file:
|
||||
path: "{{ virtualenv }}"
|
||||
state: absent
|
||||
|
||||
- pip:
|
||||
name:
|
||||
- kubernetes
|
||||
- kubernetes-validate
|
||||
virtualenv: "{{ virtualenv }}"
|
||||
virtualenv_command: "{{ virtualenv_command }}"
|
||||
virtualenv_site_packages: false
|
||||
|
||||
- block:
|
||||
- name: Simple ConfigMap should validate
|
||||
k8s:
|
||||
definition: *cmap
|
||||
validate:
|
||||
fail_on_error: true
|
||||
|
||||
- name: ConfigMap with extra properties should validate without strict
|
||||
k8s:
|
||||
definition:
|
||||
<<: *cmap
|
||||
extra: stuff
|
||||
validate:
|
||||
fail_on_error: true
|
||||
strict: false
|
||||
|
||||
- name: ConfigMap with extra properties should not validate with strict
|
||||
k8s:
|
||||
definition:
|
||||
<<: *cmap
|
||||
extra: stuff
|
||||
validate:
|
||||
fail_on_error: true
|
||||
strict: true
|
||||
ignore_errors: true
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is failed
|
||||
- "\"('extra' was unexpected)\" is in result.msg"
|
||||
|
||||
- name: Property with invalid type should fail with strict
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: testdeploy
|
||||
namespace: "{{ validate_namespace }}"
|
||||
labels:
|
||||
app: foo
|
||||
spec:
|
||||
replicas: lots
|
||||
selector:
|
||||
matchLabels:
|
||||
app: foo
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: foo
|
||||
spec:
|
||||
containers:
|
||||
- name: busybox
|
||||
image: busybox
|
||||
validate:
|
||||
fail_on_error: true
|
||||
strict: false
|
||||
ignore_errors: true
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is failed
|
||||
- result.status is not defined
|
||||
- "\"'lots' is not of type 'integer'\" in result.msg"
|
||||
|
||||
- name: Create CRD
|
||||
k8s:
|
||||
definition: &crd
|
||||
apiVersion: apiextensions.k8s.io/v1
|
||||
kind: CustomResourceDefinition
|
||||
metadata:
|
||||
name: foobars.example.com
|
||||
spec:
|
||||
group: example.com
|
||||
versions:
|
||||
- name: v1
|
||||
served: true
|
||||
storage: true
|
||||
schema:
|
||||
openAPIV3Schema:
|
||||
type: object
|
||||
properties:
|
||||
foo:
|
||||
type: string
|
||||
scope: Namespaced
|
||||
names:
|
||||
plural: foobars
|
||||
singular: foobar
|
||||
kind: Foobar
|
||||
|
||||
- pause:
|
||||
seconds: 5
|
||||
|
||||
- name: Adding CRD should succeed with warning
|
||||
k8s:
|
||||
definition:
|
||||
apiVersion: example.com/v1
|
||||
kind: Foobar
|
||||
metadata:
|
||||
name: foobar
|
||||
namespace: "{{ validate_namespace }}"
|
||||
foo: bar
|
||||
validate:
|
||||
fail_on_error: true
|
||||
strict: true
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- result is successful
|
||||
- "'warnings' in result"
|
||||
|
||||
|
||||
vars:
|
||||
ansible_python_interpreter: "{{ virtualenv_interpreter }}"
|
||||
always:
|
||||
- name: Remove temp directory
|
||||
file:
|
||||
path: "{{ remote_tmp_dir }}"
|
||||
state: absent
|
||||
ignore_errors: true
|
||||
|
||||
- name: Remove namespace
|
||||
k8s:
|
||||
kind: Namespace
|
||||
name: "{{ validate_namespace }}"
|
||||
state: absent
|
||||
ignore_errors: true
|
||||
|
||||
- name: Remove CRD
|
||||
k8s:
|
||||
definition: *crd
|
||||
state: absent
|
||||
ignore_errors: true
|
||||
|
||||
vars:
|
||||
validate_namespace: validate
|
||||
Reference in New Issue
Block a user