9853d158bd39b453c9125faa037c80399b250d13
1 # Copyright 2017 Intel Research and Development Ireland Limited
2 # *************************************************************
4 # This file is part of OSM Monitoring module
5 # All Rights Reserved to Intel Corporation
7 # Licensed under the Apache License, Version 2.0 (the "License"); you may
8 # not use this file except in compliance with the License. You may obtain
9 # a copy of the License at
11 # http://www.apache.org/licenses/LICENSE-2.0
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15 # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
16 # License for the specific language governing permissions and limitations
19 # For those usages not covered by the Apache License, Version 2.0 please
20 # contact: helena.mcgough@intel.com or adrian.hoban@intel.com
22 """Tests for all common OpenStack methods."""
30 from keystoneclient
.v3
import client
34 from osm_mon
.core
.auth
import AuthManager
35 from osm_mon
.core
.database
import VimCredentials
36 from osm_mon
.plugins
.OpenStack
.common
import Common
37 from osm_mon
.plugins
.OpenStack
.settings
import Config
41 __author__
= "Helena McGough"
43 log
= logging
.getLogger(__name__
)
46 class Message(object):
47 """Mock a message for an access credentials request."""
50 """Initialise the topic and value of access_cred message."""
51 self
.topic
= "access_credentials"
52 self
.value
= json
.dumps({"mock_value": "mock_details",
53 "vim_type": "OPENSTACK",
55 {"openstack_site": "my_site",
57 "password": "my_password",
58 "vim_tenant_name": "my_tenant"}})
61 class TestCommon(unittest
.TestCase
):
62 """Test the common class for OpenStack plugins."""
66 super(TestCommon
, self
).setUp()
67 self
.common
= Common()
68 self
.creds
= VimCredentials()
69 self
.creds
.id = 'test_id'
70 self
.creds
.user
= 'user'
71 self
.creds
.url
= 'url'
72 self
.creds
.password
= 'password'
73 self
.creds
.tenant_name
= 'tenant_name'
75 @mock.patch
.object(AuthManager
, "get_credentials")
76 @mock.patch
.object(Config
, "instance")
77 @mock.patch
.object(client
, "Client")
78 def test_get_auth_token(self
, key_client
, cfg
, get_creds
):
79 """Test generating a new authentication token."""
80 get_creds
.return_value
= self
.creds
81 Common
.get_auth_token('test_id')
82 get_creds
.assert_called_with('test_id')
83 key_client
.assert_called_with(auth_url
='url', password
='password', tenant_name
='tenant_name', username
='user')
85 @mock.patch
.object(requests
, 'post')
86 def test_post_req(self
, post
):
87 """Testing a post request."""
88 Common
.perform_request("url", "auth_token", req_type
="post",
91 post
.assert_called_with("url", data
="payload", headers
=mock
.ANY
,
94 @mock.patch
.object(requests
, 'get')
95 def test_get_req(self
, get
):
96 """Testing a get request."""
97 # Run the defualt get request without any parameters
98 Common
.perform_request("url", "auth_token", req_type
="get")
100 get
.assert_called_with("url", params
=None, headers
=mock
.ANY
,
103 # Test with some parameters specified
105 Common
.perform_request("url", "auth_token", req_type
="get",
106 params
="some parameters")
108 get
.assert_called_with("url", params
="some parameters",
109 headers
=mock
.ANY
, timeout
=mock
.ANY
)
111 @mock.patch
.object(requests
, 'put')
112 def test_put_req(self
, put
):
113 """Testing a put request."""
114 Common
.perform_request("url", "auth_token", req_type
="put",
116 put
.assert_called_with("url", data
="payload", headers
=mock
.ANY
,
119 @mock.patch
.object(requests
, 'delete')
120 def test_delete_req(self
, delete
):
121 """Testing a delete request."""
122 Common
.perform_request("url", "auth_token", req_type
="delete")
124 delete
.assert_called_with("url", headers
=mock
.ANY
, timeout
=mock
.ANY
)