Skip to content

Commit 685a5b6

Browse files
committed
Merge pull request #1 from CraigJPerry/test-cases-as-documentation
2 parents 6108fbd + cb3a625 commit 685a5b6

File tree

8 files changed

+127
-0
lines changed

8 files changed

+127
-0
lines changed

.travis.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
language: python
2+
python:
3+
- "2.7"
4+
install:
5+
- "pip install ansible"
6+
script:
7+
- cd tests
8+
- ansible-playbook --connection=local --limit=localhost --inventory-file=hosts all.yml
9+

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[![Build Status](https://travis-ci.org/CraigJPerry/ansible-users.png)](https://travis-ci.org/CraigJPerry/ansible-users)
2+
13
# Users role
24

35
Role to manage users on a system.

tests/add_user.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
3+
# It should add a user when given valid metadata
4+
5+
- hosts: test_runners
6+
sudo: yes
7+
8+
# Test fixture data
9+
vars:
10+
users:
11+
- username: ansibletestuser
12+
name: Ansible Users Role Test Fixture Account
13+
groups:
14+
- 'users'
15+
- 'bin'
16+
uid: 2222
17+
ssh_key:
18+
- "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVpUJQCOaPg3p5xro9e+1fkGRWNOGrrExiKMqTE91Fwu349bxfMnMzRS0PAERouR9EEL+Ee4Yzhav/uNc35eCtXzACtluXnAncMrQj6pM3IqASynhvXTygHljmcMbBSDQtLrTZeW+YzIcOgk5UM1yBi26WoUYva2aCr9IRvKdYreAK08OiMdZedpOye0ZdvIYJGcyITwc6YMmrAhP7jZlrk/mDEkf2a4eBp+475o7MJtaC9npqYkToM8vqvx5AGEKqXt7/f1/paOY7KsR+VGPQy6k2RkXjWBsXPesZ3d3XLZHE60wAk0EsuJO8A25+uWSB6ILQeRSYYmGea/WIf6kd [email protected]"
19+
20+
# Test setup
21+
pre_tasks:
22+
- include: cleanup.yml
23+
- name: Add Users Test | Pre-Assertions | Ensure ansibletestuser not already present
24+
command: "grep ansibletestuser /etc/passwd /etc/group"
25+
register: ensure_user_not_present
26+
failed_when: ensure_user_not_present.rc == 0
27+
- name: Add Users Test | Pre-Assertions | Ensure ansibletestuser home dir not already present
28+
command: "ls -d /home/ansibletestuser"
29+
register: ensure_home_not_present
30+
failed_when: ensure_home_not_present.rc == 0
31+
32+
# Test run
33+
roles:
34+
- { role: users }
35+
36+
# Test verify successful
37+
tasks:
38+
- name: Add Users Test | Post-Assertions | Ensure ansibletestuser was created
39+
command: "grep ansibletestuser /etc/passwd"
40+
- name: Add Users Test | Post-Assertions | Ensure ansibletestuser home dir was created
41+
command: "ls -d /home/ansibletestuser"
42+
- name: Add Users Test | Post-Assertions | Ensure ssh key was added
43+
command: "sudo grep '{{ users[0].ssh_key[0] }}' /home/ansibletestuser/.ssh/authorized_keys"
44+
- name: Add Users Test | Post-Assertions | Ensure group was added
45+
command: "grep 2222 /etc/group"
46+
- name: Add Users Test | Post-Assertions | Ensure user was added to requested groups
47+
command: "grep '^bin.*ansibletestuser' /etc/group"
48+
49+
# Test tear-down
50+
post_tasks:
51+
- include: cleanup.yml
52+

tests/all.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
3+
# All users role tests
4+
5+
- include: add_user.yml
6+
- include: ssh_keys_optional.yml
7+

tests/cleanup.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
3+
- name: Cleanup | Remove ansibletestuser
4+
user: state="absent" name="ansibletestuser"
5+
6+
- name: Cleanup | Remove ansibletestuser home dir
7+
file: state="absent" path="/home/ansibletestuser"
8+

tests/hosts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[test_runners]
2+
localhost
3+

tests/roles/users

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../../

tests/ssh_keys_optional.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
---
2+
3+
# SSH keys should not be required
4+
5+
- hosts: test_runners
6+
sudo: yes
7+
8+
# Test fixture data
9+
vars:
10+
users:
11+
- username: ansibletestuser
12+
name: Ansible Users Role Test Fixture Account
13+
uid: 2222
14+
groups: []
15+
ssh_key: []
16+
17+
# Test setup
18+
pre_tasks:
19+
- include: cleanup.yml
20+
- name: SSH Keys Optional Test | Pre-Assertions | Ensure ansibletestuser not already present
21+
command: "grep ansibletestuser /etc/passwd /etc/group"
22+
register: ensure_user_not_present
23+
failed_when: ensure_user_not_present.rc == 0
24+
- name: SSH Keys Optional Test | Pre-Assertions | Ensure ansibletestuser home dir not already present
25+
command: "ls -d /home/ansibletestuser"
26+
register: ensure_home_not_present
27+
failed_when: ensure_home_not_present.rc == 0
28+
29+
# Test run
30+
roles:
31+
- { role: users }
32+
33+
# Test verify successful
34+
tasks:
35+
- name: SSH Keys Optional Test | Post-Assertions | Ensure ansibletestuser was created
36+
command: "grep ansibletestuser /etc/passwd"
37+
- name: SSH Keys Optional Test | Post-Assertions | Ensure no ssh key was added
38+
command: "sudo ls /home/ansibletestuser/.ssh/authorized_keys"
39+
register: ensure_ssh_key_not_present
40+
failed_when: ensure_ssh_key_not_present.rc == 0
41+
42+
# Test tear-down
43+
post_tasks:
44+
- include: cleanup.yml
45+

0 commit comments

Comments
 (0)