
    Ib                         d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
  G d d      Z G d	 d
e	      Z G d de	      Zy)zTest the terminal service API.    N)	HTTPError)Config)url_path_join)NotebookTestBaseassert_http_errorc                   6    e Zd ZdZd Zd	dZd Zd Zd Zd Z	y)
TerminalAPIz&Wrapper for terminal REST API requestsc                 .    || _         || _        || _        y N)requestbase_urlheaders)selfr   r   r   s       L/usr/lib/python3/dist-packages/notebook/terminal/tests/test_terminals_api.py__init__zTerminalAPI.__init__   s         Nc                     | j                  |||      }d|j                  cxk  rdk  rn n	 |j                         d   |_        |j	                          |S #  Y xY w)N)data  iX  message)r   status_codejsonreasonraise_for_status)r   verbpathbodyresponses        r   _reqzTerminalAPI._req   s]    <<d<6(&&,,"*--/)"< 	!!#	s   A Ac                 &    | j                  dd      S NGETapi/terminalsr   r   s    r   listzTerminalAPI.list   s    yy00r   c                 :    | j                  dt        d|            S r!   r   r   r   names     r   getzTerminalAPI.get"   s    yyot DEEr   c                 &    | j                  dd      S )NPOSTr#   r$   r%   s    r   startzTerminalAPI.start%   s    yy11r   c                 :    | j                  dt        d|            S )NDELETEr#   r(   r)   s     r   shutdownzTerminalAPI.shutdown(   s    yy=$#GHHr   r   )
__name__
__module____qualname____doc__r   r   r&   r+   r.   r1    r   r   r	   r	      s%    0

1F2Ir   r	   c                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TerminalAPITestz"Test the terminals web service APIc                 v    t        | j                  | j                         | j                               | _        y N)r   r   r	   r   r   auth_headersterm_apir%   s    r   setUpzTerminalAPITest.setUp.   )    #DLL+/==?*.*;*;*=$r   c                     | j                   j                         j                         D ]   }| j                   j                  |d          " y Nr*   r=   r&   r   r1   r   ks     r   tearDownzTerminalAPITest.tearDown4   =    ##%**, 	.AMM""1V9-	.r   c                 x    | j                   j                         j                         }| j                  |g        y r   )r=   r&   r   assertEqual)r   	terminalss     r   test_no_terminalsz!TerminalAPITest.test_no_terminals8   s-    MM&&(--/	B'r   c                     | j                   j                  dd      }|j                         }| j                  |j                  d       | j                  |t               y )Nr-   r#      )r=   r   r   rH   r   assertIsInstancedict)r   rterm1s      r   test_create_terminalz$TerminalAPITest.test_create_terminal=   sG    MMv7,eT*r   c                    | j                   j                  dd      }| j                  |j                  d       | j                   j	                  d      }|j                         }| j                  |j                  d       | j                  |t               | j                  |d   d       | j                   j                  dd      }| j                  |j                  d       | j                   j	                  d      }|j                         }| j                  |j                  d       | j                  |t               | j                  |d   d       | j                   j                  d      }| j                  |j                  d       | j                   j                         j                         }| j                  t        |      d       | j                   j                  d      }| j                  |j                  d       | j                   j                         j                         }| j                  t        |      d	       y )
Nr"   zterminals/newrL   1r*   2      r   )r=   r   rH   r   r+   r   rM   rN   r1   r&   lenr   rO   rP   term2rI   s        r   test_create_terminal_via_getz,TerminalAPITest.test_create_terminal_via_getD   s   MMuo6,MMc",eT*v, MMuo6,MMc",eT*v,MM""3', MM&&(--/	Y+MM""3', MM&&(--/	Y+r   c                 j   | j                   j                  dd      }| j                  |j                  d       | j                   j	                  d      }|j                         }| j                  |j                  d       | j                  |t               | j                  |d   d       | j                   j                  dd      }| j                  t        |j                        d       |j                  d   }|j                         }| j                  |j                  d       | j                  |j                  d	   | j                  d
z          | j                  |t               | j                  |d   d       | j                   j                  d      }| j                  |j                  d       | j                   j                         j                         }| j                  t        |      d       t        d      5  | j                   j                  dd       d d d        y # 1 sw Y   y xY w)Nr"   zterminals/new/foorL   foor*   rV   r   i.  Locationzterminals/foorU   r   zterminals/new/new)r=   r   rH   r   r+   r   rM   rN   rW   historyr   
url_prefixr1   r&   r   )r   rO   foo_termrI   s       r   test_create_terminal_with_namez.TerminalAPITest.test_create_terminal_with_nameg   s   MMu&9:,MMe$668,h-&)51 MMu&9:QYY+IIaL668,:./0QRh-&)51MM""5), MM&&(--/	Y+ s# 	;MMu&9:	; 	; 	;s   H))H2c                    | j                   j                         }|j                         }| j                  |j                  d       | j                  |t               | j                   j                         }| j                  |j                  d       t        |j                         t              sJ | j                  |j                         d   d   |d          | j                   j                         j                         }t        |t              sJ | j                   j                         }|j                         }| j                  |j                  d       t        |t              sJ | j                  t        |      d       y )NrL   r   r*      )
r=   r.   r   rH   r   rM   rN   r&   
isinstancerW   rX   s        r   test_terminal_root_handlerz*TerminalAPITest.test_terminal_root_handler   s&   MM!,eT* MM ,!&&(D)))!V,eFm< ##%**,%&&&MM FFH	,)T***Y+r   c                 @   | j                   j                         j                         d   }| j                   j                  |      }|j                         }| j	                  |j
                  d       t        |t              sJ | j                  d|       | j	                  |d   |       d}t        dd|z         5  | j                   j                  |       d d d        | j                   j                  |      }| j	                  |j
                  d       | j                   j                         j                         }| j	                  |g        d}t        dd|z         5  | j                   j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr*   rL   nonExistentTerm  zTerminal not found: rU   )r=   r.   r   r+   rH   r   rd   rN   assertInr   r1   r&   )r   termrO   rP   bad_termrI   s         r   test_terminal_handlerz%TerminalAPITest.test_terminal_handler   s]   }}""$))+F3MMd#,%&&&fe$v- %s$:X$EF 	(MMh'	( MM""4(,MM&&(--/	B' %s$:X$EF 	-MM""8,	- 	-	( 	(	- 	-s   =F#FFFN)r2   r3   r4   r5   r>   rE   rJ   rQ   rZ   ra   re   rl   r6   r   r   r8   r8   ,   s/    ,$.(
+!,F;B,.-r   r8   c                   B    e Zd Z edddddii      Zd Zd Zd Zd	 Zy
)TerminalCullingTestNotebookAppTerminalManager   rc   )cull_intervalcull_inactive_timeoutc                 v    t        | j                  | j                         | j                               | _        y r:   r;   r%   s    r   r>   zTerminalCullingTest.setUp   r?   r   c                     | j                   j                         j                         D ]   }| j                   j                  |d          " y rA   rB   rC   s     r   rE   zTerminalCullingTest.tearDown   rF   r   c                    | j                  | j                  j                  j                  j                  d       | j                  | j                  j                  j                  j
                  d       | j                  j                  j                  d   }| j                  |j                  d       | j                  |j
                  d       y )Nrc   rq   terminal_manager)	rH   configro   rp   rs   rr   notebookweb_appsettings)r   terminal_mgrs     r   test_configzTerminalCullingTest.test_config   s    00@@VVXYZ00@@NNPQR}},,556HI;;Q?33Q7r   c                    | j                   j                         }| j                  |j                  d       |j	                         }|d   }|d   }d}t        d      D ]O  }	 | j                   j                  |      }| j                  |j                  d       t        j                  d       Q | j                  |       y # t        $ r3}| j                  |j                  j                  d       d}Y d }~ Id }~ww xY w)	NrL   r*   last_activityF
   rV   rh   T)r=   r.   rH   r   r   ranger+   timesleepr   r   
assertTrue)r   rO   r   rP   r   culledies           r   test_cullingz TerminalCullingTest.test_culling   s    MM!,vvxV_-r 		AMM%%e,   4

1		 	    !7!7=s   "C	C>(C99C>N)	r2   r3   r4   r   rx   r>   rE   r}   r   r6   r   r   rn   rn      s=     !")* 
 F$.
8 r   rn   )r5   r   requestsr   traitlets.configr   notebook.utilsr   notebook.tests.launchnotebookr   r   r	   r8   rn   r6   r   r   <module>r      sA    $   # ( MI I@L-& L-^2 * 2 r   