02324ad708
Fix filter name for availability zone Fix bug assuming dict keys are ordered Fix tests Fix tests Fix bug
130 lines
4.3 KiB
Python
130 lines
4.3 KiB
Python
from __future__ import unicode_literals
|
|
# Ensure 'assert_raises' context manager support for Python 2.6
|
|
import tests.backport_assert_raises
|
|
from nose.tools import assert_raises
|
|
|
|
import boto
|
|
import six
|
|
import sure # noqa
|
|
|
|
from boto.exception import EC2ResponseError, JSONResponseError
|
|
from moto import mock_ec2
|
|
|
|
|
|
@mock_ec2
|
|
def test_key_pairs_empty():
|
|
conn = boto.connect_ec2('the_key', 'the_secret')
|
|
assert len(conn.get_all_key_pairs()) == 0
|
|
|
|
|
|
@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
|
|
|
|
|
|
@mock_ec2
|
|
def test_key_pairs_create():
|
|
conn = boto.connect_ec2('the_key', 'the_secret')
|
|
|
|
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')
|
|
|
|
kp = conn.create_key_pair('foo')
|
|
assert kp.material.startswith('---- BEGIN RSA PRIVATE KEY ----')
|
|
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()
|
|
kps.should.have.length_of(2)
|
|
[i.name for i in kps].should.contain('foo')
|
|
[i.name for i in kps].should.contain('bar')
|
|
kps = conn.get_all_key_pairs('foo')
|
|
kps.should.have.length_of(1)
|
|
kps[0].name.should.equal('foo')
|
|
|
|
|
|
@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 ----')
|
|
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
|
|
|
|
|
|
@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
|
|
|
|
|
|
@mock_ec2
|
|
def test_key_pairs_delete_exist():
|
|
conn = boto.connect_ec2('the_key', 'the_secret')
|
|
conn.create_key_pair('foo')
|
|
|
|
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')
|
|
|
|
r = conn.delete_key_pair('foo')
|
|
r.should.be.ok
|
|
assert len(conn.get_all_key_pairs()) == 0
|
|
|
|
|
|
@mock_ec2
|
|
def test_key_pairs_import():
|
|
conn = boto.connect_ec2('the_key', 'the_secret')
|
|
|
|
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')
|
|
|
|
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
|