#556 Use unittest.mock for python3
Closed 2 years ago by hlin. Opened 2 years ago by hlin.
hlin/odcs mock  into  master

@@ -25,8 +25,10 @@ 

  import unittest

  import copy

  

- import mock

- from mock import patch, Mock, MagicMock

+ try:

+     from unittest import mock

+ except ImportError:

+     import mock

  

  from odcs.client.odcs import AuthMech

  from odcs.client.odcs import (
@@ -86,7 +88,7 @@ 

          self.server_url = "http://localhost/"

          self.resource_path = "composes/"

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_raise_error(self, requests):

          requests.get.return_value.status_code = 401

  
@@ -96,8 +98,8 @@ 

          self.assertEqual(requests.get.return_value, r)

          requests.get.return_value.raise_for_status.assert_called_once()

  

-     @patch("odcs.client.odcs.requests")

-     @patch("odcs.client.odcs.HTTPKerberosAuth")

+     @mock.patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.HTTPKerberosAuth")

      def test_with_kerberos_auth(self, HTTPKerberosAuth, requests):

          requests.post.return_value.status_code = 200

          expected_auth = HTTPKerberosAuth.return_value
@@ -112,7 +114,7 @@ 

              allow_redirects=False,

          )

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_with_openidc_auth(self, requests):

          fake_openidc_token = "1234567890"

          requests.post.return_value.status_code = 200
@@ -135,7 +137,7 @@ 

              allow_redirects=False,

          )

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_with_ssl_auth(self, requests):

          requests.post.return_value.status_code = 200

  
@@ -156,7 +158,7 @@ 

              allow_redirects=False,

          )

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_do_not_verify_ssl(self, requests):

          requests.post.return_value.status_code = 200

  
@@ -176,7 +178,7 @@ 

          self.server_url = "http://localhost/"

          self.odcs = ODCS(self.server_url)

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_get_compose(self, requests):

          fake_compose = {

              "flags": [],
@@ -192,7 +194,7 @@ 

              "time_submitted": "2017-07-11T13:05:40Z",

              "time_to_expire": "2017-07-12T13:05:40Z",

          }

-         requests.get = Mock()

+         requests.get = mock.Mock()

          requests.get.return_value.status_code = 200

          requests.get.return_value.json.return_value = fake_compose

  
@@ -212,9 +214,9 @@ 

          self.server_url = "http://localhost/"

          self.odcs = ODCS(self.server_url)

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_about(self, requests):

-         requests.get = Mock()

+         requests.get = mock.Mock()

          requests.get.return_value.status_code = 200

          fake_result = {

              "allowed_clients": {"groups": {}, "users": {}},
@@ -241,7 +243,7 @@ 

          self.server_url = "http://localhost/"

          self.odcs = ODCS(self.server_url)

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_compose_id_not_found(self, requests):

          fake_response = {

              "status": 404,
@@ -255,7 +257,7 @@ 

  

          requests.delete.return_value.raise_for_status.assert_called_once()

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_delete_compose(self, requests):

          fake_response = {

              "status": 202,
@@ -272,7 +274,7 @@ 

          )

  

  

- @patch("odcs.client.odcs.requests")

+ @mock.patch("odcs.client.odcs.requests")

  class TestNewCompose(unittest.TestCase):

      """Test ODCS.new_compose"""

  
@@ -399,7 +401,7 @@ 

          self.server_url = "http://localhost/"

          self.odcs = ODCS(self.server_url)

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_renew_a_compose(self, requests):

          fake_renew_compose = {

              "flags": [],
@@ -436,7 +438,7 @@ 

          self.server_url = "http://localhost/"

          self.odcs = ODCS(self.server_url)

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_find_composes_without_pagination(self, requests):

          fake_found_composes = {

              "items": [
@@ -483,7 +485,7 @@ 

              allow_redirects=True,

          )

  

-     @patch("odcs.client.odcs.requests")

+     @mock.patch("odcs.client.odcs.requests")

      def test_find_composes_the_second_page(self, requests):

          fake_found_composes = {

              "items": [
@@ -531,8 +533,8 @@ 

          )

  

  

- @patch("time.sleep")

- @patch("odcs.client.odcs.ODCS.get_compose")

+ @mock.patch("time.sleep")

+ @mock.patch("odcs.client.odcs.ODCS.get_compose")

  class TestWaitForCompose(unittest.TestCase):

      """Test ODCS.wait_for_compose"""

  
@@ -556,13 +558,13 @@ 

              self.assertEqual(sleep.mock_calls, [mock.call(1), mock.call(2)])

              self.assertEqual(get_compose.mock_calls, [mock.call(1)] * 3)

  

-     @patch("time.time")

+     @mock.patch("time.time")

      def test_wait_for_compose_timeout(self, time_travel, get_compose, sleep):

          get_compose.side_effect = [{"state_name": "wait"}] * 2

          time_travel.side_effect = [1, 301]

          self.assertRaises(RuntimeError, self.odcs.wait_for_compose, 1)

  

-     @patch("time.time")

+     @mock.patch("time.time")

      def test_wait_for_compose_elapsed_close_to_timeout(self, _time, get_compose, sleep):

          TestWaitForCompose._TIME_TMP_VAR = 0

  
@@ -586,7 +588,7 @@ 

              sleep.mock_calls, [mock.call(1), mock.call(2), mock.call(3), mock.call(4)]

          )

  

-     @patch("odcs.client.odcs.ComposeLog.read")

+     @mock.patch("odcs.client.odcs.ComposeLog.read")

      def test_wait_for_compose_watch_logs(self, log_read, get_compose, sleep):

          get_compose.side_effect = [

              {"state_name": "wait", "toplevel_url": "http://localhost/composes/odcs-1"},
@@ -604,7 +606,7 @@ 

          self.assertEqual(len(log_read.mock_calls), 2)

  

  

- @patch("odcs.client.odcs.requests")

+ @mock.patch("odcs.client.odcs.requests")

  class TestComposeLog(unittest.TestCase):

      """Test ODCS.wait_for_compose"""

  
@@ -623,10 +625,10 @@ 

  

      def test_compose_log_multiple_calls(self, requests):

          responses = [

-             MagicMock(status_code=200, text="line\n"),

-             MagicMock(status_code=200, text="another line\n"),

-             MagicMock(status_code=416, text=""),

-             MagicMock(status_code=200, text="another line\n"),

+             mock.MagicMock(status_code=200, text="line\n"),

+             mock.MagicMock(status_code=200, text="another line\n"),

+             mock.MagicMock(status_code=416, text=""),

+             mock.MagicMock(status_code=200, text="another line\n"),

          ]

          requests.get.side_effect = responses

          length = 0

file modified
+4 -1
@@ -25,7 +25,10 @@ 

  import flask

  import unittest

  

- from mock import patch, Mock

+ try:

+     from unittest.mock import patch, Mock

+ except ImportError:

+     from mock import patch, Mock

  

  import odcs.server.auth

  

file modified
+5 -1
@@ -26,7 +26,11 @@ 

  import requests.exceptions

  import shutil

  

- from mock import patch, MagicMock, call, Mock

+ try:

+     from unittest.mock import patch, MagicMock, call, Mock

+ except ImportError:

+     from mock import patch, MagicMock, call, Mock

+ 

  from productmd.rpms import Rpms

  

  from odcs.server import conf, db

@@ -20,9 +20,13 @@ 

  #

  # Written by Jan Kaluza <jkaluza@redhat.com>

  

+ try:

+     from unitest.mock import patch

+ except ImportError:

+     from mock import patch

+ 

  from odcs.server.backend import BackendThread

  from .utils import ModelsBaseTest

- from mock import patch

  

  

  class TestBackendThread(ModelsBaseTest):

file modified
+5 -1
@@ -22,7 +22,11 @@ 

  

  import time

  import os

- from mock import patch, MagicMock, call

+ 

+ try:

+     from unittest.mock import patch, MagicMock, call

+ except ImportError:

+     from mock import patch, MagicMock, call

  

  from .utils import ModelsBaseTest

  import odcs.server

@@ -1,4 +1,8 @@ 

- from mock import patch, Mock, call

+ try:

+     from unittest.mock import patch, Mock, call

+ except ImportError:

+     from mock import patch, Mock, call

+ 

  from datetime import datetime, timedelta

  

  import pytest

@@ -25,7 +25,10 @@ 

  import time

  from datetime import datetime, timedelta

  

- from mock import patch, MagicMock

+ try:

+     from unittest.mock import patch, MagicMock

+ except ImportError:

+     from mock import patch, MagicMock

  

  import odcs.server

  from odcs.server import db, app, conf

file modified
+4 -1
@@ -24,7 +24,10 @@ 

  import six

  import unittest

  

- from mock import patch

+ try:

+     from unittest.mock import patch

+ except ImportError:

+     from mock import patch

  

  from odcs.server import conf

  from odcs.server import db

file modified
+4 -1
@@ -20,7 +20,10 @@ 

  #

  # Written by Jan Kaluza <jkaluza@redhat.com>

  

- from mock import patch

+ try:

+     from unittest.mock import patch

+ except ImportError:

+     from mock import patch

  

  from odcs.server import db

  from odcs.server.models import Compose

@@ -22,7 +22,11 @@ 

  

  import time

  import unittest

- from mock import patch, mock_open, MagicMock

+ 

+ try:

+     from unittest.mock import patch, mock_open, MagicMock

+ except ImportError:

+     from mock import patch, mock_open, MagicMock

  

  from odcs.server.mock_runroot import (

      mock_runroot_init,

file modified
+4 -1
@@ -20,7 +20,10 @@ 

  #

  # Written by Jan Kaluza <jkaluza@redhat.com>

  

- from mock import patch

+ try:

+     from unittest.mock import patch

+ except ImportError:

+     from mock import patch

  

  from odcs.server.pulp import Pulp

  from odcs.server.pungi import PungiSourceType

file modified
+6 -4
@@ -28,7 +28,11 @@ 

  import json

  from productmd import ComposeInfo

  

- from mock import patch, MagicMock, mock_open, call

+ try:

+     from unittest.mock import patch, MagicMock, mock_open, call

+ except ImportError:

+     from mock import patch, MagicMock, mock_open, call

+ 

  from kobo.conf import PyConfigParser

  

  from odcs.server.pungi import (
@@ -450,9 +454,7 @@ 

      def tearDown(self):

          super(TestPungi, self).tearDown()

  

-         self.patch_clone_repo.stop()

-         self.patch_makedirs.stop()

-         self.patch_ci_dump.stop()

+         patch.stopall()

  

          shutil.rmtree(self.compose.toplevel_dir)

  

@@ -22,7 +22,11 @@ 

  

  import six

  import unittest

- from mock import patch

+ 

+ try:

+     from unittest.mock import patch

+ except ImportError:

+     from mock import patch

  

  from odcs.server.pungi_compose import PungiCompose

  

@@ -31,8 +31,11 @@ 

  from .utils import ModelsBaseTest, AnyStringWith

  

  import os

- import mock

- from mock import patch

+ 

+ try:

+     from unittest import mock

+ except ImportError:

+     import mock

  

  

  class TestRemoveExpiredComposesThread(ModelsBaseTest):
@@ -73,10 +76,10 @@ 

              c = db.session.query(Compose).filter(Compose.id == 1).one()

              self.assertEqual(c.state, state)

  

-     @patch("os.unlink")

-     @patch("os.path.realpath")

-     @patch("os.path.exists")

-     @patch("odcs.server.backend.get_latest_symlink")

+     @mock.patch("os.unlink")

+     @mock.patch("os.path.realpath")

+     @mock.patch("os.path.exists")

+     @mock.patch("odcs.server.backend.get_latest_symlink")

      def test_a_compose_which_state_is_done_is_removed(

          self, latest_symlink, exists, realpath, unlink

      ):
@@ -106,9 +109,9 @@ 

              ]

          )

  

-     @patch("os.unlink")

-     @patch("os.path.realpath")

-     @patch("os.path.exists")

+     @mock.patch("os.unlink")

+     @mock.patch("os.path.realpath")

+     @mock.patch("os.path.exists")

      def test_latest_compose_not_removed(self, exists, realpath, unlink):

          """

          Test that we do remove a compose in done state.
@@ -166,9 +169,9 @@ 

                  glob_ret_values[1].append(path)

          glob.side_effect = glob_ret_values

  

-     @patch("os.path.isdir")

-     @patch("glob.glob")

-     @patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

+     @mock.patch("os.path.isdir")

+     @mock.patch("glob.glob")

+     @mock.patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

      def test_remove_left_composes(self, remove_compose_dir, glob, isdir):

          isdir.return_value = True

          self._mock_glob(glob, ["latest-odcs-96-1", "odcs-96-1-20171005.n.0", "odcs-96"])
@@ -182,10 +185,10 @@ 

              ],

          )

  

-     @patch("os.path.isdir")

-     @patch("glob.glob")

-     @patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

-     @patch.object(

+     @mock.patch("os.path.isdir")

+     @mock.patch("glob.glob")

+     @mock.patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

+     @mock.patch.object(

          odcs.server.config.Config,

          "extra_target_dirs",

          new={"releng-private": "/tmp/private"},
@@ -206,27 +209,27 @@ 

              ],

          )

  

-     @patch("os.path.isdir")

-     @patch("glob.glob")

-     @patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

+     @mock.patch("os.path.isdir")

+     @mock.patch("glob.glob")

+     @mock.patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

      def test_remove_left_composes_not_dir(self, remove_compose_dir, glob, isdir):

          isdir.return_value = False

          self._mock_glob(glob, ["latest-odcs-96-1"])

          self.thread.do_work()

          remove_compose_dir.assert_not_called()

  

-     @patch("os.path.isdir")

-     @patch("glob.glob")

-     @patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

+     @mock.patch("os.path.isdir")

+     @mock.patch("glob.glob")

+     @mock.patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

      def test_remove_left_composes_wrong_dir(self, remove_compose_dir, glob, isdir):

          isdir.return_value = True

          self._mock_glob(glob, ["latest-odcs-", "odcs-", "odcs-abc"])

          self.thread.do_work()

          remove_compose_dir.assert_not_called()

  

-     @patch("os.path.isdir")

-     @patch("glob.glob")

-     @patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

+     @mock.patch("os.path.isdir")

+     @mock.patch("glob.glob")

+     @mock.patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

      def test_remove_left_composes_valid_compose(self, remove_compose_dir, glob, isdir):

          isdir.return_value = True

          self._mock_glob(glob, ["latest-odcs-1-1", "odcs-1-1-2017.n.0"])
@@ -237,9 +240,9 @@ 

          self.thread.do_work()

          remove_compose_dir.assert_not_called()

  

-     @patch("os.path.isdir")

-     @patch("glob.glob")

-     @patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

+     @mock.patch("os.path.isdir")

+     @mock.patch("glob.glob")

+     @mock.patch("odcs.server.backend.RemoveExpiredComposesThread._remove_compose_dir")

      def test_remove_left_composes_expired_compose(

          self, remove_compose_dir, glob, isdir

      ):
@@ -258,10 +261,10 @@ 

              ],

          )

  

-     @patch("shutil.rmtree")

-     @patch("os.unlink")

-     @patch("os.path.realpath")

-     @patch("os.path.exists")

+     @mock.patch("shutil.rmtree")

+     @mock.patch("os.unlink")

+     @mock.patch("os.path.realpath")

+     @mock.patch("os.path.exists")

      def test_remove_compose_dir_symlink(self, exists, realpath, unlink, rmtree):

          exists.return_value = True

          toplevel_dir = "/odcs"
@@ -271,10 +274,10 @@ 

          unlink.assert_called_once()

          rmtree.assert_called_once()

  

-     @patch("shutil.rmtree")

-     @patch("os.unlink")

-     @patch("os.path.realpath")

-     @patch("os.path.exists")

+     @mock.patch("shutil.rmtree")

+     @mock.patch("os.unlink")

+     @mock.patch("os.path.realpath")

+     @mock.patch("os.path.exists")

      def test_remove_compose_dir_broken_symlink(self, exists, realpath, unlink, rmtree):

          def mocked_exists(p):

              return p != "/odcs-real"
@@ -287,10 +290,10 @@ 

          unlink.assert_called_once()

          rmtree.assert_not_called()

  

-     @patch("shutil.rmtree")

-     @patch("os.unlink")

-     @patch("os.path.realpath")

-     @patch("os.path.exists")

+     @mock.patch("shutil.rmtree")

+     @mock.patch("os.unlink")

+     @mock.patch("os.path.realpath")

+     @mock.patch("os.path.exists")

      def test_remove_compose_dir_real_dir(self, exists, realpath, unlink, rmtree):

          exists.return_value = True

          toplevel_dir = "/odcs"
@@ -300,10 +303,10 @@ 

          unlink.assert_not_called()

          rmtree.assert_called_once()

  

-     @patch("os.unlink")

-     @patch("os.path.realpath")

-     @patch("os.path.exists")

-     @patch("odcs.server.backend.log.warning")

+     @mock.patch("os.unlink")

+     @mock.patch("os.path.realpath")

+     @mock.patch("os.path.exists")

+     @mock.patch("odcs.server.backend.log.warning")

      def test_remove_compose_rmtree_error(self, log_warning, exists, realpath, unlink):

          exists.return_value = True

          toplevel_dir = "/odcs"

file modified
+5 -1
@@ -23,7 +23,11 @@ 

  import six

  import unittest

  

- from mock import patch, call

+ try:

+     from unittest.mock import patch, call

+ except ImportError:

+     from mock import patch, call

+ 

  import time

  

  from odcs.server.utils import execute_cmd

file modified
+5 -1
@@ -30,7 +30,11 @@ 

  

  from werkzeug.exceptions import BadRequest

  from freezegun import freeze_time

- from mock import patch, PropertyMock, call

+ 

+ try:

+     from unittest.mock import patch, PropertyMock, call

+ except ImportError:

+     from mock import patch, PropertyMock, call

  

  import odcs.server.auth

  

file modified
+5 -1
@@ -29,7 +29,11 @@ 

  from odcs.server.events import start_to_publish_messages

  

  from flask_sqlalchemy import SignallingSession

- from mock import patch

+ 

+ try:

+     from unittest.mock import patch

+ except ImportError:

+     from mock import patch

  

  

  class AnyStringWith(str):

file modified
+1 -1
@@ -3,4 +3,4 @@ 

  responses

  tox

  freezegun

- mock

+ mock  # Python2 only