def test_add_volume(self, mock_create_sf_connection):
     ''' adding a volume '''
     args = dict(self.ARGS)  # deep copy as other tests can modify args
     set_module_args(args)
     # my_obj.sfe will be assigned a MockSFConnection object:
     mock_create_sf_connection.return_value = MockSFConnection()
     my_obj = my_module()
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print(exc.value.args[0])
     assert exc.value.args[0]['changed']
 def test_remove_volume_idempotent(self, mock_create_sf_connection):
     ''' removing a volume that is not in the access group '''
     args = dict(self.ARGS)
     args['state'] = 'absent'
     set_module_args(args)
     # my_obj.sfe will be assigned a MockSFConnection object:
     mock_create_sf_connection.return_value = MockSFConnection()
     my_obj = my_module()
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print(exc.value.args[0])
     assert not exc.value.args[0]['changed']
 def test_add_volume_idempotent(self, mock_create_sf_connection):
     ''' adding a volume that is already in the access group '''
     args = dict(self.ARGS)
     set_module_args(args)
     # my_obj.sfe will be assigned a MockSFConnection object:
     mock_create_sf_connection.return_value = MockSFConnection(
         volume_id=VOLUME_ID)
     my_obj = my_module()
     with pytest.raises(AnsibleExitJson) as exc:
         my_obj.apply()
     print(exc.value.args[0])
     assert not exc.value.args[0]['changed']
 def test_check_error_reporting_on_invalid_account_id(
         self, mock_create_sf_connection):
     ''' report error if account id is not found '''
     args = dict(self.ARGS)
     set_module_args(args)
     # my_obj.sfe will be assigned a MockSFConnection object:
     mock_create_sf_connection.return_value = MockSFConnection(
         force_error=True, where='get_account_id')
     my_obj = my_module()
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.apply()
     print(exc.value.args[0])
     message = 'Error: Specified account id "%s" does not exist.' % 'element_account_id'
     assert exc.value.args[0]['msg'] == message
 def test_check_error_reporting_on_invalid_volume_name(
         self, mock_create_sf_connection):
     ''' report error if volume does not exist '''
     args = dict(self.ARGS)
     args['volumes'] = ['volume1']
     set_module_args(args)
     # my_obj.sfe will be assigned a MockSFConnection object:
     mock_create_sf_connection.return_value = MockSFConnection()
     my_obj = my_module()
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.apply()
     print(exc.value.args[0])
     message = 'Error: Specified volume %s does not exist' % 'volume1'
     assert exc.value.args[0]['msg'] == message
 def test_check_error_reporting_on_modify_exception(
         self, mock_create_sf_connection):
     ''' modify does not return anything but can raise an exception '''
     args = dict(self.ARGS)
     set_module_args(args)
     # my_obj.sfe will be assigned a MockSFConnection object:
     mock_create_sf_connection.return_value = MockSFConnection(
         force_error=True, where=['modify_exception'])
     my_obj = my_module()
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.apply()
     print(exc.value.args[0])
     message = 'Error updating volume access group element_groupname: %s' % MODIFY_ERROR
     assert exc.value.args[0]['msg'] == message
 def test_check_error_reporting_on_invalid_account_group_name(
         self, mock_create_sf_connection):
     ''' report error if access group does not exist '''
     args = dict(self.ARGS)
     args['access_group'] = 'something_else'
     set_module_args(args)
     # my_obj.sfe will be assigned a MockSFConnection object:
     mock_create_sf_connection.return_value = MockSFConnection()
     my_obj = my_module()
     with pytest.raises(AnsibleFailJson) as exc:
         my_obj.apply()
     print(exc.value.args[0])
     message = 'Error: Specified access group "%s" does not exist for account id: %s.' % (
         'something_else', 'element_account_id')
     assert exc.value.args[0]['msg'] == message
 def test_module_fail_when_required_args_missing(self):
     ''' required arguments are reported as errors '''
     with pytest.raises(AnsibleFailJson) as exc:
         set_module_args({})
         my_module()
     print('Info: %s' % exc.value.args[0]['msg'])