o
    Y\j                     @  s  d Z ddlmZ ddlZddlZddlmZ ee j	d Z
ejdee
 ejdZedur;eeds;ejd= ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZm Z m!Z!m"Z"m#Z#m$Z$ G dd dej%Z&e'dkrej(dd dS dS )z3Standalone subscription and app-entitlement checks.    )annotationsN)Path   platform__path__)create_engine)Session)
StaticPool)Base)service)AppPlanTenant	TenantAppTenantLimitTenantSubscriptionc                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
EntitlementChecksc                   s:  t ddditdd _tj j tj _t	j _
tj _tj _ fddt_ fddt	_d	d t_d
d t_t jddR}|tdddd |tddddddd |tdddddd |tdddddd |tdddd |tdd dddd |  W d    d S 1 sw   Y  d S ) Nz	sqlite://check_same_threadFT)connect_args	poolclassfuturec                        t  jddS NTr   r   engine selfr   ?/var/www/html/flask_server/tests/platform/entitlement_checks.py<lambda>.       z)EntitlementChecks.setUp.<locals>.<lambda>c                     r   r   r   r   r   r   r   r    /   r!   c                 S  s   t ddddd i S )NSnapshotr   to_dictc                 S  s   ddddddS )Nstorage_bytesr      	available)metricused_mbremaining_mblimit_mbstatusr   r   r   r   r   r    1   s   z;EntitlementChecks.setUp.<locals>.<lambda>.<locals>.<lambda>)type)	tenant_idr   r   r   r    0   s    c                   S  s   dddddS )NstripeF)providerready_for_webhooksprices_configuredlive_payments_enabledr   r   r   r   r   r    6   s   r   zplan-azPlan A)plan_idcodenametenant-azTenant Aactive)r-   slugr5   r+   	is_activer3   allowed-appzAllowed Appzapps.allowedz/api/v1/allowed-app)app_iddisplay_namemodule_pathroute_prefixr9   sub-amanual)subscription_idr-   r3   r/   r+   )r-   r;   
is_enabled
storage_mbr%   block)r-   r;   
limit_namelimit_valueoverage_policy)r   r	   r   r
   metadata
create_allr   get_control_plane_sessionoriginal_session_factoryquota_serviceoriginal_quota_session_factoryget_storage_snapshotoriginal_storage_snapshotstripe_readinessoriginal_stripe_readinessr   addr   r   r   r   r   r   commit)r   sessionr   r   r   setUp"   sr   


		
	"zEntitlementChecks.setUpc                 C  s.   | j t_| jt_| jt_| jt_| j	
  d S )N)rK   r   rJ   rM   rL   rO   rN   rQ   rP   r   disposer   r   r   r   tearDownd   s
   zEntitlementChecks.tearDownc                 C  sN   t d}| |d d  | |d d d  | d|d d	 d
  d S )Nr6   subscriptionr7   appsr   enabledr%   limitsrC   value)r   get_effective_entitlements
assertTrueassertEqual)r   payloadr   r   r   *test_active_subscription_enables_bound_appk   s   
z<EntitlementChecks.test_active_subscription_enables_bound_appc                 C  s^   t | jdd}|td}d|_|  W d    n1 sw   Y  | tdd d S )NTr   r?   canceledr6   r:   )	r   r   getr   r+   rS   assertFalser   subscription_allows_app)r   rT   rX   r   r   r   -test_inactive_subscription_disables_bound_appq   s   
z?EntitlementChecks.test_inactive_subscription_disables_bound_appN)__name__
__module____qualname__rU   rW   ra   rf   r   r   r   r   r   !   s
    Br   __main__)	verbosity))__doc__
__future__r   sysunittestpathlibr   __file__resolveparentsPROJECT_ROOTpathinsertstrmodulesrc   loaded_platformhasattr
sqlalchemyr   sqlalchemy.ormr   sqlalchemy.poolr	   	config.dbr
   platform.entitlementsr   platform.quotasrL   platform.tenants.modelsr   r   r   r   r   r   TestCaser   rg   mainr   r   r   r   <module>   s*     
X