Esempio n. 1
0
class ShouldUpdateTest(TestCase):
    def setUp(self):
        self.config = Config()

        self.req1 = Mock()
        self.req1.key = "foo"
        self.req1.latest_version_within_specs = "0.2"
        self.req1.needs_update = True
        self.req1.is_pinned = True
        self.req1.is_insecure = False

        self.req2 = Mock()
        self.req2.key = "bar"
        self.req2.latest_version_within_specs = "0.2"
        self.req2.needs_update = True
        self.req2.is_pinned = True
        self.req2.is_insecure = False

        self.req_file = Mock()
        self.req_file.requirements = [self.req1, self.req2]
        self.req_file.path = "requirements.txt"

        self.update = Update(requirement_files=[self.req_file],
                             config=self.config)

    def test_default_yes(self):
        self.assertTrue(self.update.should_update(self.req1, self.req_file))

    def test_update_all_restricted_in_file(self):
        self.assertTrue(self.update.should_update(self.req1, self.req_file))

        self.config.requirements = [
            RequirementConfig(path="requirements.txt", update="insecure")
        ]
        self.assertFalse(self.update.should_update(self.req1, self.req_file))

    def test_update_insecure(self):
        self.config.update = "insecure"
        self.assertFalse(self.update.should_update(self.req1, self.req_file))

        self.req1.is_insecure = True
        self.assertTrue(self.update.should_update(self.req1, self.req_file))

    def test_update_unpinned(self):
        self.config.update = "all"
        self.config.pin = False
        self.req1.is_pinned = False

        self.assertFalse(self.update.should_update(self.req1, self.req_file))

        self.req1.is_pinned = True
        self.assertTrue(self.update.should_update(self.req1, self.req_file))

        self.req1.is_pinned = False
        self.config.pin = True
        self.assertTrue(self.update.should_update(self.req1, self.req_file))