summaryrefslogtreecommitdiff
path: root/test/integration/targets/incidental_consul/tasks/consul_session.yml
blob: a5490ec6c2e23b3d86c4fc893cb3e2d989617b68 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
- name: list sessions
  consul_session:
    state: list
  register: result

- assert:
    that:
      - result is changed
      - "'sessions' in result"

- name: create a session
  consul_session:
    state: present
    name: testsession
  register: result

- assert:
    that:
      - result is changed
      - result['name'] == 'testsession'
      - "'session_id' in result"

- set_fact:
    session_id: "{{ result['session_id'] }}"

- name: list sessions after creation
  consul_session:
    state: list
  register: result

- set_fact:
    session_count: "{{ result['sessions'] | length }}"

- assert:
    that:
      - result is changed
      # selectattr not available on Jinja 2.2 provided by CentOS 6
      # hence the two following tasks (set_fact/assert) are used
      # - (result['sessions'] | selectattr('ID', 'match', '^' ~ session_id ~ '$') | first)['Name'] == 'testsession'

- name: search created session
  set_fact:
    test_session_found: True
  loop: "{{ result['sessions'] }}"
  when: "item.get('ID') == session_id and item.get('Name') == 'testsession'"

- name: ensure session was created
  assert:
    that:
      - test_session_found|default(False)

- name: fetch info about a session
  consul_session:
    state: info
    id: '{{ session_id }}'
  register: result

- assert:
    that:
      - result is changed

- name: ensure 'id' parameter is required when state=info
  consul_session:
    state: info
    name: test
  register: result
  ignore_errors: True

- assert:
    that:
      - result is failed

- name: ensure unknown scheme fails
  consul_session:
    state: info
    id: '{{ session_id }}'
    scheme: non_existent
  register: result
  ignore_errors: True

- assert:
    that:
      - result is failed

- when: pyopenssl_version.stdout is version('0.15', '>=')
  block:
    - name: ensure SSL certificate is checked
      consul_session:
        state: info
        id: '{{ session_id }}'
        port: 8501
        scheme: https
      register: result
      ignore_errors: True

    - name: previous task should fail since certificate is not known
      assert:
        that:
          - result is failed
          - "'certificate verify failed' in result.msg"

    - name: ensure SSL certificate isn't checked when validate_certs is disabled
      consul_session:
        state: info
        id: '{{ session_id }}'
        port: 8501
        scheme: https
        validate_certs: False
      register: result

    - name: previous task should succeed since certificate isn't checked
      assert:
        that:
          - result is changed

    - name: ensure a secure connection is possible
      consul_session:
        state: info
        id: '{{ session_id }}'
        port: 8501
        scheme: https
      environment:
        REQUESTS_CA_BUNDLE: '{{ remote_dir }}/cert.pem'
      register: result

    - assert:
        that:
          - result is changed

- name: delete a session
  consul_session:
    state: absent
    id: '{{ session_id }}'
  register: result

- assert:
    that:
      - result is changed

- name: list sessions after deletion
  consul_session:
    state: list
  register: result

- assert:
    that:
      - result is changed
      # selectattr and equalto not available on Jinja 2.2 provided by CentOS 6
      # hence the two following tasks (command/assert) are used
      # - (result['sessions'] | selectattr('ID', 'equalto', session_id) | list | length) == 0

- name: search deleted session
  command: echo 'session found'
  loop: "{{ result['sessions'] }}"
  when: "item.get('ID') == session_id and item.get('Name') == 'testsession'"
  register: search_deleted

- name: ensure session was deleted
  assert:
    that:
      - search_deleted is skipped  # each iteration is skipped
      - search_deleted is not changed  # and then unchanged