diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 9ce0a9b..bd06dba 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,6 +1,9 @@ 0.7.0 (Planned) [+] Added mock.MockQualtrics object (for unit testing code that uses pyqualtrics.Qualtrics class) +0.6.3 + [*] getSurvey return None if using invalid token + 0.6.2 [*] Fixed error message in getResponse when dealing with deleted responses diff --git a/pyqualtrics/__init__.py b/pyqualtrics/__init__.py index c1c597e..6679a67 100644 --- a/pyqualtrics/__init__.py +++ b/pyqualtrics/__init__.py @@ -159,6 +159,11 @@ def request(self, Request, Product='RS', post_data=None, post_files=None, **kwar if r.status_code == 403: self.last_error_message = "API Error: HTTP Code %s (Forbidden)" % r.status_code return None + if r.status_code == 401 and Request == "getSurvey": + # I'm don't know if 401 is returned for requests other than getSurvey + self.last_error_message = "API Error: HTTP Code %s (Unauthorized)" % r.status_code + return None + try: if Request == "getLegacyResponseData": # Preserve order of responses and fields in each response using OrderedDict diff --git a/setup.py b/setup.py index eebbe70..464936a 100644 --- a/setup.py +++ b/setup.py @@ -28,7 +28,7 @@ setup( name="pyqualtrics", - version="0.6.2", + version="0.6.3", author="Alex Vyushkov", author_email="pyqualtrics@gmail.com", description="Unofficial python SDK for Qualtrics API", diff --git a/tests/__init__.py b/tests/__init__.py index 46ff2f5..c85bac2 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -677,17 +677,7 @@ def test_not_a_json_document_google_com(self): self.assertIsNone(qualtrics.json_response) self.assertIsNone(result) - def test_ssl_error_1(self): - # This only works on Notre Dame VPN - qualtrics = Qualtrics(self.user, "123") - qualtrics.url = "https://vecnet-ingest.crc.nd.edu/" - result = qualtrics.getLegacyResponseData(SurveyID=self.survey_id) - self.assertIn("CERTIFICATE_VERIFY_FAILED", qualtrics.last_error_message) - qualtrics.requests_kwargs = {"verify": False} - result = qualtrics.getLegacyResponseData(SurveyID=self.survey_id) - self.assertNotIn("CERTIFICATE_VERIFY_FAILED", qualtrics.last_error_message) - - def test_ssl_error_2(self): + def test_ssl_error(self): # This may fail is 129.74.247.12 is down or certificate error is corrected qualtrics = Qualtrics(self.user, "123") qualtrics.url = "https://129.74.247.12/" @@ -698,6 +688,11 @@ def test_ssl_error_2(self): result = qualtrics.getLegacyResponseData(SurveyID=self.survey_id) self.assertNotIn("CERTIFICATE_VERIFY_FAILED", qualtrics.last_error_message) + def test_get_survey_unauthorized(self): + qualtrics = Qualtrics(self.user, "123") + result = qualtrics.getSurvey(self.survey_id) + self.assertEqual(result, None) + self.assertEqual(qualtrics.last_error_message, "API Error: HTTP Code 401 (Unauthorized)") def tearDown(self): # Note that tearDown is called after EACH test