mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-20 23:41:17 -05:00
Add api_token model and dao
This commit is contained in:
17
app/dao/api_tokens_dao.py
Normal file
17
app/dao/api_tokens_dao.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
from app import db
|
||||||
|
from app.models import ApiToken
|
||||||
|
|
||||||
|
|
||||||
|
def save_token_model(token, update_dict={}):
|
||||||
|
if update_dict:
|
||||||
|
del update_dict['id']
|
||||||
|
db.session.query(ApiToken).filter_by(id=token.id).update(update_dict)
|
||||||
|
else:
|
||||||
|
db.session.add(token)
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
|
||||||
|
def get_model_api_tokens(token=None):
|
||||||
|
if token:
|
||||||
|
return ApiToken.query.filter_by(token=token).one()
|
||||||
|
return ApiToken.query.filter_by().all()
|
||||||
@@ -61,6 +61,15 @@ class Service(db.Model):
|
|||||||
restricted = db.Column(db.Boolean, index=False, unique=False, nullable=False)
|
restricted = db.Column(db.Boolean, index=False, unique=False, nullable=False)
|
||||||
|
|
||||||
|
|
||||||
|
class ApiToken(db.Model):
|
||||||
|
__tablename__ = 'api_tokens'
|
||||||
|
|
||||||
|
id = db.Column(db.Integer, primary_key=True)
|
||||||
|
token = db.Column(db.String, unique=True, nullable=False)
|
||||||
|
service_id = db.Column(db.Integer, db.ForeignKey('services.id'), index=True, nullable=False)
|
||||||
|
expiry_date = db.Column(db.DateTime)
|
||||||
|
|
||||||
|
|
||||||
TEMPLATE_TYPES = ['sms', 'email', 'letter']
|
TEMPLATE_TYPES = ['sms', 'email', 'letter']
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -28,9 +28,15 @@ class TemplateSchema(ma.ModelSchema):
|
|||||||
exclude = ("updated_at", "created_at", "service_id")
|
exclude = ("updated_at", "created_at", "service_id")
|
||||||
|
|
||||||
|
|
||||||
|
class ApiTokenSchema(ma.ModelSchema):
|
||||||
|
class Meta:
|
||||||
|
model = models.ApiToken
|
||||||
|
|
||||||
user_schema = UserSchema()
|
user_schema = UserSchema()
|
||||||
users_schema = UserSchema(many=True)
|
users_schema = UserSchema(many=True)
|
||||||
service_schema = ServiceSchema()
|
service_schema = ServiceSchema()
|
||||||
services_schema = ServiceSchema(many=True)
|
services_schema = ServiceSchema(many=True)
|
||||||
|
api_token_schema = ApiTokenSchema()
|
||||||
|
api_tokens_schema = ApiTokenSchema(many=True)
|
||||||
template_schema = TemplateSchema()
|
template_schema = TemplateSchema()
|
||||||
templates_schema = TemplateSchema(many=True)
|
templates_schema = TemplateSchema(many=True)
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ from app.dao.services_dao import (
|
|||||||
save_model_service, get_model_services, delete_model_service)
|
save_model_service, get_model_services, delete_model_service)
|
||||||
from app.dao.templates_dao import (
|
from app.dao.templates_dao import (
|
||||||
save_model_template, get_model_templates)
|
save_model_template, get_model_templates)
|
||||||
from app.dao.users_dao import get_model_users
|
|
||||||
from app.dao import DAOException
|
from app.dao import DAOException
|
||||||
from .. import service
|
from .. import service
|
||||||
from app import db
|
from app import db
|
||||||
@@ -72,6 +71,12 @@ def get_service(service_id=None):
|
|||||||
return jsonify(data=data)
|
return jsonify(data=data)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO auth to be added
|
||||||
|
@service.route('/<int:service_id>/token', methods=['POST'])
|
||||||
|
def create_token():
|
||||||
|
request.get_json()
|
||||||
|
|
||||||
|
|
||||||
# TODO auth to be added.
|
# TODO auth to be added.
|
||||||
@service.route('/<int:service_id>/template/', methods=['POST'])
|
@service.route('/<int:service_id>/template/', methods=['POST'])
|
||||||
def create_template(service_id):
|
def create_template(service_id):
|
||||||
|
|||||||
16
tests/app/dao/test_tokens_dao.py
Normal file
16
tests/app/dao/test_tokens_dao.py
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
import uuid
|
||||||
|
|
||||||
|
from app.dao import api_tokens_dao
|
||||||
|
from app.models import ApiToken
|
||||||
|
|
||||||
|
|
||||||
|
def test_should_create_token(notify_api, notify_db, notify_db_session, sample_service):
|
||||||
|
token = uuid.uuid4()
|
||||||
|
api_token = ApiToken(**{'token': token, 'service_id': sample_service.id})
|
||||||
|
|
||||||
|
api_tokens_dao.save_token_model(api_token)
|
||||||
|
|
||||||
|
all_tokens = api_tokens_dao.get_model_api_tokens()
|
||||||
|
|
||||||
|
assert len(all_tokens) == 1
|
||||||
|
assert all_tokens[0].token == str(token)
|
||||||
Reference in New Issue
Block a user