~ubuntu-branches/ubuntu/trusty/heat/trusty

« back to all changes in this revision

Viewing changes to heat/tests/test_auth_password.py

  • Committer: Package Import Robot
  • Author(s): Chuck Short, Chuck Short, Adam Gandelman
  • Date: 2013-09-08 21:51:19 UTC
  • mfrom: (1.1.4)
  • Revision ID: package-import@ubuntu.com-20130908215119-r939tu4aumqgdrkx
Tags: 2013.2~b3-0ubuntu1
[ Chuck Short ]
* New upstream release.
* debian/control: Add python-netaddr as build-dep.
* debian/heat-common.install: Remove heat-boto and associated man-page
* debian/heat-common.install: Remove heat-cfn and associated man-page
* debian/heat-common.install: Remove heat-watch and associated man-page
* debian/patches/fix-sqlalchemy-0.8.patch: Dropped

[ Adam Gandelman ]
* debian/patches/default-kombu.patch: Dropped.
* debian/patches/default-sqlite.patch: Refreshed.
* debian/*.install, rules: Install heat.conf.sample as common
  config file in heat-common. Drop other per-package configs, they
  are no longer used.
* debian/rules: Clean pbr .egg from build dir if it exists.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
from keystoneclient.v2_0 import client as keystone_client
19
19
from keystoneclient.exceptions import Unauthorized
 
20
from oslo.config import cfg
20
21
import webob
21
22
 
22
23
from heat.common.auth_password import KeystonePasswordAuthProtocol
81
82
            expected_env={'HTTP_X_AUTH_URL': self.config['auth_uri']})
82
83
        self.middleware = KeystonePasswordAuthProtocol(self.app, self.config)
83
84
 
 
85
    def tearDown(self):
 
86
        super(KeystonePasswordAuthProtocolTest, self).tearDown()
 
87
        cfg.CONF.clear_override('multi_cloud', 'auth_password')
 
88
        cfg.CONF.clear_override('allowed_auth_uris', 'auth_password')
 
89
 
84
90
    def _start_fake_response(self, status, headers):
85
91
        self.response_status = int(status.split(' ', 1)[0])
86
92
        self.response_headers = dict(headers)
117
123
        req = webob.Request.blank('/')
118
124
        self.middleware(req.environ, self._start_fake_response)
119
125
        self.assertEqual(self.response_status, 401)
 
126
 
 
127
    def test_multi_cloud(self):
 
128
        allowed_auth_uris = ['http://multicloud.test.com:5000/v2.0']
 
129
        cfg.CONF.set_override('multi_cloud', True, group='auth_password')
 
130
        auth_url = 'http://multicloud.test.com:5000/v2.0'
 
131
        cfg.CONF.set_override('allowed_auth_uris',
 
132
                              allowed_auth_uris,
 
133
                              group='auth_password')
 
134
        self.app = FakeApp(
 
135
            expected_env={'HTTP_X_AUTH_URL': auth_url})
 
136
        self.middleware = KeystonePasswordAuthProtocol(self.app, self.config)
 
137
 
 
138
        self.m.StubOutClassWithMocks(keystone_client, 'Client')
 
139
        mock_client = keystone_client.Client(
 
140
            username='user_name1', password='goodpassword',
 
141
            tenant_id='tenant_id1', auth_url=auth_url)
 
142
        mock_client.auth_ref = TOKEN_RESPONSE
 
143
        self.m.ReplayAll()
 
144
        req = webob.Request.blank('/tenant_id1/')
 
145
        req.headers['X_AUTH_USER'] = 'user_name1'
 
146
        req.headers['X_AUTH_KEY'] = 'goodpassword'
 
147
        req.headers['X_AUTH_URL'] = auth_url
 
148
        self.middleware(req.environ, self._start_fake_response)
 
149
        self.m.VerifyAll()
 
150
 
 
151
    def test_multi_cloud_empty_allowed_uris(self):
 
152
        cfg.CONF.set_override('multi_cloud', True, group='auth_password')
 
153
        auth_url = 'http://multicloud.test.com:5000/v2.0'
 
154
        cfg.CONF.set_override('allowed_auth_uris',
 
155
                              [],
 
156
                              group='auth_password')
 
157
        req = webob.Request.blank('/tenant_id1/')
 
158
        req.headers['X_AUTH_USER'] = 'user_name1'
 
159
        req.headers['X_AUTH_KEY'] = 'goodpassword'
 
160
        req.headers['X_AUTH_URL'] = auth_url
 
161
        self.middleware(req.environ, self._start_fake_response)
 
162
        self.assertEqual(self.response_status, 401)
 
163
 
 
164
    def test_multi_cloud_target_not_allowed(self):
 
165
        cfg.CONF.set_override('multi_cloud', True, group='auth_password')
 
166
        auth_url = 'http://multicloud.test.com:5000/v2.0'
 
167
        cfg.CONF.set_override('allowed_auth_uris',
 
168
                              ['http://some.other.url:5000/v2.0'],
 
169
                              group='auth_password')
 
170
        req = webob.Request.blank('/tenant_id1/')
 
171
        req.headers['X_AUTH_USER'] = 'user_name1'
 
172
        req.headers['X_AUTH_KEY'] = 'goodpassword'
 
173
        req.headers['X_AUTH_URL'] = auth_url
 
174
        self.middleware(req.environ, self._start_fake_response)
 
175
        self.assertEqual(self.response_status, 401)
 
176
 
 
177
    def test_multi_cloud_no_auth_url(self):
 
178
        cfg.CONF.set_override('multi_cloud', True, group='auth_password')
 
179
        req = webob.Request.blank('/tenant_id1/')
 
180
        req.headers['X_AUTH_USER'] = 'user_name1'
 
181
        req.headers['X_AUTH_KEY'] = 'goodpassword'
 
182
        response = self.middleware(req.environ, self._start_fake_response)
 
183
        self.assertEqual(self.response_status, 400)