Ñò
n>ßKc           @@  sË  d  d k  l Z d  d k Z d  d k Z d  d k Z d  d k l Z d  d k l Z l	 Z	 d  d k
 l Z l Z d d k l 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* e i+ d$ e i, d% d& ƒ ƒ d' „  ƒ Z- d( „  Z. d) „  Z/ d* „  Z0 d+ „  Z1 d S(,   i    (   t   absolute_importN(   t   nested(   t   assert_raisest   assert_equal(   t   CloudserversShellt   CommandErrori   (   t
   FakeServerc          C@  sX   h d d 6d d 6}  t  i |  i ƒ  a t  _ t ƒ  a t t _ d  d „ a	 d „  a
 d  S(   Nt   usernamet   CLOUD_SERVERS_USERNAMEt   passwordt   CLOUD_SERVERS_API_KEYc         S@  s   t  i i |  | | ƒ S(    (   t   _shellt   cst   assert_called(   t   mt   ut   b(    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   <lambda>   s    c         S@  s   t  i |  i ƒ  ƒ S(    (   R   t   maint   split(   t   cmd(    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyR      s    (   t   ost   environt   copyt   _old_envR   R   R   t
   _api_classt   NoneR   t   shell(   t   fake_env(    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   setup   s    
		c           C@  s   t  t _ d  S(   N(   R   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   teardown   s    c           C@  s½   t  d ƒ t d d ƒ t  d ƒ t d d h h t d 6d d 6d	 d
 6d 6ƒ t  d ƒ t d d h h t d 6d d 6d d
 6d 6ƒ t  d ƒ t d d h h t d 6d d 6d d
 6d 6ƒ d  S(   Ns   backup-schedule 1234t   GETs   /servers/1234/backup_schedules-   backup-schedule sample-server --weekly mondayt   POSTt   enabledt   DISABLEDt   dailyt   MONDAYt   weeklyt   backupSchedulesC   backup-schedule sample-server --weekly disabled --daily h_0000_0200t   H_0000_0200s'   backup-schedule sample-server --disable(   R   R   t   Truet   False(    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_backup_schedule    s"    



c           C@  s   t  d ƒ t d d ƒ d  S(   Ns   backup-schedule-delete 1234t   DELETEs   /servers/1234/backup_schedule(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_backup_schedule_delete9   s    
c           C@  s…   t  d ƒ t d d h h d d 6d d 6d d 6d	 6ƒ t  d
 ƒ t d d h h d d 6d d 6d d 6h d d 6d d 6d 6d	 6ƒ d  S(   Ns   boot --image 1 some-serverR    s   /serversi   t   flavorIds   some-servert   namet   imageIdt   servers;   boot --image 1 --meta foo=bar --meta spam=eggs some-server t   bart   foot   eggst   spamt   metadata(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt	   test_boot=   s    
#
c       	   C@  s©   t  i i t  i i t ƒ d ƒ }  t |  ƒ i ƒ  i d ƒ } t d |  |  f ƒ t	 d d h h d d 6d d	 6d d
 6h d d 6| d 6h d d 6| d 6g d 6d 6ƒ d  S(   Ns   testfile.txtt   base64s@   boot some-server --image 1 --file /tmp/foo=%s --file /tmp/bar=%sR    s   /serversi   R-   s   some-serverR.   R/   s   /tmp/bart   patht   contentss   /tmp/foot   personalityR0   (
   R   R8   t   joint   dirnamet   __file__t   opent   readt   encodeR   R   (   t   testfilet   expected_file_data(    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_boot_filesK   s    !c          C@  s9   t  i i t  i i t ƒ d ƒ }  t t t d |  ƒ d  S(   Nt   asdfasdfasdfasdfs)   boot some-server --image 1 --file /foo=%s(   R   R8   R;   R<   R=   R   R   R   (   t   invalid_file(    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_boot_invalid_file[   s    !c          C@  sÙ   t  i d t ƒ }  t  i ƒ  } t  i ƒ  | _ t  i d d ƒ | i _ t t  i d |  ƒ t  i d | ƒ ƒ i i ƒ  z[ t	 d ƒ t
 d d h h d d	 6d
 d 6d d 6h d d 6d i d ƒ d 6g d 6d 6ƒ Wd  QXd  S(   Nt   return_valuet   SSHKEYs   os.path.existss   __builtin__.opens    boot some-server --image 1 --keyR    s   /serversi   R-   s   some-serverR.   R/   s   /root/.ssh/authorized_keys2R8   R7   R9   R:   R0   (   t   mockt   MockR(   RG   R?   R   t   patcht   __exit__t	   __enter__R   R   R@   (   t   mock_existst	   mock_open(    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_boot_key_auto_   s    !
c          C@  sJ   t  i d t ƒ }  t  i d |  ƒ i i ƒ  z t t t d ƒ Wd  QXd  S(   NRG   s   os.path.existss    boot some-server --image 1 --key(	   RI   RJ   R)   RK   RL   RM   R   R   R   (   RN   (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_boot_key_auto_no_keysr   s    c          C@  s’   t  i i t  i i t ƒ d ƒ }  t |  ƒ i ƒ  i d ƒ } t d |  ƒ t	 d d h h d d 6d d	 6d d
 6h d d 6| d 6g d 6d 6ƒ d  S(   Ns   testfile.txtR7   s#   boot some-server --image 1 --key %sR    s   /serversi   R-   s   some-serverR.   R/   s   /root/.ssh/authorized_keys2R8   R9   R:   R0   (
   R   R8   R;   R<   R=   R>   R?   R@   R   R   (   RA   RB   (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_boot_key_filew   s    !c          C@  s9   t  i i t  i i t ƒ d ƒ }  t t t d |  ƒ d  S(   NRD   s#   boot some-server --image 1 --key %s(   R   R8   R;   R<   R=   R   R   R   (   RE   (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_boot_invalid_keyfile„   s    !c           C@  s   t  d ƒ t d d ƒ d  S(   Ns   flavor-listR   s   /flavors/detail(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_flavor_listˆ   s    
c           C@  s   t  d ƒ t d d ƒ d  S(   Ns
   image-listR   s   /images/detail(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_image_listŒ   s    
c           C@  s3   t  d ƒ t d d h h d d 6d d 6d 6ƒ d  S(	   Ns$   image-create sample-server new-imageR    s   /imagess	   new-imageR.   iÒ  t   serverIdt   image(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_image_create   s    
c           C@  s   t  d ƒ t d d ƒ d  S(   Ns   image-delete 1R+   s	   /images/1(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_image_delete—   s    
c           C@  s3   t  d ƒ t d d h h d d 6t d 6d 6ƒ d  S(   Ns    ip-share sample-server 1 1.2.3.4t   PUTs    /servers/1234/ips/public/1.2.3.4i   t   sharedIpGroupIdt   configureServert   shareIp(   R   R   R(   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_ip_share›   s    
c           C@  s   t  d ƒ t d d ƒ d  S(   Ns    ip-unshare sample-server 1.2.3.4R+   s    /servers/1234/ips/public/1.2.3.4(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_ip_unshare¢   s    
c           C@  s   t  d ƒ t d d ƒ d  S(   Ns   ipgroup-listR   s   /shared_ip_groups/detail(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_ipgroup_list¦   s    
c           C@  s2   t  d ƒ t d d ƒ t  d ƒ t d d ƒ d  S(   Ns   ipgroup-show 1R   s   /shared_ip_groups/1s   ipgroup-show group2s   /shared_ip_groups/detail(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_ipgroup_showª   s    

c           C@  s[   t  d ƒ t d d h h d d 6d 6ƒ t  d ƒ t d d h h d d 6d d	 6d 6ƒ d  S(
   Ns   ipgroup-create a-groupR    s   /shared_ip_groupss   a-groupR.   t   sharedIpGroups$   ipgroup-create a-group sample-serveriÒ  R0   (   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_ipgroup_create±   s    

c           C@  s   t  d ƒ t d d ƒ d  S(   Ns   ipgroup-delete group1R+   s   /shared_ip_groups/1(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_ipgroup_delete½   s    
c           C@  s   t  d ƒ t d d ƒ d  S(   Nt   listR   s   /servers/detail(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt	   test_listÁ   s    
c           C@  sT   t  d ƒ t d d h h d d 6d 6ƒ t  d ƒ t d d h h d d 6d 6ƒ d  S(	   Ns   reboot sample-serverR    s   /servers/1234/actiont   SOFTt   typet   reboots   reboot sample-server --hardt   HARD(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_rebootÅ   s    

c           C@  s,   t  d ƒ t d d h h d d 6d 6ƒ d  S(   Ns   rebuild sample-server 1R    s   /servers/1234/actioni   R/   t   rebuild(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_rebuildË   s    
c           C@  s,   t  d ƒ t d d h h d d 6d 6ƒ d  S(   Ns   rename sample-server newnameRZ   s   /servers/1234t   newnameR.   R0   (   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_renameÏ   s    
c           C@  s,   t  d ƒ t d d h h d d 6d 6ƒ d  S(   Ns   resize sample-server 1R    s   /servers/1234/actioni   R-   t   resize(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_resizeÓ   s    
c           C@  s%   t  d ƒ t d d h d  d 6ƒ d  S(   Ns   resize-confirm sample-serverR    s   /servers/1234/actiont   confirmResize(   R   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_resize_confirm×   s    
c           C@  s%   t  d ƒ t d d h d  d 6ƒ d  S(   Ns   resize-revert sample-serverR    s   /servers/1234/actiont   revertResize(   R   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_resize_revertÛ   s    
s   getpass.getpassRG   t   pc           C@  s,   t  d ƒ t d d h h d d 6d 6ƒ d  S(   Ns   root-password sample-serverRZ   s   /servers/1234Rv   t	   adminPassR0   (   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_root_passwordß   s    
c           C@  s   t  d ƒ t d d ƒ d  S(   Ns	   show 1234R   s	   /images/2(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt	   test_showä   s    
c           C@  s2   t  d ƒ t d d ƒ t  d ƒ t d d ƒ d  S(   Ns   delete 1234R+   s   /servers/1234s   delete sample-server(   R   R   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   test_deleteê   s    

c       
   C@  s¤   t  i t i d ƒ i i ƒ  }  z! |  ~  } t d ƒ | i ƒ  Wd  QXt  i t i d d ƒ i i ƒ  } z! | ~ } t d ƒ | i ƒ  Wd  QXt	 t
 t d ƒ d  S(   Nt
   print_helpt   helpt   deletes   help deletes   help foofoo(   RI   t   patch_objectR   t   parserRL   RM   R   R   t   subcommandsR   R   (   t   _[1]R   t   _[2](    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt	   test_helpð   s    ,
0
c           C@  s.   d t  _ t d ƒ t  i d j p t ‚ d  S(   Ni    s   --debug listi   (   t   httplib2t
   debuglevelR   t   AssertionError(    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt
   test_debugù   s    	
(2   t
   __future__R    R   RI   R„   t
   contextlibR   t
   nose.toolsR   R   t   cloudservers.shellR   R   t
   fakeserverR   R   R   R*   R,   R6   RC   RF   RP   RQ   RR   RS   RT   RU   RX   RY   R^   R_   R`   Ra   Rc   Rd   Rf   Rk   Rm   Ro   Rq   Rs   Ru   RK   RJ   Rx   Ry   Rz   Rƒ   R‡   (    (    (    s6   /Users/jacob/Projects/cloudservers/tests/test_shell.pyt   <module>   sP   																												'				