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)
|
||||
|
||||
|
||||
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']
|
||||
|
||||
|
||||
|
||||
@@ -28,9 +28,15 @@ class TemplateSchema(ma.ModelSchema):
|
||||
exclude = ("updated_at", "created_at", "service_id")
|
||||
|
||||
|
||||
class ApiTokenSchema(ma.ModelSchema):
|
||||
class Meta:
|
||||
model = models.ApiToken
|
||||
|
||||
user_schema = UserSchema()
|
||||
users_schema = UserSchema(many=True)
|
||||
service_schema = ServiceSchema()
|
||||
services_schema = ServiceSchema(many=True)
|
||||
api_token_schema = ApiTokenSchema()
|
||||
api_tokens_schema = ApiTokenSchema(many=True)
|
||||
template_schema = TemplateSchema()
|
||||
templates_schema = TemplateSchema(many=True)
|
||||
|
||||
@@ -5,7 +5,6 @@ from app.dao.services_dao import (
|
||||
save_model_service, get_model_services, delete_model_service)
|
||||
from app.dao.templates_dao import (
|
||||
save_model_template, get_model_templates)
|
||||
from app.dao.users_dao import get_model_users
|
||||
from app.dao import DAOException
|
||||
from .. import service
|
||||
from app import db
|
||||
@@ -72,6 +71,12 @@ def get_service(service_id=None):
|
||||
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.
|
||||
@service.route('/<int:service_id>/template/', methods=['POST'])
|
||||
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