@@ -0,0 +1,1837 @@
+# -*- coding: utf-8 -*-%0A#%0A# Licensed to the Apache Software Foundation (ASF) under one%0A# or more contributor license agreements.  See the NOTICE file%0A# distributed with this work for additional information%0A# regarding copyright ownership.  The ASF licenses this file%0A# to you under the Apache License, Version 2.0 (the%0A# %22License%22); you may not use this file except in compliance%0A# with the License.  You may obtain a copy of the License at%0A#%0A#   http://www.apache.org/licenses/LICENSE-2.0%0A#%0A# Unless required by applicable law or agreed to in writing,%0A# software distributed under the License is distributed on an%0A# %22AS IS%22 BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY%0A# KIND, either express or implied.  See the License for the%0A# specific language governing permissions and limitations%0A# under the License.%0A%0Aimport mock%0Aimport unittest%0A%0Afrom airflow.contrib.operators.winrm_operator import WinRMOperator%0Afrom airflow.exceptions import AirflowException%0A%0A%0Aclass WinRMOperatorTest(unittest.TestCase):%0A    def test_no_winrm_hook_no_ssh_conn_id(self):%0A        op = WinRMOperator(task_id='test_task_id',%0A                           winrm_hook=None,%0A                           ssh_conn_id=None)%0A        exception_msg = %22Cannot operate without winrm_hook or ssh_conn_id.%22%0A        with self.assertRaisesRegexp(AirflowException, exception_msg):%0A            op.execute(None)%0A%0A    @mock.patch('airflow.contrib.operators.winrm_operator.WinRMHook')%0A    def test_no_command(self, mock_hook):%0A        op = WinRMOperator(%0A            task_id='test_task_id',%0A            winrm_hook=mock_hook,%0A            command=None%0A        )%0A        exception_msg = %22No command specified so nothing to execute here.%22%0A        with self.assertRaisesRegexp(AirflowException, exception_msg):%0A            op.execute(None)%0A%0A%0Aif __name__ == '__main__':%0A    unittest.main()%0A

Add 2 tests for WinRMOperator (#5108)