This commit is contained in:
		
							
								
								
									
										13
									
								
								.drone.yml
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								.drone.yml
									
									
									
									
									
								
							@@ -27,6 +27,15 @@ steps:
 | 
				
			|||||||
  - find . -name "*.py" -exec python3 -m mccabe --min 3 '{}' + || if [ $? -eq 1 ]; then echo "you fail"; fi
 | 
					  - find . -name "*.py" -exec python3 -m mccabe --min 3 '{}' + || if [ $? -eq 1 ]; then echo "you fail"; fi
 | 
				
			||||||
  - bandit -r . + || if [ $? -eq 1 ]; then echo "you fail"; fi
 | 
					  - bandit -r . + || if [ $? -eq 1 ]; then echo "you fail"; fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: unit_test
 | 
				
			||||||
 | 
					  image: python:3.8
 | 
				
			||||||
 | 
					  environment:
 | 
				
			||||||
 | 
					    REDIS_URL: "redis://cache"
 | 
				
			||||||
 | 
					  commands:
 | 
				
			||||||
 | 
					    - pip3 install -r requirements.txt
 | 
				
			||||||
 | 
					    - pytest test.py
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: rebuild-cache-with-filesystem
 | 
					- name: rebuild-cache-with-filesystem
 | 
				
			||||||
  image: meltwater/drone-cache
 | 
					  image: meltwater/drone-cache
 | 
				
			||||||
  pull: true
 | 
					  pull: true
 | 
				
			||||||
@@ -65,6 +74,10 @@ steps:
 | 
				
			|||||||
  when:
 | 
					  when:
 | 
				
			||||||
    status: [ failure ]
 | 
					    status: [ failure ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  - name: cache
 | 
				
			||||||
 | 
					    image: redis
 | 
				
			||||||
 | 
					
 | 
				
			||||||
volumes:
 | 
					volumes:
 | 
				
			||||||
- name: cache
 | 
					- name: cache
 | 
				
			||||||
  temp: {}
 | 
					  temp: {}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								curl-test.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								curl-test.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env bash
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					curl --header "Content-Type: application/json" \
 | 
				
			||||||
 | 
					  --request POST \
 | 
				
			||||||
 | 
					  --data '{"uuid":"c959ad81-58f9-4445-aab4-8f3d68aee1ad", "ip":"127.1.2.3"}' \
 | 
				
			||||||
 | 
					  http://localhost:5000/ip
 | 
				
			||||||
							
								
								
									
										11
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
				
			|||||||
 | 
					version: '3'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					networks:
 | 
				
			||||||
 | 
					  redis:
 | 
				
			||||||
 | 
					    external: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					services:
 | 
				
			||||||
 | 
					  redis:
 | 
				
			||||||
 | 
					    image: redis
 | 
				
			||||||
 | 
					    ports:
 | 
				
			||||||
 | 
					    - 6969:6379
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import json
 | 
					import json
 | 
				
			||||||
from redisclient import redis_client
 | 
					from redisclient import redis_client
 | 
				
			||||||
from flask import jsonify, request, Response
 | 
					from flask import request, Response
 | 
				
			||||||
from flask_classful import FlaskView
 | 
					from flask_classful import FlaskView
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,9 @@
 | 
				
			|||||||
flask
 | 
					flask
 | 
				
			||||||
flask-classful
 | 
					flask-classful
 | 
				
			||||||
 | 
					redis
 | 
				
			||||||
flask-redis
 | 
					flask-redis
 | 
				
			||||||
gunicorn
 | 
					gunicorn
 | 
				
			||||||
sentry-sdk[flask]
 | 
					sentry-sdk[flask]
 | 
				
			||||||
 | 
					pytest
 | 
				
			||||||
 | 
					pytest-flask
 | 
				
			||||||
 | 
					pytest-redis
 | 
				
			||||||
							
								
								
									
										56
									
								
								test.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								test.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
				
			|||||||
 | 
					#!/usr/bin/env python
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					Unit tests for the producer-endpoint module.
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					import pytest
 | 
				
			||||||
 | 
					import redis
 | 
				
			||||||
 | 
					from pytest_redis import factories
 | 
				
			||||||
 | 
					import app
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					generateduuid = 'c959ad81-58f9-4445-aab4-8f3d68aee1ad'
 | 
				
			||||||
 | 
					redis_proc = factories.redis_proc(host='cache', port=6379)
 | 
				
			||||||
 | 
					redis_db = factories.redisdb('redis_nooproc')
 | 
				
			||||||
 | 
					redstuff = redis.Redis.from_url(url=os.environ['REDIS_URL'])
 | 
				
			||||||
 | 
					redstuff.set('currentConsumer', json.dumps({'uuid': generateduuid, 'Host': "127.2.2.2"}).encode('utf-8'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@pytest.fixture
 | 
				
			||||||
 | 
					def client():
 | 
				
			||||||
 | 
					    """Client fixture"""
 | 
				
			||||||
 | 
					    with app.app.test_client() as client:
 | 
				
			||||||
 | 
					        yield client
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_set_currentconsumer_success(client):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    r = client.post("/ip", json={'uuid': generateduuid, 'ip': "127.1.2.3"})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    json_in_redis = json.loads(redstuff.get('currentConsumer'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert r.status_code == 204
 | 
				
			||||||
 | 
					    assert json_in_redis == {'uuid': generateduuid, 'Host': "127.1.2.3"}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_set_currentconsumer_server_error(client):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    r = client.post("/ip", json="unexpected")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert r.status_code == 500
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_set_currentconsumer_notfound(client):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    r = client.post("/test")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert r.status_code == 404
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def test_set_currentconsumer_method_not_allowed(client):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    r = client.get("/ip")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert r.status_code == 405
 | 
				
			||||||
		Reference in New Issue
	
	Block a user