26
from nova import exception
26
27
from nova import test
27
28
from nova import wsgi
28
29
from nova.api.ec2 import metadatarequesthandler
29
30
from nova.db.sqlalchemy import api
33
USER_DATA_STRING = ("This is an encoded string")
34
ENCODE_USER_DATA_STRING = base64.b64encode(USER_DATA_STRING)
37
def return_non_existing_server_by_address(context, address):
38
raise exception.NotFound()
32
41
class MetadataTestCase(test.TestCase):
33
42
"""Test that metadata is returning proper values."""
79
88
self.stubs.Set(api, 'security_group_get_by_instance', sg_get)
80
89
self.assertEqual(self.request('/meta-data/security-groups'),
92
def test_user_data_non_existing_fixed_address(self):
93
self.stubs.Set(api, 'instance_get_all_by_filters',
94
return_non_existing_server_by_address)
95
request = webob.Request.blank('/user-data')
96
request.remote_addr = "127.1.1.1"
97
response = request.get_response(self.app)
98
self.assertEqual(response.status_int, 404)
100
def test_user_data_none_fixed_address(self):
101
self.stubs.Set(api, 'instance_get_all_by_filters',
102
return_non_existing_server_by_address)
103
request = webob.Request.blank('/user-data')
104
request.remote_addr = None
105
response = request.get_response(self.app)
106
self.assertEqual(response.status_int, 500)
108
def test_user_data_invalid_url(self):
109
request = webob.Request.blank('/user-data-invalid')
110
request.remote_addr = "127.0.0.1"
111
response = request.get_response(self.app)
112
self.assertEqual(response.status_int, 404)
114
def test_user_data_with_use_forwarded_header(self):
115
self.instance['user_data'] = ENCODE_USER_DATA_STRING
116
self.flags(use_forwarded_for=True)
117
request = webob.Request.blank('/user-data')
118
request.remote_addr = "127.0.0.1"
119
response = request.get_response(self.app)
120
self.assertEqual(response.status_int, 200)
121
self.assertEqual(response.body, USER_DATA_STRING)