Fix proton integration issues (#1071)

* Fix proton integration issues

* Make external_user_id non nullable

* Fix tests
This commit is contained in:
Carlos Quintana 2022-06-10 16:21:56 +02:00 committed by GitHub
parent a0a92a7562
commit 56ec95bc93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 41 additions and 5 deletions

View File

@ -75,9 +75,6 @@ def get_proton_linked_account() -> Optional[str]:
except ProtonPartnerNotSetUp:
return None
if current_user.partner_id != proton_partner_id:
return None
# It has. Retrieve the information for the PartnerUser
proton_linked_account = PartnerUser.get_by(
user_id=current_user.id, partner_id=proton_partner_id

View File

@ -3142,7 +3142,7 @@ class PartnerUser(Base, ModelMixin):
partner_id = sa.Column(
sa.ForeignKey("partner.id", ondelete="cascade"), nullable=False, index=True
)
external_user_id = sa.Column(sa.String(128), unique=False, nullable=True)
external_user_id = sa.Column(sa.String(128), unique=False, nullable=False)
partner_email = sa.Column(sa.String(255), unique=False, nullable=True)
user = orm.relationship(User, foreign_keys=[user_id])

View File

@ -1,4 +1,5 @@
from abc import ABC, abstractmethod
from arrow import Arrow
from dataclasses import dataclass
from http import HTTPStatus
from requests import Response, Session
@ -96,7 +97,10 @@ class HttpProtonClient(ProtonClient):
if plan_value == PLAN_FREE:
plan = SLPlan(type=SLPlanType.Free, expiration=None)
elif plan_value == PLAN_PREMIUM:
plan = SLPlan(type=SLPlanType.Premium, expiration=info["PlanExpiration"])
plan = SLPlan(
type=SLPlanType.Premium,
expiration=Arrow.fromtimestamp(info["PlanExpiration"], tzinfo="utc"),
)
else:
raise Exception(f"Invalid value for plan: {plan_value}")

View File

@ -0,0 +1,33 @@
"""make external_user_id non nullable
Revision ID: 36646e5dc6d9
Revises: 82d3c7109ffb
Create Date: 2022-06-10 16:07:11.538577
"""
import sqlalchemy_utils
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = '36646e5dc6d9'
down_revision = '82d3c7109ffb'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('partner_user', 'external_user_id',
existing_type=sa.VARCHAR(length=128),
nullable=False)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.alter_column('partner_user', 'external_user_id',
existing_type=sa.VARCHAR(length=128),
nullable=True)
# ### end Alembic commands ###

View File

@ -5,6 +5,7 @@ from tests.utils import create_new_user, random_email
def test_generate_partner_subscription(flask_client):
external_user_id = random_string()
partner = Partner.create(
name=random_string(10),
contact_email=random_email(),
@ -15,6 +16,7 @@ def test_generate_partner_subscription(flask_client):
user_id=user.id,
partner_id=partner.id,
partner_email=random_email(),
external_user_id=external_user_id,
commit=True,
)