a
    |fm                     @   s  d dl Z G dd de jZG dd de jZG dd de jZG dd	 d	e jZG d
d de jZG dd de jZG dd de jZG dd de jZ	G dd de jZ
G dd de jZG dd de jZG dd de jZG dd de jZG dd de jZG dd de jZG d d! d!e jZG d"d# d#e jZG d$d% d%e jZG d&d' d'e jZG d(d) d)e jZG d*d+ d+e jZG d,d- d-e jZG d.d/ d/e jZG d0d1 d1eZG d2d3 d3eZG d4d5 d5eZG d6d7 d7eZG d8d9 d9eZdS ):    Nc                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test__LocalStackc                 C   s   ddl m} |S )Nr   )_LocalStack)gcloud._helpersr   )selfr    r   ND:\Projects\storyit_web\backend\venv\Lib\site-packages\gcloud/test__helpers.py_getTargetClass   s    z Test__LocalStack._getTargetClassc                 C   s
   |    S Nr   r   r   r   r   _makeOne   s    zTest__LocalStack._makeOnec                 C   s   t  t   }}|  }| t|g  | |jd u  || | |j|u  || | |j|u  | }| ||u  | |j|u  | t||g | }| |jd u  | t|g  d S r	   )objectr   assertEquallist
assertTruetoppushpop)r   Zbatch1Zbatch2Zbatchespoppedr   r   r   test_it   s    

zTest__LocalStack.test_itN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )	Test__UTCc                 C   s   ddl m} |S )Nr   _UTCr   r   )r   r   r   r   r   r   0   s    zTest__UTC._getTargetClassc                 C   s
   |    S r	   r
   r   r   r   r   r   4   s    zTest__UTC._makeOnec                 C   sZ   ddl m} |  }zdd l}W n$ tyD   | t|j| Y n0 | |j|j d S )Nr   _helpers)	gcloudr   r   pytzImportErrorr   
isinstanceUTCZassertIs)r   ZMUTklassr    r   r   r   test_module_property7   s    zTest__UTC.test_module_propertyc                 C   s,   dd l }|  }| |d |d d S Nr   )datetimer   r   dst	timedeltar   r'   tzr   r   r   test_dstA   s    zTest__UTC.test_dstc                 C   sF   dd l }|j d}| |jd  |  }||}| |j| d S r&   )r'   utcfromtimestampr   tzinfor   fromutc)r   r'   Znaive_epochr+   epochr   r   r   test_fromutcG   s    
zTest__UTC.test_fromutcc                 C   s   |   }| |d d d S Nr#   )r   r   tznamer   r+   r   r   r   test_tznameP   s    zTest__UTC.test_tznamec                 C   s,   dd l }|  }| |d |d d S r&   )r'   r   r   	utcoffsetr)   r*   r   r   r   test_utcoffsetT   s    zTest__UTC.test_utcoffsetc                 C   s   |   }| t|d d S )Nz<UTC>)r   r   reprr4   r   r   r   test___repr__Z   s    zTest__UTC.test___repr__c                 C   s   |   }| t|d d S r2   )r   r   strr4   r   r   r   test___str__^   s    zTest__UTC.test___str__N)r   r   r   r   r   r%   r,   r1   r5   r7   r9   r;   r   r   r   r   r   .   s   
	r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Test__ensure_tuple_or_listc                 C   s   ddl m} |||S )Nr   )_ensure_tuple_or_list)r   r=   )r   arg_nameZtuple_or_listr=   r   r   r   _callFUTe   s    z#Test__ensure_tuple_or_list._callFUTc                 C   s$   d}|  d|}| |g d d S N)abcdARGNAMEr?   r   r   Zvalid_tuple_or_listresultr   r   r   test_valid_tuplei   s    z+Test__ensure_tuple_or_list.test_valid_tuplec                 C   s$   g d}|  d|}| || d S r@   rF   rG   r   r   r   test_valid_listn   s    z*Test__ensure_tuple_or_list.test_valid_listc                 C   s@   t  }| t | d| W d    n1 s20    Y  d S )NrE   r   assertRaises	TypeErrorr?   r   Zinvalid_tuple_or_listr   r   r   test_invalids   s    z'Test__ensure_tuple_or_list.test_invalidc                 C   s>   d}|  t | d| W d    n1 s00    Y  d S )NZFOOrE   )rL   rM   r?   rN   r   r   r   test_invalid_iterablex   s    z0Test__ensure_tuple_or_list.test_invalid_iterableN)r   r   r   r?   rI   rJ   rO   rP   r   r   r   r   r<   c   s
   r<   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test__app_engine_idc                 C   s   ddl m} | S )Nr   )_app_engine_id)r   rR   )r   rR   r   r   r   r?      s    zTest__app_engine_id._callFUTc                 C   s\   ddl m} ddlm} ||d d$ |  }| |d  W d    n1 sN0    Y  d S Nr   _Monkeyr   )Zapp_identity)gcloud._testingrU   r   r   r?   r   )r   rU   r   
dataset_idr   r   r   test_no_value   s
    z!Test__app_engine_id.test_no_valuec                 C   sj   ddl m} ddlm} t }t|}|||d$ |  }| || W d    n1 s\0    Y  d S rS   )rV   rU   r   r   r   _AppIdentityr?   r   )r   rU   r   ZAPP_ENGINE_IDZAPP_IDENTITYrW   r   r   r   test_value_set   s    z"Test__app_engine_id.test_value_setNr   r   r   r?   rX   rZ   r   r   r   r   rQ   ~   s   rQ   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )%Test__get_credentials_file_project_idc                 C   s   ddl m} | S )Nr   )_file_project_id)r   r]   )r   r]   r   r   r   r?      s    z.Test__get_credentials_file_project_id._callFUTc                 C   s   dd l }|jd| _d S Nr   GOOGLE_APPLICATION_CREDENTIALS)osenvirongetold_envr   r`   r   r   r   setUp   s    z+Test__get_credentials_file_project_id.setUpc                 C   s$   dd l }| js d|jv r |jd= d S r^   )r`   rc   ra   rd   r   r   r   tearDown   s
    z.Test__get_credentials_file_project_id.tearDownc              	   C   s   dd l }ddlm} | n}t|jdd@}|d |d |j|jd< | d| 	  W d    n1 sp0    Y  W d    n1 s0    Y  d S )Nr   )_NamedTemporaryFilew)modez!{"project_id": "test-project-id"}r_   test-project-id)
r`   rV   rg   opennamewriteseekra   r   r?   )r   r`   rg   tempZ
creds_filer   r   r   test_success   s    

z2Test__get_credentials_file_project_id.test_successc                 C   s   |  d |   d S r	   r   r?   r   r   r   r   test_no_environment   s    z9Test__get_credentials_file_project_id.test_no_environmentN)r   r   r   r?   re   rf   rp   rr   r   r   r   r   r\      s
   r\   c                   @   sJ   e Zd ZdZdZdZdd Zdd Zdd	d
Zdd Z	dd Z
dd ZdS )$Test__get_default_service_project_idz.config/gcloud/configurations/Zconfig_default c                 C   s   dd l }dd l}| | _|d| _| jr8| j|jd< |j|dddd| _	|j| j| j	}|
| |j|| j| _t| jd}|d W d    n1 s0    Y  d S )Nr   APPDATAz	~/.configr   Zconfigurationsrh   z [core]
project = test-project-id)tempfiler`   mkdtemptemp_config_pathgetenvtemp_APPDATAra   pathjoinconfig_pathmakedirsconfig_filetemp_config_filerk   rm   )r   rv   r`   Z	conf_pathZ	conf_filer   r   r   re      s    

z*Test__get_default_service_project_id.setUpc                 C   s@   dd l }dd l}|j| jr*|| j | jr<| j|jd< d S )Nr   ru   )shutilr`   r{   existsrx   rmtreerz   ra   )r   r   r`   r   r   r   rf      s    z-Test__get_default_service_project_id.tearDownNc                    sh   dd l }ddlm} ddlm} d fdd	}||j|d | W  d    S 1 sZ0    Y  d S )Nr   )_default_service_project_idrT   c                    s    r| rt d jS dS )Npwdrt   )
__import__r   )r{   
project_idr   r   r   mock_expanduser   s    zETest__get_default_service_project_id.callFUT.<locals>.mock_expanduser)
expanduser)N)r`   r   r   rV   rU   r{   )r   r   r`   r   rU   r   r   r   r   callFUT   s    z,Test__get_default_service_project_id.callFUTc                 C   s   |  d}| d| d S )Nrj   )r   r   )r   r   r   r   r   test_read_from_cli_info   s    
z<Test__get_default_service_project_id.test_read_from_cli_infoc                 C   sX   dd l }dd l}|| j z,d |jd< | d}| d | W |jd= n
|jd= 0 d S )Nr   r   rj   )sysr   r   rx   modulesr   r   )r   r   r   r   r   r   r   test_gae_without_expanduser   s    

z@Test__get_default_service_project_id.test_gae_without_expanduserc                 C   s,   dd l }|| j |  }| d | d S r&   )r   r   rx   r   r   )r   r   r   r   r   r   test_info_value_not_present   s    z@Test__get_default_service_project_id.test_info_value_not_present)N)r   r   r   r}   r   rz   re   rf   r   r   r   r   r   r   r   r   rs      s   
rs   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Test__compute_engine_idc                 C   s   ddl m} | S )Nr   )_compute_engine_id)r   r   )r   r   r   r   r   r?      s    z Test__compute_engine_id._callFUTc                    s0   ddl m} ddlm}  fdd}|||dS )Nr   rT   r   c                    s   |  _ | _ S r	   hosttimeoutr   
connectionr   r   _factory  s    z;Test__compute_engine_id._monkeyConnection.<locals>._factory)HTTPConnection)rV   rU   r   r   )r   r   rU   r   r   r   r   r   _monkeyConnection  s    z)Test__compute_engine_id._monkeyConnectionc                 C   sL   t dd }| |$ |  }| |d  W d    n1 s>0    Y  d S )Ni  )_HTTPConnectionr   r?   r   r   r   rW   r   r   r   test_bad_status  s    
z'Test__compute_engine_id.test_bad_statusc                 C   sR   t  }td|}| |$ |  }| || W d    n1 sD0    Y  d S )N   )r   r   r   r?   r   )r   ZCOMPUTE_ENGINE_IDr   rW   r   r   r   rp     s
    
z$Test__compute_engine_id.test_successc                 C   sH   t  }| |$ |  }| |d  W d    n1 s:0    Y  d S r	   )_TimeoutHTTPConnectionr   r?   r   r   r   r   r   test_socket_raises  s    z*Test__compute_engine_id.test_socket_raisesN)r   r   r   r?   r   r   rp   r   r   r   r   r   r      s
   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )Test__get_production_projectc                 C   s   ddl m} | S )Nr   )_get_production_project)r   r   )r   r   r   r   r   r?   "  s    z%Test__get_production_project._callFUTc                 C   s^   dd l }ddlm} i }|||jd$ |  }| |d  W d    n1 sP0    Y  d S )Nr   rT   ry   )r`   rV   rU   rb   r?   r   )r   r`   rU   ra   projectr   r   r   rX   &  s    z*Test__get_production_project.test_no_valuec                 C   st   dd l }ddlm} ddlm} t }||i}|||jd$ |  }| || W d    n1 sf0    Y  d S )Nr   rT   )PROJECTr   )	r`   rV   rU   r   r   r   rb   r?   r   )r   r`   rU   r   ZMOCK_PROJECTra   r   r   r   r   rZ   /  s    z+Test__get_production_project.test_value_setNr[   r   r   r   r   r      s   	r   c                   @   sH   e Zd ZdddZdddZdd Zdd	 Zd
d Zdd Zdd Z	dS )Test__determine_default_projectNc                 C   s   ddl m} ||dS )Nr   )_determine_default_projectr   )r   r   )r   r   r   r   r   r   r?   =  s    z(Test__determine_default_project._callFUTc                    s   ddl m} ddlm} g   fdd}	 fdd}
 fdd	} fd
d} fdd}|	|
|||d}||fi | | |}W d    n1 s0    Y  | fS )Nr   rT   r   c                      s     d S )N	prod_mockappendr   )_callersprodr   r   r   H  s    
zLTest__determine_default_project._determine_default_helper.<locals>.prod_mockc                      s     d S )Nfile_id_mockr   r   )r   file_idr   r   r   L  s    
zOTest__determine_default_project._determine_default_helper.<locals>.file_id_mockc                      s     d S )Nsrv_id_mockr   r   )r   srv_idr   r   r   P  s    
zNTest__determine_default_project._determine_default_helper.<locals>.srv_id_mockc                      s     d S )Ngae_mockr   r   )r   gaer   r   r   T  s    
zKTest__determine_default_project._determine_default_helper.<locals>.gae_mockc                      s     d S )Ngce_mockr   r   )r   gcer   r   r   X  s    
zKTest__determine_default_project._determine_default_helper.<locals>.gce_mock)r   r]   r   rR   r   )rV   rU   r   r   r?   )r   r   r   r   r   r   r   rU   r   r   r   r   r   r   Zpatched_methodsZreturned_projectr   )r   r   r   r   r   r   r   _determine_default_helperA  s"    (z9Test__determine_default_project._determine_default_helperc                 C   s,   |   \}}| |d  | |g d d S )Nr   r   r   r   r   )r   r   )r   r   callersr   r   r   rX   i  s    z-Test__determine_default_project.test_no_valuec                 C   s2   t  }| j|d\}}| || | |g  d S )Nr   r   r   r   r   r   r   r   r   r   r   test_explicito  s    z-Test__determine_default_project.test_explicitc                 C   s4   t  }| j|d\}}| || | |dg d S )N)r   r   r   r   r   r   r   	test_produ  s    z)Test__determine_default_project.test_prodc                 C   s6   t  }| j|d\}}| || | |g d d S )N)r   )r   r   r   r   r   r   r   r   r   test_gae{  s    z(Test__determine_default_project.test_gaec                 C   s6   t  }| j|d\}}| || | |g d d S )N)r   r   r   r   r   r   r   test_gce  s    z(Test__determine_default_project.test_gce)N)NNNNNN)
r   r   r   r?   r   rX   r   r   r   r   r   r   r   r   r   ;  s   
  
(r   c                   @   s   e Zd Zdd Zdd ZdS )Test__millisc                 C   s   ddl m} ||S )Nr   )_millis)r   r   )r   valuer   r   r   r   r?     s    zTest__millis._callFUTc              	   C   sB   dd l }ddlm} |j dddddd|d}| | |d d S )Nr   r#        r.     )r'   r   r#   r   r?   )r   r'   r#   ZWHENr   r   r   test_one_second_from_epoch  s    z'Test__millis.test_one_second_from_epochN)r   r   r   r?   r   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS ) Test__microseconds_from_datetimec                 C   s   ddl m} ||S )Nr   _microseconds_from_datetime)r   r   )r   r   r   r   r   r   r?     s    z)Test__microseconds_from_datetime._callFUTc              	   C   s>   dd l }d}|j dddddd|d}| |}| || d S )Nr   i/ r   r   )hourminutesecondmicrosecondr'   r?   r   )r   r'   microseconds	timestamprH   r   r   r   r     s    
z(Test__microseconds_from_datetime.test_itNr   r   r   r?   r   r   r   r   r   r     s   r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Test__millis_from_datetimec                 C   s   ddl m} ||S )Nr   )_millis_from_datetime)r   r   )r   r   r   r   r   r   r?     s    z#Test__millis_from_datetime._callFUTc                 C   s   |  | d d u  d S r	   )r   r?   r   r   r   r   test_w_none  s    z&Test__millis_from_datetime.test_w_nonec           	      C   sv   dd l }dd l}ddlm} ddlm} |j  j|d}||}|d }| |}| t	||j
 | || d S Nr   r   r   r   r   r'   sixr   r#   r   utcnowreplacer?   r   r"   integer_typesr   )	r   r'   r   r#   r   NOW
NOW_MICROSMILLISrH   r   r   r   test_w_utc_datetime  s    
z.Test__millis_from_datetime.test_w_utc_datetimec           
   	      s   dd l  dd l}ddlm} ddlm} G  fddd|}| } j dddd	d
d|d}||}|d }| |}	| t|	|j | 	|	| d S )Nr   r   r   c                       s   e Zd ZdZ jddZdS )z?Test__millis_from_datetime.test_w_non_utc_datetime.<locals>.CETCEThoursN)r   r   r   _tznamer)   
_utcoffsetr   r'   r   r   r     s   r              "   /   r   r   )
r'   r   r   r   r   r?   r   r"   r   r   )
r   r   r   r   r   zoner   r   r   rH   r   r   r   test_w_non_utc_datetime  s    
z2Test__millis_from_datetime.test_w_non_utc_datetimec           
      C   sz   dd l }dd l}ddlm} ddlm} |j  }|j|d}||}|d }| |}	| t	|	|j
 | |	| d S r   r   )
r   r'   r   r#   r   r   ZUTC_NOWZUTC_NOW_MICROSr   rH   r   r   r   test_w_naive_datetime  s    

z0Test__millis_from_datetime.test_w_naive_datetimeN)r   r   r   r?   r   r   r   r   r   r   r   r   r     s
   r   c                   @   s   e Zd Zdd Zdd ZdS ) Test__datetime_from_microsecondsc                 C   s   ddl m} ||S )Nr   )_datetime_from_microseconds)r   r   )r   r   r   r   r   r   r?     s    z)Test__datetime_from_microseconds._callFUTc              
   C   sX   dd l }ddlm} ddlm} |j dddddd	d
|d}||}| | || d S )Nr   r   r   r   r         -      @ r   )r'   r   r#   r   r   r?   )r   r'   r#   r   r   r   r   r   r   r     s    z(Test__datetime_from_microseconds.test_itNr   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )Test__total_seconds_backportc                 O   s   ddl m} ||i |S )Nr   )_total_seconds_backport)r   r   )r   argskwargsr   r   r   r   r?     s    z%Test__total_seconds_backport._callFUTc                 C   s0   dd l }|jddd}| |}| |d d S )Nr      i" secondsr   gQ	@r'   r)   r?   r   r   r'   offsetrH   r   r   r   r     s    
z$Test__total_seconds_backport.test_itNr   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )Test__total_secondsc                 O   s   ddl m} ||i |S )Nr   )_total_seconds)r   r  )r   r   r   r  r   r   r   r?     s    zTest__total_seconds._callFUTc                 C   s0   dd l }|jddd}| |}| |d d S )Nr   r   i0Q r   g9v?r   r   r   r   r   r     s    
zTest__total_seconds.test_itNr   r   r   r   r   r    s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test__rfc3339_to_datetimec                 C   s   ddl m} ||S )Nr   )_rfc3339_to_datetime)r   r  )r   dt_strr  r   r   r   r?     s    z"Test__rfc3339_to_datetime._callFUTc           	      C   sj   d}d}d}d}d}d}d}d|||||||f }|  t | | W d    n1 s\0    Y  d S N     r   ,       [z%%d-%02d-%02dT%02d:%02d:%02d.%06dBOGUSrL   
ValueErrorr?   	r   yearmonthdayr   r   r   microsr  r   r   r   test_w_bogus_zone  s    z+Test__rfc3339_to_datetime.test_w_bogus_zonec              
   C   sx   dd l }ddlm} d}d}d}d}d}d}d}	d	|||||||	f }
| |
}| |||||||	|}| || d S )
Nr   r   r  r  r   r	  r
  r   z!%d-%02d-%02dT%02d:%02d:%02d.%06dZr'   r   r#   r?   r   )r   r'   r#   r  r  r  r   r   r   r  r  rH   expected_resultr   r   r   test_w_microseconds!  s"    
z-Test__rfc3339_to_datetime.test_w_microsecondsc           	      C   sj   d}d}d}d}d}d}d}d|||||||f }|  t | | W d    n1 s\0    Y  d S )Nr  r  r   r	  r
  r  !%d-%02d-%02dT%02d:%02d:%02d.%09dZr  )	r   r  r  r  r   r   r   nanosr  r   r   r   test_w_naonseconds4  s    z,Test__rfc3339_to_datetime.test_w_naonsecondsN)r   r   r   r?   r  r  r  r   r   r   r   r    s   r  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test__rfc3339_nanos_to_datetimec                 C   s   ddl m} ||S )Nr   )_rfc3339_nanos_to_datetime)r   r  )r   r  r  r   r   r   r?   E  s    z(Test__rfc3339_nanos_to_datetime._callFUTc           	      C   sj   d}d}d}d}d}d}d}d|||||||f }|  t | | W d    n1 s\0    Y  d S r  r  r  r   r   r   r  I  s    z1Test__rfc3339_nanos_to_datetime.test_w_bogus_zonec                 C   s   dd l }ddlm} d}d}d}d}d}d}g d}	|	D ]L\}
}d	|||||||
f }| |}| ||||||||}| || q8d S )
Nr   r   r  r  r   r	  r
  ))Z12345678r   )Z1234567r   )Z123456r   )Z12345i: )1234i )Z123ix )Z12i )1i z%d-%02d-%02dT%02d:%02d:%02d.%sZr  )r   r'   r#   r  r  r  r   r   r   Ztruncateds_and_micros	truncatedr  r  rH   r  r   r   r   test_w_truncated_nanosW  s$    
z6Test__rfc3339_nanos_to_datetime.test_w_truncated_nanosc              
   C   s   dd l }ddlm} d}d}d}d}d}d}d}	|	d	 }
d
|||||||	f }| |}| |||||||
|}| || d S )Nr   r   r  r  r   r	  r
  r  r   r  r  )r   r'   r#   r  r  r  r   r   r   r  r  r  rH   r  r   r   r   r  t  s$    
z2Test__rfc3339_nanos_to_datetime.test_w_naonsecondsN)r   r   r   r?   r  r  r  r   r   r   r   r  C  s   r  c                   @   s@   e Zd Zdd Zedd Zdd Zdd Zd	d
 Zdd Z	dS )Test__datetime_to_rfc3339c                 O   s   ddl m} ||i |S )Nr   )_datetime_to_rfc3339)r   r!  )r   r   r   r!  r   r   r   r?     s    z"Test__datetime_to_rfc3339._callFUTc                    s&   ddl m} G  fddd|}| S )Nr   r   c                       s   e Zd ZdZ ZdS )z5Test__datetime_to_rfc3339._make_timezone.<locals>.CETr   N)r   r   r   r   r   r   r   r   r   r     s   r   r   )r   r   r   r   r"  r   _make_timezone  s    z(Test__datetime_to_rfc3339._make_timezonec              	   C   sJ   dd l }ddlm} |j dddddd|d}| j|d	d
}| |d d S )Nr   r                 r   FZignore_zone2016-04-05T13:30:00.000000Zr  )r   r'   r#   	TIMESTAMPrH   r   r   r   r     s
    z-Test__datetime_to_rfc3339.test_w_utc_datetimec              	   C   s^   dd l }ddlm} | j|jddd}|j dddd	d
d|d}| j|dd}| |d d S )Nr   r   r   r   r"  r$  r%  r&  r'  r(  r   Fr)  z2016-04-05T14:30:00.000000Zr'   r   r   r#  r)   r?   r   r   r'   r   r   r+  rH   r   r   r   r     s    z1Test__datetime_to_rfc3339.test_w_non_utc_datetimec              	   C   sZ   dd l }ddlm} | j|jddd}|j dddd	d
d|d}| |}| |d d S )Nr   r   r   r   r"  r$  r%  r&  r'  r(  r   r*  r,  r-  r   r   r   'test_w_non_utc_datetime_and_ignore_zone  s    
zATest__datetime_to_rfc3339.test_w_non_utc_datetime_and_ignore_zonec                 C   s6   dd l }| dddddd}| |}| |d d S )Nr   r$  r%  r&  r'  r(  r*  r   )r   r'   r+  rH   r   r   r   r     s    
z/Test__datetime_to_rfc3339.test_w_naive_datetimeN)
r   r   r   r?   staticmethodr#  r   r   r.  r   r   r   r   r   r     s   
			r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Test__to_bytesc                 O   s   ddl m} ||i |S )Nr   )	_to_bytes)r   r1  )r   r   r   r1  r   r   r   r?     s    zTest__to_bytes._callFUTc                 C   s   d}|  | || d S )N	   bytes-valrq   r   r   r   r   r   test_with_bytes  s    zTest__to_bytes.test_with_bytesc                 C   s   d}d}|  | || d S )N
string-vals
   string-valrq   r   r   Zencoded_valuer   r   r   test_with_unicode  s    z Test__to_bytes.test_with_unicodec                 C   s2   d}d}|  t| j| | | j|dd| d S )Nu   –s   –zutf-8)encoding)rL   UnicodeEncodeErrorr?   r   r6  r   r   r   test_unicode_non_ascii  s    z%Test__to_bytes.test_unicode_non_asciic                 C   s   t  }| t| j| d S r	   rK   r3  r   r   r   test_with_nonstring_type  s    z'Test__to_bytes.test_with_nonstring_typeN)r   r   r   r?   r4  r7  r:  r;  r   r   r   r   r0    s
   r0  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
Test__bytes_to_unicodec                 O   s   ddl m} ||i |S )Nr   )_bytes_to_unicode)r   r=  )r   r   r   r=  r   r   r   r?     s    zTest__bytes_to_unicode._callFUTc                 C   s   d}d}|  | || d S )Nr2  z	bytes-valrq   r6  r   r   r   r4    s    z&Test__bytes_to_unicode.test_with_bytesc                 C   s   d}d}|  | || d S )Nr5  rq   r6  r   r   r   r7    s    z(Test__bytes_to_unicode.test_with_unicodec                 C   s   t  }| t| j| d S r	   )r   rL   r  r?   r3  r   r   r   r;    s    z/Test__bytes_to_unicode.test_with_nonstring_typeN)r   r   r   r?   r4  r7  r;  r   r   r   r   r<    s   r<  c                   @   s   e Zd Zdd Zdd ZdS )Test__pb_timestamp_to_datetimec                 C   s   ddl m} ||S )Nr   )_pb_timestamp_to_datetime)r   r?  )r   r   r?  r   r   r   r?     s    z'Test__pb_timestamp_to_datetime._callFUTc              
   C   s\   dd l }ddlm} ddlm} |j ddddddd|d}|dd	d
}| | || d S Nr   )	Timestampr   r   r   i  )r  r  r   r   r   r   r.   =   iP )r   r  r'   Zgoogle.protobuf.timestamp_pb2rA  r   r#   r   r?   r   r'   rA  r#   Zdt_stampr   r   r   r   r     s    z&Test__pb_timestamp_to_datetime.test_itNr   r   r   r   r   r>    s   r>  c                   @   s   e Zd Zdd Zdd ZdS )Test__datetime_to_pb_timestampc                 C   s   ddl m} ||S )Nr   )_datetime_to_pb_timestamp)r   rF  )r   whenrF  r   r   r   r?     s    z'Test__datetime_to_pb_timestamp._callFUTc              
   C   s\   dd l }ddlm} ddlm} |j ddddddd|d}|dd	d
}| | || d S r@  rC  rD  r   r   r   r     s    z&Test__datetime_to_pb_timestamp.test_itNr   r   r   r   r   rE     s   rE  c                   @   sH   e Zd ZdZdZdZdd Zdd Zdd	 Zd
d Z	dd Z
dd ZdS )Test__name_from_project_pathr   
THING_NAMEz.projects/(?P<project>\w+)/things/(?P<name>\w+)c                 C   s   ddl m} ||||S )Nr   )_name_from_project_path)r   rJ  )r   r{   r   templaterJ  r   r   r   r?     s    z%Test__name_from_project_path._callFUTc                 C   sB   d}|  t  | |d | j W d    n1 s40    Y  d S )Nzprojects/foo)rL   r  r?   TEMPLATEr   PATHr   r   r   test_w_invalid_path_length  s    z7Test__name_from_project_path.test_w_invalid_path_lengthc                 C   sP   d| j | jf }| t" | || j | j W d    n1 sB0    Y  d S )Nzfoo/%s/bar/%s)r   rI  rL   r  r?   rL  rM  r   r   r   test_w_invalid_path_segments$  s    z9Test__name_from_project_path.test_w_invalid_path_segmentsc                 C   sT   d}d}d|| j f }| t  | ||| j W d    n1 sF0    Y  d S )NPROJECT1PROJECT2projects/%s/things/%s)rI  rL   r  r?   rL  )r   rQ  rR  rN  r   r   r   test_w_mismatched_project)  s
    z6Test__name_from_project_path.test_w_mismatched_projectc                 C   sF   dd l }|| j}d| j| jf }| || j|}| || j d S )Nr   rS  )recompilerL  r   rI  r?   r   )r   rU  rK  rN  rl   r   r   r   "test_w_valid_data_w_compiled_regex0  s
    z?Test__name_from_project_path.test_w_valid_data_w_compiled_regexc                 C   sD   d}d|| j f }| |d | j | |d | j}| || j  d S )NrQ  rS  )rI  r?   rL  r   )r   rQ  rN  rl   r   r   r   test_w_project_passed_as_none7  s
    z:Test__name_from_project_path.test_w_project_passed_as_noneN)r   r   r   r   rI  rL  r?   rO  rP  rT  rW  rX  r   r   r   r   rH    s   rH  c                   @   s   e Zd Zdd Zdd ZdS )rY   c                 C   s
   || _ d S r	   app_id)r   rZ  r   r   r   __init__A  s    z_AppIdentity.__init__c                 C   s   | j S r	   rY  r   r   r   r   get_application_idD  s    z_AppIdentity.get_application_idN)r   r   r   r[  r\  r   r   r   r   rY   ?  s   rY   c                   @   s   e Zd Zdd Zdd ZdS )_HTTPResponsec                 C   s   || _ || _d S r	   )statusdata)r   r^  r_  r   r   r   r[  J  s    z_HTTPResponse.__init__c                 C   s   | j S r	   )r_  r   r   r   r   readN  s    z_HTTPResponse.readN)r   r   r   r[  r`  r   r   r   r   r]  H  s   r]  c                   @   s,   e Zd Zd ZZdd Zdd Zdd ZdS )_BaseHTTPConnectionNc                 C   s   d| _ g | _g | _d S r&   )_close_count_called_args_called_kwargsr   r   r   r   r[  V  s    z_BaseHTTPConnection.__init__c                 K   s    | j ||f | j| d S r	   )rc  r   rd  )r   methodurir   r   r   r   request[  s    z_BaseHTTPConnection.requestc                 C   s   |  j d7  _ d S )Nr   )rb  r   r   r   r   close_  s    z_BaseHTTPConnection.close)r   r   r   r   r   r[  rg  rh  r   r   r   r   ra  R  s   ra  c                       s$   e Zd Z fddZdd Z  ZS )r   c                    s   t t|   || _|| _d S r	   )superr   r[  r^  r   )r   r^  r   	__class__r   r   r[  e  s    z_HTTPConnection.__init__c                 C   s   t | j| jS r	   )r]  r^  r   r   r   r   r   getresponsej  s    z_HTTPConnection.getresponse)r   r   r   r[  rl  __classcell__r   r   rj  r   r   c  s   r   c                   @   s   e Zd Zdd ZdS )r   c                 C   s   dd l }|dd S )Nr   z	timed out)socketr   )r   rn  r   r   r   rl  p  s    z"_TimeoutHTTPConnection.getresponseN)r   r   r   rl  r   r   r   r   r   n  s   r   )Z	unittest2ZTestCaser   r   r<   rQ   r\   rs   r   r   r   r   r   r   r   r   r  r  r  r   r0  r<  r>  rE  rH  r   rY   r]  ra  r   r   r   r   r   r   <module>   s8   5 D%O76F2*	
