mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -05:00 
			
		
		
		
	molecule scenario to test upgrading from releases
Provide a separate scenario to install the last release, then update to the current one. Also includes improved deployment verification (check if uploading a .txt through the API works).
This commit is contained in:
		| @@ -1,7 +0,0 @@ | ||||
| --- | ||||
| - name: Converge | ||||
|   hosts: all | ||||
|   tasks: | ||||
|     - name: "Include ansible" | ||||
|       include_role: | ||||
|         name: "ansible" | ||||
| @@ -1,14 +0,0 @@ | ||||
| --- | ||||
| # This is an example playbook to execute Ansible tests. | ||||
|  | ||||
| - name: Verify | ||||
|   hosts: all | ||||
|   gather_facts: false | ||||
|   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" | ||||
							
								
								
									
										7
									
								
								ansible/molecule/fresh/converge.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								ansible/molecule/fresh/converge.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| --- | ||||
| - name: fresh installation | ||||
|   hosts: all | ||||
|   tasks: | ||||
|     - name: install paperless-ng with default parameters | ||||
|       include_role: | ||||
|         name: ansible | ||||
							
								
								
									
										60
									
								
								ansible/molecule/fresh/verify.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								ansible/molecule/fresh/verify.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| --- | ||||
| - 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" | ||||
							
								
								
									
										11
									
								
								ansible/molecule/update/converge.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								ansible/molecule/update/converge.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| --- | ||||
| - name: update previous release to newest release | ||||
|   hosts: all | ||||
|   tasks: | ||||
|     - name: set current version as installation target | ||||
|       set_fact: | ||||
|         paperlessng_version: 0.9.14 | ||||
|  | ||||
|     - name: update to newest paperless-ng release | ||||
|       include_role: | ||||
|         name: ansible | ||||
							
								
								
									
										35
									
								
								ansible/molecule/update/molecule.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								ansible/molecule/update/molecule.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| --- | ||||
| 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 | ||||
							
								
								
									
										10
									
								
								ansible/molecule/update/prepare.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								ansible/molecule/update/prepare.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| - name: install previous release | ||||
|   hosts: all | ||||
|   tasks: | ||||
|     - name: set previous version as installation target | ||||
|       set_fact: | ||||
|         paperlessng_version: 0.9.13 | ||||
|  | ||||
|     - name: install previous paperless-ng release | ||||
|       include_role: | ||||
|         name: ansible | ||||
							
								
								
									
										60
									
								
								ansible/molecule/update/verify.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								ansible/molecule/update/verify.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,60 @@ | ||||
| --- | ||||
| - 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