def setUp(self): self.base = 'http://example.com/cookbooks' self.remote = HttpCookbookRemote(self.base)
class TestHttpCookbookRemote(unittest.TestCase): def setUp(self): self.base = 'http://example.com/cookbooks' self.remote = HttpCookbookRemote(self.base) def u(self, path): return self.base + path @patch('requests.get') def test_downloading_a_url_to_file(self, p_get): url = self.u('/foo/bar/baz') response = Mock() f = Mock() p_get.return_value = response response.ok = True response.iter_content = lambda : ['foo', 'bar', 'baz'] self.remote._download(url, f) p_get.assert_called_once_with(url) f.write.assert_has_calls([call('foo'), call('bar'), call('baz')]) def test_url(self): url = self.remote._url('foo', '1.0', '.tar.gz') self.assertEqual(url, self.base + '/foo/1.0/foo.tar.gz') def test_save_cookbook_to(self): url = self.patch_internal_methods() f = Mock() self.remote.save_cookbook_to(f, 'foo', '1.0') self.remote._url.assert_called_once_with('foo', '1.0', '.tar.gz') self.remote._download.assert_called_once_with(url, f) def test_save_cookbook_metadata_to(self): url = self.patch_internal_methods() f = Mock() self.remote.save_cookbook_metadata_to(f, 'bar', '1.1') self.remote._url.assert_called_once_with('bar', '1.1', '.json') self.remote._download.assert_called_once_with(url, f) def test_save_cookbook_versions_to(self): self.patch_internal_methods() url = self.base + '/baz/versions.json' f = Mock() self.remote.save_cookbook_versions_to(f, 'baz') self.remote._download.assert_called_once_with(url, f) def patch_internal_methods(self): self.remote._url = Mock() self.remote._download = Mock() url = Mock() self.remote._url.return_value = url return url