 db69c62216
			
		
	
	db69c62216
	
	
	
		
			
			This patch adds some missing tests for a couple of edge cases. Change-Id: I3929595fddca0628269af6235bbb0fca853ae3eb
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| # Copyright 2014 Cloudbase Solutions Srl
 | |
| #
 | |
| #    Licensed under the Apache License, Version 2.0 (the "License"); you may
 | |
| #    not use this file except in compliance with the License. You may obtain
 | |
| #    a copy of the License at
 | |
| #
 | |
| #         http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| #    Unless required by applicable law or agreed to in writing, software
 | |
| #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | |
| #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | |
| #    License for the specific language governing permissions and limitations
 | |
| #    under the License.
 | |
| 
 | |
| import subprocess
 | |
| import sys
 | |
| import unittest
 | |
| 
 | |
| try:
 | |
|     import unittest.mock as mock
 | |
| except ImportError:
 | |
|     import mock
 | |
| 
 | |
| from cloudbaseinit.osutils import base
 | |
| 
 | |
| 
 | |
| class BaseOSUtilsTests(unittest.TestCase):
 | |
| 
 | |
|     def setUp(self):
 | |
|         self._base = base.BaseOSUtils()
 | |
| 
 | |
|     @mock.patch('sys.stdout')
 | |
|     @mock.patch('subprocess.Popen')
 | |
|     @mock.patch('subprocess.PIPE')
 | |
|     def test_execute_process(self, mock_PIPE, mock_Popen, mock_stdout):
 | |
|         args = [mock.sentinel.fake_arg]
 | |
| 
 | |
|         mock_p = mock.MagicMock()
 | |
|         mock_out = mock.MagicMock()
 | |
|         mock_err = mock.MagicMock()
 | |
|         mock_Popen.return_value = mock_p
 | |
|         mock_p.communicate.return_value = (mock_out, mock_err)
 | |
| 
 | |
|         response = self._base.execute_process(args, shell=True,
 | |
|                                               decode_output=True)
 | |
| 
 | |
|         mock_Popen.assert_called_once_with(args, stdout=subprocess.PIPE,
 | |
|                                            stderr=subprocess.PIPE, shell=True)
 | |
|         mock_p.communicate.assert_called_once_with()
 | |
| 
 | |
|         if sys.version_info < (3, 0):
 | |
|             mock_out.decode.assert_called_once_with(mock_stdout.encoding)
 | |
|             mock_err.decode.assert_called_once_with(mock_stdout.encoding)
 | |
|             self.assertEqual((mock_out.decode.return_value,
 | |
|                               mock_err.decode.return_value, mock_p.returncode),
 | |
|                              response)
 | |
|         else:
 | |
|             self.assertEqual((mock_out, mock_err, mock_p.returncode), response)
 | |
| 
 | |
|     @mock.patch('os.urandom')
 | |
|     def test_generate_random_password(self, mock_urandom):
 | |
|         mock_urandom.return_value = b"test"
 | |
|         response = self._base.generate_random_password(20)
 | |
| 
 | |
|         mock_urandom.assert_called_once_with(256)
 | |
|         self.assertEqual("dGVzdA==", response)
 |