#378 Protect get_user_packages from malformed JSON
Merged 6 years ago by abompard. Opened 6 years ago by abompard.
abompard/fedora-hubs fix/packages-invalid-value  into  develop

@@ -63,3 +63,13 @@ 

          get_user_packages("abompard", use_cache=True)

          self.assertTrue(self._is_cached())

          self.assertEqual(requests.get.call_count, 1)

+ 

+     @patch("hubs.utils.packages.requests")

+     def test_get_user_packages_malformed(self, requests):

+         response = Mock()

+         response.json.return_value = {

+             "error": "something bad happened"

+         }

+         requests.get.return_value = response

+         pkgs = get_user_packages("abompard", use_cache=False)

+         self.assertListEqual(pkgs, [])

file modified
+8 -1
@@ -40,8 +40,15 @@ 

                  "Invalid JSON response getting the list of packages "

                  "owned by %s: %s", username, response.text)

              return []

+         try:

+             repos = data["repos"]

+         except KeyError:

+             log.warning(

+                 "Malformed JSON response getting the list of packages "

+                 "owned by %s: %s", username, response.text)

+             return []

          return sorted(set(

-             repo['name'] for repo in data["repos"]

+             repo['name'] for repo in repos

              if not only_owned or repo["user"]["name"] == username

              ))

      if not use_cache:

no initial comment

rebased

6 years ago

Pull-Request has been merged by abompard

6 years ago