mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	Simplify molecule tests
"Upgrade" path includes multiple paths anyway: - installing the latest official release package - builing the current PR from source - upgrading between the two versions
This commit is contained in:
		
							
								
								
									
										37
									
								
								.github/workflows/ansible.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								.github/workflows/ansible.yml
									
									
									
									
										vendored
									
									
								
							| @@ -5,7 +5,7 @@ on: [push, pull_request] | ||||
|  | ||||
| jobs: | ||||
|   # https://molecule.readthedocs.io/en/latest/ci.html#github-actions | ||||
|   test-fresh: | ||||
|   test: | ||||
|     runs-on: ubuntu-latest | ||||
|     # https://docs.github.com/en/free-pro-team@latest/actions/reference/context-and-expression-syntax-for-github-actions#github-context | ||||
|     if: github.event_name == 'pull_request' || (github.event_name == 'push' && contains(github.ref, 'refs/heads/')) | ||||
| @@ -26,36 +26,15 @@ jobs: | ||||
|           docker --version | ||||
|           molecule --version | ||||
|           python --version | ||||
|       - name: Test fresh installation with molecule | ||||
|       - name: Test installation/build/upgrade with molecule | ||||
|         run: | | ||||
|           cd ansible | ||||
|           molecule test -s fresh | ||||
|         working-directory: "${{ github.repository }}" | ||||
|   test-update: | ||||
|     runs-on: ubuntu-latest | ||||
|     # https://docs.github.com/en/free-pro-team@latest/actions/reference/context-and-expression-syntax-for-github-actions#github-context | ||||
|     if: github.event_name == 'pull_request' || (github.event_name == 'push' && contains(github.ref, 'refs/heads/')) | ||||
|     steps: | ||||
|       - name: Check out the codebase | ||||
|         uses: actions/checkout@v2 | ||||
|         with: | ||||
|           path: "${{ github.repository }}" | ||||
|       - name: Set up Python | ||||
|         uses: actions/setup-python@v2 | ||||
|       - name: Set up Docker | ||||
|         uses: docker-practice/actions-setup-docker@master | ||||
|       - name: Install dependencies | ||||
|         run: | | ||||
|           python3 -m pip install --upgrade pip | ||||
|           python3 -m pip install molecule[ansible,docker] jmespath | ||||
|           ansible --version | ||||
|           docker --version | ||||
|           molecule --version | ||||
|           python --version | ||||
|       - name: Test release update with molecule | ||||
|         run: | | ||||
|           cd ansible | ||||
|           molecule test -s update | ||||
|           molecule create | ||||
|           molecule verify | ||||
|           molecule converge | ||||
|           molecule idempotence | ||||
|           molecule verify | ||||
|           molecule destroy | ||||
|         working-directory: "${{ github.repository }}" | ||||
|   # # https://galaxy.ansible.com/docs/contributing/importing.html | ||||
|   # release: | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
|   tasks: | ||||
|     - name: set previous version as installation target | ||||
|       set_fact: | ||||
|         paperlessng_version: 1.0.0 | ||||
|         paperlessng_version: latest | ||||
| 
 | ||||
|     - name: install previous paperless-ng release | ||||
|       include_role: | ||||
							
								
								
									
										91
									
								
								ansible/molecule/default/verify.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								ansible/molecule/default/verify.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | ||||
| --- | ||||
| - name: Verify | ||||
|   hosts: all | ||||
|   gather_facts: false | ||||
|  | ||||
|   vars_files: | ||||
|     - ../../defaults/main.yml | ||||
|  | ||||
|   tasks: | ||||
|     - name: check if webserver is up | ||||
|       uri: | ||||
|         url: "http://{{ paperlessng_listen_address }}:{{ paperlessng_listen_port }}" | ||||
|         status_code: [200, 302] | ||||
|         return_content: yes | ||||
|       register: landingpage | ||||
|       failed_when: "'Sign in</button>' not in landingpage.content" | ||||
|  | ||||
|     - name: generate random name and content | ||||
|       set_fact: | ||||
|         content: "{{ lookup('password', '/dev/null length=64 chars=ascii_letters') }}" | ||||
|         filename: "{{ lookup('password', '/dev/null length=8 chars=ascii_letters') }}" | ||||
|  | ||||
|     - name: check if document posting works | ||||
|       uri: | ||||
|         url: "http://{{ paperlessng_listen_address }}:{{ paperlessng_listen_port }}/api/documents/post_document/" | ||||
|         method: POST | ||||
|         body_format: form-multipart | ||||
|         body: | ||||
|           document: | ||||
|             content: "{{ content }}" | ||||
|             filename: "{{ filename }}.txt" | ||||
|             mime_type: text/plain | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: post_document | ||||
|       failed_when: "'OK' not in post_document.content" | ||||
|  | ||||
|     - name: verify uploaded document has been accepted | ||||
|       uri: | ||||
|         url: "http://{{ paperlessng_listen_address }}:{{ paperlessng_listen_port }}/api/logs/" | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: logs | ||||
|       failed_when: "('Consuming ' + filename + '.txt') not in logs.content" | ||||
|  | ||||
|     # assumes txt consumption finished by now, might have to sleep a bit | ||||
|     - name: verify uploaded document has been consumed | ||||
|       uri: | ||||
|         url: "http://{{ paperlessng_listen_address }}:{{ paperlessng_listen_port }}/api/logs/" | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: logs | ||||
|       failed_when: "filename + ' consumption finished' not in logs.content" | ||||
|  | ||||
|     - name: get documents | ||||
|       uri: | ||||
|         url: "http://{{ paperlessng_listen_address }}:{{ paperlessng_listen_port }}/api/documents/" | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: documents | ||||
|  | ||||
|     - name: set document index | ||||
|       set_fact: | ||||
|         index: "{{ documents.json['results'][0]['id'] }}" | ||||
|  | ||||
|     - name: verify uploaded document is avaiable | ||||
|       uri: | ||||
|         url: "http://{{ paperlessng_listen_address }}:{{ paperlessng_listen_port }}/api/documents/{{ index }}/" | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: document | ||||
|       failed_when: "'Not found.' in document.content or content not in document.json['content']" | ||||
|  | ||||
|     - name: check if deleting uploaded document works | ||||
|       uri: | ||||
|         url: "http://{{ paperlessng_listen_address }}:{{ paperlessng_listen_port }}/api/documents/bulk_edit/" | ||||
|         method: POST | ||||
|         body_format: json | ||||
|         body: | ||||
|           documents: ["{{ index }}"] | ||||
|           method: delete | ||||
|           parameters: {} | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|       register: delete_document | ||||
|       failed_when: "'OK' not in delete_document.json['result']" | ||||
| @@ -1,10 +0,0 @@ | ||||
| --- | ||||
| - name: fresh installation | ||||
|   hosts: all | ||||
|   tasks: | ||||
|     - name: set github ref as version when available | ||||
|       set_fact: | ||||
|         paperlessng_version: "{{ lookup('env', 'GITHUB_REF') | default('latest', True) }}" | ||||
|     - name: install paperless-ng with default parameters | ||||
|       include_role: | ||||
|         name: ansible | ||||
| @@ -1,60 +0,0 @@ | ||||
| --- | ||||
| - name: Verify | ||||
|   hosts: all | ||||
|   gather_facts: false | ||||
|  | ||||
|   vars_files: | ||||
|     - ../../defaults/main.yml | ||||
|  | ||||
|   tasks: | ||||
|     - name: check if webserver is up | ||||
|       uri: | ||||
|         url: http://localhost:8000 | ||||
|         status_code: [200, 302] | ||||
|         return_content: yes | ||||
|       register: landingpage | ||||
|       failed_when: "'Sign in</button>' not in landingpage.content" | ||||
|  | ||||
|     - name: check if document posting works | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/documents/post_document/ | ||||
|         method: POST | ||||
|         body_format: form-multipart | ||||
|         body: | ||||
|           document: | ||||
|             content: FOO | ||||
|             filename: document.txt | ||||
|             mime_type: text/plain | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: post_document | ||||
|       failed_when: "'OK' not in post_document.content" | ||||
|  | ||||
|     - name: verify uploaded document has been accepted | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/logs/ | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: logs | ||||
|       failed_when: "'Consuming document.txt' not in logs.content" | ||||
|  | ||||
|     # assumes txt consumption finished by now, might have to sleep a bit | ||||
|     - name: verify uploaded document has been consumed | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/logs/ | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: logs | ||||
|       failed_when: "'document consumption finished' not in logs.content" | ||||
|  | ||||
|     - name: verify uploaded document is avaiable | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/documents/1/ | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: document | ||||
|       failed_when: "'Not found.' in document.content or 'FOO' not in document.content" | ||||
| @@ -1,35 +0,0 @@ | ||||
| --- | ||||
| dependency: | ||||
|   name: galaxy | ||||
| driver: | ||||
|   name: docker | ||||
| platforms: | ||||
|   - name: ubuntu_focal | ||||
|     image: jrei/systemd-ubuntu:20.04 | ||||
|     privileged: true | ||||
|     volumes: | ||||
|       - /sys/fs/cgroup:/sys/fs/cgroup:ro | ||||
|     tmpfs: | ||||
|       - /tmp | ||||
|       - /run | ||||
|       - /run/lock | ||||
|     override_command: False | ||||
|   # ubuntu 18.04 bionic works except that | ||||
|   #   the default redis configuration expects IPv6 which is not enabled in docker by default | ||||
|   #   the default Python environment is configured for ASCII instead of UTF-8 | ||||
|   # ubuntu 16.04 xenial only has Python 3.5 which is EOL and breaks multiple dependencies | ||||
|   - name: debian_buster | ||||
|     image: jrei/systemd-debian:10 | ||||
|     privileged: true | ||||
|     volumes: | ||||
|       - /sys/fs/cgroup:/sys/fs/cgroup:ro | ||||
|     tmpfs: | ||||
|       - /tmp | ||||
|       - /run | ||||
|       - /run/lock | ||||
|     override_command: False | ||||
|   # debian 9 stretch only has Python 3.5 which is EOL and breaks multiple dependencies | ||||
| provisioner: | ||||
|   name: ansible | ||||
| verifier: | ||||
|   name: ansible | ||||
| @@ -1,60 +0,0 @@ | ||||
| --- | ||||
| - name: Verify | ||||
|   hosts: all | ||||
|   gather_facts: false | ||||
|  | ||||
|   vars_files: | ||||
|     - ../../defaults/main.yml | ||||
|  | ||||
|   tasks: | ||||
|     - name: check if webserver is up | ||||
|       uri: | ||||
|         url: http://localhost:8000 | ||||
|         status_code: [200, 302] | ||||
|         return_content: yes | ||||
|       register: landingpage | ||||
|       failed_when: "'Sign in</button>' not in landingpage.content" | ||||
|  | ||||
|     - name: check if document posting works | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/documents/post_document/ | ||||
|         method: POST | ||||
|         body_format: form-multipart | ||||
|         body: | ||||
|           document: | ||||
|             content: FOO | ||||
|             filename: document.txt | ||||
|             mime_type: text/plain | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: post_document | ||||
|       failed_when: "'OK' not in post_document.content" | ||||
|  | ||||
|     - name: verify uploaded document has been accepted | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/logs/ | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: logs | ||||
|       failed_when: "'Consuming document.txt' not in logs.content" | ||||
|  | ||||
|     # assumes txt consumption finished by now, might have to sleep a bit | ||||
|     - name: verify uploaded document has been consumed | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/logs/ | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: logs | ||||
|       failed_when: "'document consumption finished' not in logs.content" | ||||
|  | ||||
|     - name: verify uploaded document is avaiable | ||||
|       uri: | ||||
|         url: http://localhost:8000/api/documents/1/ | ||||
|         headers: | ||||
|           Authorization: 'Basic {{ (paperlessng_superuser_name + ":" + paperlessng_superuser_password) | b64encode }}' | ||||
|         return_content: yes | ||||
|       register: document | ||||
|       failed_when: "'Not found.' in document.content or 'FOO' not in document.content" | ||||
		Reference in New Issue
	
	Block a user
	 Fabian Koller
					Fabian Koller