Skip to content

Commit

Permalink
tox and pytest setup
Browse files Browse the repository at this point in the history
  • Loading branch information
jms committed May 31, 2016
1 parent 593ac59 commit 0cdec94
Show file tree
Hide file tree
Showing 14 changed files with 76 additions and 40 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -58,4 +58,4 @@ target/


# ide stuff # ide stuff
.idea .idea

MANIFEST
3 changes: 3 additions & 0 deletions MANIFEST
Original file line number Original file line Diff line number Diff line change
@@ -1,3 +1,6 @@
# file GENERATED by distutils, do NOT edit # file GENERATED by distutils, do NOT edit
main.py main.py
setup.cfg
setup.py setup.py
check_phonenumber/__init__.py
check_phonenumber/service.py
1 change: 1 addition & 0 deletions check_phonenumber/__init__.py
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1 @@
from service import CheckPhoneNumber
26 changes: 26 additions & 0 deletions check_phonenumber/service.py
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,26 @@
import phonenumbers
from phonenumbers import carrier, NumberParseException


class CheckPhoneNumber:
@staticmethod
def validate_phone(data):
try:
phone_number = data.get('phone_number')
cc = data.get('country_code')
number_data = phonenumbers.parse(phone_number, cc)
check_possible_number = phonenumbers.is_possible_number(number_data)
check_valid_number = phonenumbers.is_valid_number(number_data)
carrier_info = carrier.name_for_number(number_data, "en")
carrier_data = str(carrier_info)
check_result = {
"number_data": str(number_data),
"possible_number": check_possible_number,
"valid_number": check_valid_number,
"carrier_data": carrier_data
}
except NumberParseException:
check_result = {"success": False, "message": "Number not valid or no possible"}
except KeyError:
check_result = {"success": False, "message": "key missing on json data"}
return check_result
34 changes: 8 additions & 26 deletions main.py
Original file line number Original file line Diff line number Diff line change
@@ -1,43 +1,25 @@
from bottle import Bottle, run, error, request, response, debug from bottle import Bottle, run, error, request, response, debug
import phonenumbers from check_phonenumber.service import CheckPhoneNumber
from phonenumbers import carrier, NumberParseException


app = Bottle() app = Bottle()



@app.route('/', method='GET') @app.route('/', method='GET')
def hello(): def index():
return "Check Phone micro service" return "Get Phone Number Information service"




@app.route('/check-phone', method='POST') @app.route('/check-phone', method='POST')
def check_phone(): def check_phone():
try: data = request.json
data = request.json check_result = CheckPhoneNumber.validate_phone(data)
phone_number = data['phone_number']
cc = data['country_code']
# print(data)
number_data = phonenumbers.parse(phone_number, cc)
check_possible_number = phonenumbers.is_possible_number(number_data)
check_valid_number = phonenumbers.is_valid_number(number_data)
carrier_info = carrier.name_for_number(number_data, "en")
carrier_data = str(carrier_info)
check_result = {
"number_data": str(number_data),
"possible_number": check_possible_number,
"valid_number": check_valid_number,
"carrier_data": carrier_data
}
except NumberParseException:
check_result = {"success": False, "message": "Number not valid or no possible"}
except KeyError:
check_result = {"success": False, "message": "key missing on json data"}

response.content_type = 'application/json' response.content_type = 'application/json'
return check_result return check_result



@error(404) @error(404)
def error404(error): def error404(error):
return 'Release the Kraken' return error




debug(True) debug(True)
Expand Down
File renamed without changes.
8 changes: 4 additions & 4 deletions requirements-dev.txt
Original file line number Original file line Diff line number Diff line change
@@ -1,4 +1,4 @@
bottle==0.12.8 bottle==0.12.9
phonenumbers==7.0.5 phonenumbers==7.4.1
tox tox==2.3.1
pytest pytest==2.9.1
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Original file line Diff line number Diff line change
@@ -1,2 +1,2 @@
bottle==0.12.8 bottle==0.12.9
phonenumbers==7.0.5 phonenumbers==7.4.1
2 changes: 2 additions & 0 deletions setup.cfg
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,2 @@
[aliases]
test=pytest
9 changes: 6 additions & 3 deletions setup.py
Original file line number Original file line Diff line number Diff line change
@@ -1,10 +1,13 @@
from distutils.core import setup from setuptools import setup, find_packages

setup( setup(
name='check-phone-number', name='check-phone-number',
version='1.0', version='1.0',
url="https://github.com/jms/check-phone-number", url="https://github.com/jms/check-phone-number",
author="Jeronimo Martinez Sanchez", author="Jeronimo Martinez Sanchez",
author_email="jms@rz0r.net", author_email="jms@rz0r.net",
description="Bottle microservice to verify phone numbers", description="Bottle microservice to verify phone numbers",
py_modules=['main'] py_modules=['main', 'check_phonenumber.service'],
) setup_requires=['pytest-runner', ],
tests_require=['pytest', ]
)
Empty file added tests/__init__.py
Empty file.
16 changes: 16 additions & 0 deletions tests/test_service.py
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,16 @@
import pytest
import check_phonenumber.service


@pytest.fixture
def test_data():
data = {
"phone_number": "+40721234567",
"country_code": "RO"
}
return data


def test_service(test_data):
result = check_phonenumber.service.CheckPhoneNumber.validate_phone(data=test_data)
assert result.get('valid_number') is True
11 changes: 7 additions & 4 deletions tox.ini
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@
# and then run "tox" from this directory. # and then run "tox" from this directory.


[tox] [tox]
envlist = py27, py35 envlist = py27, py34


[testenv] ;[testenv]
commands = {envpython} setup.py test ;commands = {envpython} setup.py test
deps = ;deps = pytest


[testenv]
deps=pytest
commands=py.test {posargs} # substitute with tox' positional arguments
Empty file added wsgi.py
Empty file.

0 comments on commit 0cdec94

Please sign in to comment.