First pass at ec2 module tests

This commit is contained in:
James Laska
2014-02-24 14:37:23 -05:00
parent 2a383786dd
commit b589bf1d2e
53 changed files with 1012 additions and 4 deletions

View File

@@ -0,0 +1,119 @@
---
# ============================================================
- name: test with no parameters
action: "{{module_name}}"
register: result
ignore_errors: true
- name: assert failure when called with no parameters
assert:
that:
- 'result.failed'
- 'result.msg == "missing required arguments: name"'
# ============================================================
- name: test with only name
action: "{{module_name}} name={{ec2_key_name}}"
register: result
ignore_errors: true
- name: assert failure when called with only 'name'
assert:
that:
- 'result.failed'
- 'result.msg == "Either region or ec2_url must be specified"'
# ============================================================
- name: test invalid region parameter
action: "{{module_name}} name='{{ec2_key_name}}' region='asdf querty 1234'"
register: result
ignore_errors: true
- name: assert invalid region parameter
assert:
that:
- 'result.failed'
- 'result.msg.startswith("value of region must be one of:")'
# ============================================================
- name: test valid region parameter
action: "{{module_name}} name='{{ec2_key_name}}' region='{{ec2_region}}'"
register: result
ignore_errors: true
- name: assert valid region parameter
assert:
that:
- 'result.failed'
- 'result.msg.startswith("No handler was ready to authenticate.")'
# ============================================================
- name: test environment variable EC2_REGION
action: "{{module_name}} name='{{ec2_key_name}}'"
environment:
EC2_REGION: '{{ec2_region}}'
register: result
ignore_errors: true
- name: assert environment variable EC2_REGION
assert:
that:
- 'result.failed'
- 'result.msg.startswith("No handler was ready to authenticate.")'
# ============================================================
- name: test invalid ec2_url parameter
action: "{{module_name}} name='{{ec2_key_name}}'"
environment:
EC2_URL: bogus.example.com
register: result
ignore_errors: true
- name: assert invalid ec2_url parameter
assert:
that:
- 'result.failed'
- 'result.msg.startswith("No handler was ready to authenticate.")'
# ============================================================
- name: test valid ec2_url parameter
action: "{{module_name}} name='{{ec2_key_name}}'"
environment:
EC2_URL: '{{ec2_url}}'
register: result
ignore_errors: true
- name: assert valid ec2_url parameter
assert:
that:
- 'result.failed'
- 'result.msg.startswith("No handler was ready to authenticate.")'
# ============================================================
- name: test credentials from environment
action: "{{module_name}} name='{{ec2_key_name}}'"
environment:
EC2_REGION: '{{ec2_region}}'
EC2_ACCESS_KEY: bogus_access_key
EC2_SECRET_KEY: bogus_secret_key
register: result
ignore_errors: true
- name: assert ec2_key with valid ec2_url
assert:
that:
- 'result.failed'
- '"EC2ResponseError: 401 Unauthorized" in result.msg'
# ============================================================
- name: test credential parameters
action: "{{module_name}} name='{{ec2_key_name}}' ec2_region='{{ec2_region}}' ec2_access_key=bogus_access_key ec2_secret_key=bogus_secret_key"
register: result
ignore_errors: true
- name: assert credential parameters
assert:
that:
- 'result.failed'
- '"EC2ResponseError: 401 Unauthorized" in result.msg'

View File

@@ -0,0 +1,55 @@
# common setup tasks for ec2 module tests
# (c) 2014, James Laska <jlaska@ansible.com>
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
- name: generate random string
shell: python -c "import string,random; print ''.join(random.choice(string.ascii_lowercase) for _ in xrange(8));"
register: random_string
tags:
- prepare
- name: create random file
shell: mktemp /tmp/id_rsa.XXXXXX
register: sshkey
tags:
- prepare
- name: generate sshkey
shell: echo 'y' | ssh-keygen -P '' -f {{sshkey.stdout}}
tags:
- prepare
- name: record key_material
command: cat {{sshkey.stdout}}.pub
register: key_material
tags:
- prepare
- name: record fingerprint
shell: ssh-keygen -lf {{sshkey.stdout}}.pub | awk '{print $2}'
register: fingerprint
tags:
- prepare
- name: set facts for future roles
set_fact:
random_string: '{{random_string.stdout}}'
sshkey: '{{sshkey.stdout}}'
key_material: '{{key_material.stdout}}'
fingerprint: '{{fingerprint.stdout}}'
tags:
- prepare