
    ӂey                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d Z
 G d de j                        Z G d d	e      Z G d
 dej                        Z G d dej"                        Zy)    N)base)context)fixturec                 f    t        j                  | j                  d            j                         S )Nzutf-8)hashlibmd5encode	hexdigest)names    A/usr/lib/python3/dist-packages/oslo_context/tests/test_context.pygenerate_idr      s#    ;;t{{7+,6688    c                   :     e Zd Zdef fd	Z fdZd Zd Z xZS )WarningsFixturealwaysc                 F    t         t        |           || _        || _        y N)superr   __init__actioncategory)selfr   r   	__class__s      r   r   zWarningsFixture.__init__"   s    ot-/ r   c                 <   t         t        |           t        j                  d      | _        | j
                  j                         | _        | j                  | j
                  j                         t        j                  | j                  | j                         y )NTrecord)r   r   setUpwarningscatch_warnings_w	__enter__log
addCleanup__exit__simplefilterr   r   r   r   s    r   r   zWarningsFixture.setUp'   sd    ot*,))677$$&(()dkk4==9r   c                 ,    t        | j                        S r   )lenr"   r   s    r   __len__zWarningsFixture.__len__.   s    488}r   c                      | j                   |   S r   )r"   )r   items     r   __getitem__zWarningsFixture.__getitem__1   s    xx~r   )	__name__
__module____qualname__DeprecationWarningr   r   r*   r-   __classcell__r   s   @r   r   r       s    &1C !
:r   r   c                       e Zd Zy)ObjectN)r.   r/   r0    r   r   r5   r5   5   s    r   r5   c                   4     e Zd ZdZdgZd fd	Z fdZ xZS )TestContextzA test context with additional members

    This is representative of how at least some of our consumers use the
    RequestContext class in their projects.
    auth_token_infoc                 :    t        t        | 
  di | || _        y )Nr6   )r   r8   r   r9   )r   r9   kwargsr   s      r   r   zTestContext.__init__A   s    k4)3F3.r   c                 J    t         t        |          }| j                  |d<   |S )Nr9   )r   r8   to_dictr9   )r   dr   s     r   r=   zTestContext.to_dictE   s(    +t,.#33
r   r   )r.   r/   r0   __doc__FROM_DICT_EXTRA_KEYSr   r=   r2   r3   s   @r   r8   r8   9   s"    
 ../ r   r8   c                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z" xZ#S )!ContextTestc                     t         t        |           | j                  t	                     | _        | j                  t        j                                y r   )r   rB   r   
useFixturer   r   r   ClearRequestContextr&   s    r   r   zContextTest.setUpM   s8    k4&((9:3356r   c                 N    t        j                         }| j                  |       y r   )r   RequestContext
assertTruer   ctxs     r   test_contextzContextTest.test_contextR   s    $$&r   c                 x    t        j                  d      }| j                  t        j                         |       y )NF	overwriter   rG   assertIsget_currentrI   s     r   test_store_when_no_overwritez(ContextTest.test_store_when_no_overwriteV   s+     $$u5g))+S1r   c                     t        j                  d      }t        j                  d       | j                  t        j                         |       y )NTrM   FrO   r   ctx1s     r   test_no_overwritezContextTest.test_no_overwrite\   s9     %%5/g))+T2r   c                     t        j                  d      }t        j                          | j                  t        j                         |       | j                  |j                         y )NTrM   )r   rG   get_admin_contextrP   rQ   assertFalseis_adminrT   s     r   test_admin_no_overwritez#ContextTest.test_admin_no_overwritec   sI     %%5!!#g))+T2'r   c                 t    t        j                         }| j                  t        j                         |       y r   rO   rI   s     r   test_store_currentzContextTest.test_store_currentk   s'    $$&g))+S1r   c                 J    | j                  t        j                                y r   )assertIsNoner   rQ   r)   s    r   test_no_contextzContextTest.test_no_contextp   s    '--/0r   c                    t        j                         }| j                  |t         j                         | j	                  |j
                         | j                  |j                         | j                  |j                         y r   )
r   rX   assertIsInstancerG   rH   rZ   rY   show_deletedr_   
project_idrI   s     r   ,test_admin_context_show_deleted_flag_defaultz8ContextTest.test_admin_context_show_deleted_flag_defaults   s\    '')c7#9#9:%))*#..)r   c                     t        j                  d      }| j                  |j                         | j                  |j                         y )NT)rc   )r   rX   rH   rZ   rc   rI   s     r   (test_admin_context_show_deleted_flag_setz4ContextTest.test_admin_context_show_deleted_flag_setz   s4    ''T:%(()r   c                    i ddddddddd	d
dddddddddddddddddddddddd d!d"d#}t         j                  j                  |      }| j                  |d   |j                         | j                  |d   |j
                         | j                  |d   |j                         | j                  |d   |j                         | j                  |d   |j                         | j                  |d   |j                         | j                  |j                         | j                  |j                         | j                  |j                         | j                  |d   |j                         | j                  |d   |j                         | j                  |d   |j                          | j                  |d   |j"                         | j                  |d	   |j$                         | j                  |d   |j&                         | j                  |d   |j(                         | j                  |d   |j*                         | j                  |d$   |j,                         y )%N
auth_tokentoken1useruser1	user_name
user1_namerd   tenant1project_nametenant1_namedomaindomain1domain_namedomain1_nameuser_domainuser_domain1user_domain_nameuser_domain1_nameproject_domainproject_domain1project_domain_nameproject_domain1_namerZ   T	read_onlyrc   
request_idrequest1global_request_idzreq-uuidresource_uuid	instance1fooall)
extra_datasystem_scoper   )r   rG   	from_dictassertEqualri   user_idrd   	domain_iduser_domain_idproject_domain_idrH   rZ   r~   rc   r   r   r   rm   rp   rt   rx   r|   r   r   dctrJ   s      r   test_from_dictzContextTest.test_from_dict   s   
(
G
 
 )	

 N
 i
 >
 >
  3
 /
 "#9
 
 
 D
 *
   !
" [#
$  !'
* $$..s3\*CNN;Vckk2\*CNN;X6]+S-?-?@-.0E0EF%&(()\*CNN;0133H3HI_-s/@/@A[)3==9^,c.>.>?]+S__=/0#2F2FG23S5L5LM^,c.>.>?r   c                    ddddddd}t         j                  j                  |      | j                  dj                         | j                  dj
                         | j                  j                         | j                  j                         | j                  j                         | j                  t        fd       y )	Nrj   rl   Trole1,role2,role3red ri   rk   r~   rolescolorunknownc                  "     j                   d   S )Nr   )__dict__)rJ   s   r   <lambda>z9ContextTest.test_from_dict_unknown_keys.<locals>.<lambda>   s    CLL,A r   )r   rG   r   r   ri   r   r_   rd   rY   rZ   rH   r~   assertRaisesKeyErrorr   s     @r   test_from_dict_unknown_keysz'ContextTest.test_from_dict_unknown_keys   s    "(
 $$..s33>>2#++.#..)&&($ABr   c                    ddddddd}t         j                  j                  |dd	
      }| j                  d|j                         | j                  d|j
                         | j                  d	|j                         | j                  |j                         | j                  |j                         | j                  |j                         y )Nrj   rl   Tr   r   r   r   user2project1)rk   rp   )r   rG   r   r   ri   rk   rp   r_   rd   rY   rZ   rH   r~   r   s      r   test_from_dict_overridesz$ContextTest.test_from_dict_overrides   s    "(
 $$..s4;<F / H 	3>>2#((+S%5%56#..)&&r   c                     t        d      }|j                         }t         j                  |      }| j                  d|j                         | j                  ||j                                y )Nr   r9   )r8   r=   r   r   r9   )r   initialr   finals       r   test_from_dict_extendedz#ContextTest.test_from_dict_extended   sT    e4oo%%c* 5 56emmo.r   c                 |   | j                  t        j                  d              t        j                  d      }| j                  t        j                  |             t        j                  d      }| j	                  t        j                  |             | j                  t        j                  d             y )NT)rZ   Fznon context object)rY   r   is_user_contextrG   rH   rI   s     r   test_is_user_contextz ContextTest.test_is_user_context   s    0067$$d30056$$e4//45001EFGr   c                    t        j                         j                  }t        j                         j                  }t        |      }t        j                         j                  }t        |      }t        j                         j                  }t        |      }t        j                         j                  }t        |      }	t        j                         j                  }
t        |
      }t        j                         j                  t        j                         j                  t        j                         j                  g}t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  t        j                         j                  t        j                         j                  g}i d|d|d|d|d|	d|ddj	                  |      d	|d
|d|d|
d|d|d|d|d|d||||dj	                  |      ||d}t
        j                  j                  |      }| j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  |	|j                         | j                  ||j                          | j                  ||j"                         | j                  |
|j$                         | j                  ||j&                         | j                  ||j(                         | j                  ||j*                         | j                  ||j,                         | j                  ||j.                         | j                  ||j0                         | j                  ||j2                         | j                  ||j4                         | j                  ||j6                         | j                  ||j8                         | j                  ||j:                         | j                  ||j<                         | j                  ||j>                         y )NHTTP_X_AUTH_TOKENHTTP_X_USER_IDHTTP_X_PROJECT_IDHTTP_X_DOMAIN_IDHTTP_X_USER_DOMAIN_IDHTTP_X_PROJECT_DOMAIN_IDHTTP_X_ROLES,HTTP_X_USER_NAMEHTTP_X_PROJECT_NAMEHTTP_X_USER_DOMAIN_NAMEHTTP_X_PROJECT_DOMAIN_NAMEHTTP_X_SERVICE_TOKENHTTP_X_SERVICE_USER_IDHTTP_X_SERVICE_USER_NAMEHTTP_X_SERVICE_USER_DOMAIN_IDHTTP_X_SERVICE_USER_DOMAIN_NAMEHTTP_X_SERVICE_PROJECT_ID)HTTP_X_SERVICE_PROJECT_NAME HTTP_X_SERVICE_PROJECT_DOMAIN_ID"HTTP_X_SERVICE_PROJECT_DOMAIN_NAMEHTTP_X_SERVICE_ROLESzopenstack.request_idzopenstack.global_request_id) uuiduuid4hexr   joinr   rG   from_environr   ri   r   rm   rd   r   rp   r   rx   r   r|   r   r   r   service_tokenservice_user_idservice_user_nameservice_user_domain_idservice_user_domain_nameservice_project_idservice_project_nameservice_project_domain_idservice_project_domain_nameservice_roles)r   ri   rm   r   rp   rd   rt   r   rx   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   environrJ   s                              r   test_from_environ_variablesz'ContextTest.test_from_environ_variables   s   ZZ\%%
JJL$$	i(zz|'' .
jjl&&,	::<++$%56"jjl..'(;<!!4::<#3#3TZZ\5E5EFZZ\%%
 JJL,,

((**,** JJL,,!%!1!1#'::<#3#3 !ZZ\--#zz|//$(JJL$4$4!&*jjl&6&6#))4::<+;+;TZZ\=M=MN

g
  
 		

 $^
 '(9
 CHHUO
 	
 "<
 &'7
 )*=
 #M
 %o
 '(9
 ,-C
  ./G!
" ();#
$ ,@0I2M$'HH]$;$.+</
4 $$11':S^^4#++.CMM2S^^4CMM2s'7'78););<)3+?+?@*C,A,AB,c.E.EF		*S^^4*C,A,AB(9(9:#*=*=>*C,A,AB/1K1KL155	7+S-C-CD-s/G/GH266	8488	:(9(9:r   c                     t         j                  j                  i       }| j                  g |j                         t         j                  j                  ddi      }| j                  g |j                         y )Nr   r   r   )r   rG   r   r   r   rI   s     r   test_from_environ_no_rolesz&ContextTest.test_from_environ_no_roles-  sa    $$11"1=SYY'$$11>2:N1OSYY'r   c                 B   t        j                         j                  }d|i}t        j                  j                  |      }| j                  ||j                         d|i}t        j                  j                  |      }| j                  ||j                         d|i}t        j                  j                  |      }| j                  ||j                         d|i}t        j                  j                  |      }| j                  ||j                         d|i}t        j                  j                  |      }| j                  |g|j                         d|i}t        j                  j                  |      }| j                  ||j                         y )NHTTP_X_USERr   HTTP_X_TENANT_IDHTTP_X_STORAGE_TOKENHTTP_X_TENANTHTTP_X_ROLEHTTP_X_TENANT_NAME)r   r   r   r   rG   r   r   rk   rd   ri   r   rp   )r   valuer   rJ   s       r   &test_from_environ_deprecated_variablesz2ContextTest.test_from_environ_deprecated_variables4  sa   

   %($$11'1B)%u-$$11'1B/)51$$11'1B/"E*$$11'1B/ %($$11'1B%#)),'/$$11'1B 0 01r   c                 2   t        j                         j                  }t        j                         j                  }t        j                         j                  }||d}t        j                  j                  |      }| j                  ||j                         t        j                  j                  ||      }| j                  ||j                         ||d}t        j                  j                  |      }| j                  ||j                         t        j                  j                  ||      }| j                  ||j                         ||d}t        j                  j                  |      }| j                  ||j                         y )N)r   r   r   )r   rk   )r   r   )r   rd   )r   r   )
r   r   r   r   rG   r   r   rk   rd   rp   )r   oldnewoverrider   rJ   s         r   (test_from_environ_deprecated_precendencez4ContextTest.test_from_environ_deprecated_precendenceO  sU   jjljjl::<##"%%(* $$11'1Bchh'$$11'7? 2 A388,$'(+- $$11'1Bcnn-$$11'=E 2 G3>>2),*-/ $$11'1Bc../r   c                     ddd}t         j                  j                  |      }| j                  g d|j                         | j                  g d|j
                         y )Nz abc	,
def
,ghi

z jkl	,
mno
,pqr

)r   r   r   )abcdefghi)jklmnopqr)r   rG   r   r   r   r   r   r   rJ   s      r   test_from_environ_strip_rolesz)ContextTest.test_from_environ_strip_rolesn  sU    #;+CE$$11'1B.		:.0A0ABr   c                 R   i }t         j                  j                  |      }| j                  d|j                         | j                  d|j                         d          ddi}t         j                  j                  |      }| j                  d|j                         | j                  d|j                         d          ddi}t         j                  j                  |      }| j                  d|j                         | j                  d|j                         d          y )Nr   Tis_admin_projectHTTP_X_IS_ADMIN_PROJECTTrueFalseF)r   rG   r   rP   r   to_policy_valuesr   s      r   test_environ_admin_projectz&ContextTest.test_environ_admin_projectu  s    $$11'1BdC001dC0023EFG,f5$$11'1BdC001dC0023EFG,g6$$11'1BeS112eS1134FGHr   c                     t        j                  d      }g }t        |d      }t         j                  }t        j                  |||      }| j	                  ||       y )Nrl   )rk   s)cr   )r   rG   dict"get_context_from_function_and_argsrP   )r   rJ   argkwfnrU   s         r   test_from_function_and_argsz'ContextTest.test_from_function_and_args  sP    $$'2C37799"c2FdC r   c                     g }t               }t        j                  }t        j                  |||      }| j                  |       y r   )r   r   r   r_   )r   r   r   r   rU   s        r   "test_not_in_from_function_and_argsz.ContextTest.test_not_in_from_function_and_args  s;    V7799"c2F$r   c           	      6   d}d}t        |      }d}t        |      }d}t        |      }d}t        |      }	d}
t        |
      }d}d}d}d}d	}d
}t        j                  d i d|d|d|d|d|d|d|d|	d|d|d|
d|d|d|d|d|d|}| j                  ||j                         | j                  ||j
                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  |	|j                         | j                  ||j                         | j                  ||j                         | j                  |
|j                         | j                  ||j                         | j                  ||j                          | j                  ||j"                         | j                  ||j$                         | j                  ||j&                         |j)                         }| j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j-                  d|       | j-                  d|       | j-                  d|       | j-                  d|       | j-                  d|       | j                  ||d          | j                  ||d          | j                  ||d          | j                  |	|d          | j                  ||d          | j                  ||d          | j                  ||d          | j                  ||d          | j                  ||d          | j                  ||d          |d|d|d|	d|	}| j                  ||d          | j                  g |d          |j/                         }| j+                  d|       | j                  |d   d       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j+                  d|       | j                  ||d          | j                  ||d          | j                  ||d          | j                  ||d          | j                  |
|d          y )!Nrj   u	   John Gāoro   rs   rw   r{   Tid1zreq-id1uuid1ri   rk   rm   rd   rp   rr   rt   rv   rx   rz   r|   rZ   r~   rc   r   r   r   user_identityr    z***r6   )r   r   rG   r   ri   r   rm   rd   rp   r   rt   r   rx   r   r|   rZ   r~   rc   r   r   r=   assertInassertNotInget_logging_values)r   ri   rm   r   rp   rd   rt   r   rx   r   r|   r   rZ   r~   rc   r   r   r   rJ   r>   r  s                        r   test_valueszContextTest.test_values  sP   
 	i(  .
,	)$%56/'(;<	
%$$ B
 B*1B/8B 1;B 3?	B
 -6B 2=B 2@B 7GB 5FB :MB /7B 09B 3?B 1;B 8IB  4A!B" 	S^^4#++.CMM2S^^4s'7'78CMM2coo6););<)3+?+?@*C,A,AB,c.E.EF3<<0CMM2s'7'78S^^4(9(9:KKMlA&fa lA&h"mQ'&*j!$k1%na(lA&oq)oq)gq!a(+*+Q/.2Q|_5Q|_5AhK0=)9:*A.>,?@1Z=1AkN3q'89Q|_5/(:;,3Z,:<MO/(:;QwZ(""$lA&<%0fa lA&h"mQ'&*j!$k1%na(lA&)1-oq)oq)gq!k1%na(mQ'(!,+Q/AkN3q'89a&67)1-?+@A,a0E.FGr   c                 d    t        ddi      }|j                         }| j                  d|       y )Nri   	topsecretr   r9   )r8   r  r  r   rJ   r>   s      r   +test_auth_token_info_removed_logging_valuesz7ContextTest.test_auth_token_info_removed_logging_values	  s0    <*EF""$*A.r   c                 H   d}t        ddidd|      }|j                         }| j                  |j                         | j                  |j                         | j                  |j
                         | j                  ||j                         | j                  ||       y )Nr   ri   r	  12345678901234)r9   r   ri   r   )	r8   redacted_copyr_   r9   r   ri   r   r   assertNotEqual)r   useridrJ   	safe_ctxts       r   -test_auth_token_info_removed_redacted_contextz9ContextTest.test_auth_token_info_removed_redacted_context  s    );7# 	
 %%'	)334)112)../!2!23C+r   c                 v    t        j                         }|j                         }| j                  d|d          y )Nz	- - - - -r  )r   rG   r=   r   r
  s      r   test_dict_empty_user_identityz)ContextTest.test_dict_empty_user_identity  s0    $$&KKMa&89r   c                 V    t        j                         }| j                  d|d d        y )Nzreq-   )r   generate_request_idr   )r   ids     r   test_generate_request_idz$ContextTest.test_generate_request_id!  s&    ((*BQ(r   c                 x    t        j                         }t        j                         }| j                  ||       y r   )r   r  r  )r   r   id2s      r   test_generate_request_id_uniquez+ContextTest.test_generate_request_id_unique%  s.    ))+))+C%r   c                     t        j                         }| j                  |j                         |j	                         }| j                  |d          y )Nr   )r   rG   r_   r   r=   r
  s      r   test_no_global_id_by_defaultz(ContextTest.test_no_global_id_by_default*  sC    $$&#//0KKM!/01r   c                 f   t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  t        j                         j                  t        j                         j                  g}t        j                         j                  }t        j                         j                  }t        j                         j                  t        j                         j                  t        j                         j                  g}t        j                  ||||||||      }	| j                  ||d d |||d|d |d |d|	j                                d}
t        j                  |||
||||      }	| j                  |||
d d d |d|d |d |d|	j                                t        j                         j                  }t        j                  |||||||      }	| j                  ||d |d d |d|d |d |d|	j                                t        j                  |||||d|||	      }	| j                  ||d d |||d|d |d |d|	j                                y )	N)rk   rv   rd   rz   r   r   r   r   T)r   r   r   r   rd   r   r   r   r   r   r   r   r   r   )rk   rv   r   r   r   r   r   )rk   rv   r   r   r   r   r   F)	rk   rv   rd   rz   r   r   r   r   r   )r   r   r   r   rG   r   r   )r   rk   rv   rd   rz   r   r   r   r   rJ   
system_allr   s               r   test_policy_dictzContextTest.test_policy_dict0  s   zz|jjl&&ZZ\%%
))!!4::<#3#3TZZ\5E5EF**,**!ZZ\--))4::<+;+;TZZ\=M=MN $$$1<0:4B+05D8J3@B 	T,7*.'+(2/=#(.2-<480B7;+8: --/	1" 
$$$1<2<+05D8J3@B 	T,7*4'+(,/3#(.2-<480B7;+8: --/	1  JJL$$	$$$1</8+05D8J3@B 	T,7*.'0(,/3#(.2-<480B7;+8: --/	1 $$$1<0:4B+06;5D8J3@B 	T,7*.'+(2/=#(.3-<480B7;+8: --/	1r   c                    t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  t        j                         j                  t        j                         j                  g}t        j                  |||||      }|j                         }t        j                         j                  }t        j                         j                  }	t        j                  d      5 }
t        j                  d       |	||<   | j                  dt        |
             | j                  |	||          | j                  dt        |
             | j                  |t        |
d   j                               d d d        y # 1 sw Y   y xY w)N)rk   rv   rd   rz   r   Tr   r   r      )r   r   r   r   rG   r   r   r   r%   r   r(   rP   r  strmessage)r   rk   rv   rd   rz   r   rJ   policykeyvalws              r   test_policy_deprecationsz$ContextTest.test_policy_deprecations  s[   zz|jjl&&ZZ\%%
))!!4::<#3#3TZZ\5E5EF$$$1<0:4B+0	2 %%'jjljjl$$D1 
	2Q!!(+ F3KQA' MM#vc{+QA'MM#s1Q4<<01
	2 
	2 
	2s   BG%%G.c                    t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                         j                  }t        j                  |||||      }| j                  dt        | j                               | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  ||j                         | j                  dt        | j                               | j                  ||j                         | j                  dt        | j                               | j                  ||j                         | j                  dt        | j                               | j                  ||j                         | j                  dt        | j                               | j                  ||j                          | j                  dt        | j                               y )N)r   rd   r   r   r   r   r$        r  )r   r   r   r   rG   r   r(   r   r   rd   r   r   r   rk   rr   rv   rz   )r   r   rd   r   r   r   rJ   s          r   test_deprecated_argsz ContextTest.test_deprecated_args  s   **,""ZZ\%%
JJL$$	)) JJL,,$$W0:/84B7H	J 	C./#++.S^^4CMM2););<*C,A,ABC./#((+C./CJJ/C./9C./*C,>,>?C./r   )$r.   r/   r0   r   rK   rR   rV   r[   r]   r`   re   rg   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r"  r+  r/  r2   r3   s   @r   rB   rB   K   s    7
23(2
1**
(@TC"'&/HO;b(260>CI ! sHj/
,:
)&
2n1`2:0r   rB   )fixturesr   r   r   oslotestr   	test_baseoslo_contextr   r   r   Fixturer   objectr5   rG   r8   BaseTestCaserB   r6   r   r   <module>r7     se   "     &    9h&& *	V 	'(( $N
0)(( N
0r   