Skip to content

Commit

Permalink
Merge pull request #3 from cloudblue/LITE-29259-create-credential-dat…
Browse files Browse the repository at this point in the history
…a-model

LITE-29259 Create credential data model
  • Loading branch information
akodelia authored Jan 4, 2024
2 parents a25f8eb + d9bc69e commit ba9af09
Show file tree
Hide file tree
Showing 4 changed files with 80 additions and 0 deletions.
20 changes: 20 additions & 0 deletions connect_bi_reporter/credentials/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
from datetime import datetime

import sqlalchemy as db

from connect_bi_reporter.db import Model


class Credential(Model):
__tablename__ = "credential"

PREFIX = 'CRED'

id = db.Column(db.String(20), primary_key=True)
name = db.Column(db.String(64), nullable=False)
connection_string = db.Column(db.String(256), nullable=False)
account_id = db.Column(db.String(20), nullable=False)
created_at = db.Column(db.DateTime(), default=datetime.utcnow)
created_by = db.Column(db.String(20))
updated_at = db.Column(db.DateTime(), onupdate=datetime.utcnow, default=datetime.utcnow)
updated_by = db.Column(db.String(20))
5 changes: 5 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,13 @@

from contextlib import contextmanager

from pytest_factoryboy import register
from sqlalchemy import event
from connect.client import AsyncConnectClient, ConnectClient
from connect.eaas.core.inject.models import Context

from .database import Session
from .factories import CredentialFactory
from connect_bi_reporter.db import (
create_db,
get_db,
Expand Down Expand Up @@ -123,3 +125,6 @@ def api_client(test_client_factory, dbsession):
get_db: lambda: dbsession,
}
yield client


register(CredentialFactory)
36 changes: 36 additions & 0 deletions tests/credential/test_models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from datetime import datetime


def test_create_credential(dbsession, credential_factory):
credential_model = credential_factory._meta.model
assert not dbsession.query(credential_model).all()
credential = credential_model(
name='My cred',
account_id='PA-000-000',
connection_string='core.windows.net',
)
dbsession.add_with_verbose(credential)
dbsession.commit()
dbsession.refresh(credential)
assert credential.id.startswith(credential_model.PREFIX)
assert credential.name == 'My cred'
assert credential.connection_string == 'core.windows.net'
assert isinstance(credential.created_at, datetime)


def test_update_credential(dbsession, credential_factory):
credential = credential_factory()
assert credential.name.startswith('Credential')
previous_update = credential.updated_at
credential.name = 'New name'
dbsession.add(credential)
dbsession.commit()
assert credential.name == 'New name'
assert credential.updated_at != previous_update


def test_delete_credential(dbsession, credential_factory):
credential = credential_factory()
assert dbsession.query(credential_factory._meta.model).count() == 1
dbsession.delete(credential)
assert not dbsession.query(credential_factory._meta.model).all()
19 changes: 19 additions & 0 deletions tests/factories.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import factory

from .database import Session
from connect_bi_reporter.credentials.models import Credential
from connect_bi_reporter.db import _generate_verbose_id


class BaseFactory(factory.alchemy.SQLAlchemyModelFactory):
Expand All @@ -12,3 +14,20 @@ class Meta:
abstract = True
sqlalchemy_session = Session
sqlalchemy_session_persistence = "commit"


class CredentialFactory(BaseFactory):
class Meta:
model = Credential

id = factory.Sequence(lambda _: _generate_verbose_id(Credential.PREFIX))
name = factory.Sequence(lambda n: f'Credential {n}')
connection_string = factory.Sequence(
lambda n: (
f'DefaultEndpointsProtocol=https;AccountName={n};'
f'AccountKey={n};EndpointSuffix=core.windows.net'
),
)
account_id = factory.Sequence(lambda n: f'PA-{n}')
created_by = factory.Sequence(lambda n: f'SU-{n}')
updated_by = factory.Sequence(lambda n: f'SU-{n}')

0 comments on commit ba9af09

Please sign in to comment.