2014-08-27 11:17:06 -04:00
from __future__ import unicode_literals
2014-08-25 15:09:38 -07:00
# Ensure 'assert_raises' context manager support for Python 2.6
import tests . backport_assert_raises
from nose . tools import assert_raises
2013-02-21 23:13:01 -05:00
import boto
2014-08-26 13:25:50 -04:00
import six
2013-08-03 17:21:25 -04:00
import sure # noqa
2013-02-21 23:13:01 -05:00
2016-10-15 23:08:44 +10:00
from boto . exception import EC2ResponseError , JSONResponseError
2013-02-21 23:13:01 -05:00
from moto import mock_ec2
@mock_ec2
2014-02-24 12:08:00 +02:00
def test_key_pairs_empty ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
assert len ( conn . get_all_key_pairs ( ) ) == 0
2014-02-24 12:24:46 +02:00
2014-08-25 10:54:47 -07:00
@mock_ec2
def test_key_pairs_invalid_id ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
with assert_raises ( EC2ResponseError ) as cm :
conn . get_all_key_pairs ( ' foo ' )
cm . exception . code . should . equal ( ' InvalidKeyPair.NotFound ' )
cm . exception . status . should . equal ( 400 )
cm . exception . request_id . should_not . be . none
2014-02-24 12:24:46 +02:00
@mock_ec2
def test_key_pairs_create ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
2016-10-15 23:08:44 +10:00
with assert_raises ( JSONResponseError ) as ex :
kp = conn . create_key_pair ( ' foo ' , dry_run = True )
ex . exception . reason . should . equal ( ' DryRunOperation ' )
ex . exception . status . should . equal ( 400 )
ex . exception . message . should . equal ( ' An error occurred (DryRunOperation) when calling the CreateKeyPair operation: Request would have succeeded, but DryRun flag is set ' )
2014-02-24 12:24:46 +02:00
kp = conn . create_key_pair ( ' foo ' )
2014-02-24 13:03:26 +02:00
assert kp . material . startswith ( ' ---- BEGIN RSA PRIVATE KEY ---- ' )
2014-02-24 13:20:47 +02:00
kps = conn . get_all_key_pairs ( )
assert len ( kps ) == 1
assert kps [ 0 ] . name == ' foo '
@mock_ec2
def test_key_pairs_create_two ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
kp = conn . create_key_pair ( ' foo ' )
kp = conn . create_key_pair ( ' bar ' )
assert kp . material . startswith ( ' ---- BEGIN RSA PRIVATE KEY ---- ' )
kps = conn . get_all_key_pairs ( )
assert len ( kps ) == 2
2014-08-26 13:25:50 -04:00
# on Python 3, these are reversed for some reason
if six . PY3 :
return
2014-02-24 13:20:47 +02:00
assert kps [ 0 ] . name == ' foo '
assert kps [ 1 ] . name == ' bar '
2014-02-24 15:22:08 +02:00
kps = conn . get_all_key_pairs ( ' foo ' )
assert len ( kps ) == 1
assert kps [ 0 ] . name == ' foo '
2014-02-24 13:06:53 +02:00
@mock_ec2
def test_key_pairs_create_exist ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
kp = conn . create_key_pair ( ' foo ' )
assert kp . material . startswith ( ' ---- BEGIN RSA PRIVATE KEY ---- ' )
2014-02-24 13:20:47 +02:00
assert len ( conn . get_all_key_pairs ( ) ) == 1
2014-08-25 10:54:47 -07:00
with assert_raises ( EC2ResponseError ) as cm :
conn . create_key_pair ( ' foo ' )
cm . exception . code . should . equal ( ' InvalidKeyPair.Duplicate ' )
cm . exception . status . should . equal ( 400 )
cm . exception . request_id . should_not . be . none
2014-02-24 13:34:39 +02:00
@mock_ec2
def test_key_pairs_delete_no_exist ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
assert len ( conn . get_all_key_pairs ( ) ) == 0
r = conn . delete_key_pair ( ' foo ' )
r . should . be . ok
2014-02-24 13:35:42 +02:00
@mock_ec2
def test_key_pairs_delete_exist ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
conn . create_key_pair ( ' foo ' )
2016-10-15 23:08:44 +10:00
with assert_raises ( JSONResponseError ) as ex :
r = conn . delete_key_pair ( ' foo ' , dry_run = True )
ex . exception . reason . should . equal ( ' DryRunOperation ' )
ex . exception . status . should . equal ( 400 )
ex . exception . message . should . equal ( ' An error occurred (DryRunOperation) when calling the DeleteKeyPair operation: Request would have succeeded, but DryRun flag is set ' )
2014-02-24 13:35:42 +02:00
r = conn . delete_key_pair ( ' foo ' )
r . should . be . ok
assert len ( conn . get_all_key_pairs ( ) ) == 0
2015-09-24 17:25:49 +02:00
@mock_ec2
def test_key_pairs_import ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
2016-10-15 23:08:44 +10:00
with assert_raises ( JSONResponseError ) as ex :
kp = conn . import_key_pair ( ' foo ' , b ' content ' , dry_run = True )
ex . exception . reason . should . equal ( ' DryRunOperation ' )
ex . exception . status . should . equal ( 400 )
ex . exception . message . should . equal ( ' An error occurred (DryRunOperation) when calling the ImportKeyPair operation: Request would have succeeded, but DryRun flag is set ' )
2015-09-24 17:25:49 +02:00
kp = conn . import_key_pair ( ' foo ' , b ' content ' )
assert kp . name == ' foo '
kps = conn . get_all_key_pairs ( )
assert len ( kps ) == 1
assert kps [ 0 ] . name == ' foo '
@mock_ec2
def test_key_pairs_import_exist ( ) :
conn = boto . connect_ec2 ( ' the_key ' , ' the_secret ' )
kp = conn . import_key_pair ( ' foo ' , b ' content ' )
assert kp . name == ' foo '
assert len ( conn . get_all_key_pairs ( ) ) == 1
with assert_raises ( EC2ResponseError ) as cm :
conn . create_key_pair ( ' foo ' )
cm . exception . code . should . equal ( ' InvalidKeyPair.Duplicate ' )
cm . exception . status . should . equal ( 400 )
cm . exception . request_id . should_not . be . none