| 
17 | 17 | from requests_oauthlib.compliance_fixes import mailchimp_compliance_fix  | 
18 | 18 | from requests_oauthlib.compliance_fixes import weibo_compliance_fix  | 
19 | 19 | from requests_oauthlib.compliance_fixes import slack_compliance_fix  | 
 | 20 | +from requests_oauthlib.compliance_fixes import instagram_compliance_fix  | 
20 | 21 | from requests_oauthlib.compliance_fixes import plentymarkets_compliance_fix  | 
21 | 22 | 
 
  | 
22 | 23 | 
 
  | 
@@ -275,6 +276,58 @@ def test_protected_request_override_token_url(self):  | 
275 | 276 |         self.assertIsNone(response.request.body)  | 
276 | 277 | 
 
  | 
277 | 278 | 
 
  | 
 | 279 | +class InstagramComplianceFixTest(TestCase):  | 
 | 280 | + | 
 | 281 | +    def setUp(self):  | 
 | 282 | +        mocker = requests_mock.Mocker()  | 
 | 283 | +        mocker.request(  | 
 | 284 | +            method="GET",  | 
 | 285 | +            url="https://api.instagram.com/v1/users/self",  | 
 | 286 | +            json={  | 
 | 287 | +                "data": {  | 
 | 288 | +                    "id": "1574083",  | 
 | 289 | +                    "username": "snoopdogg",  | 
 | 290 | +                    "full_name": "Snoop Dogg",  | 
 | 291 | +                    "profile_picture": "http://distillery.s3.amazonaws.com/profiles/profile_1574083_75sq_1295469061.jpg",  | 
 | 292 | +                    "bio": "This is my bio",  | 
 | 293 | +                    "website": "http://snoopdogg.com",  | 
 | 294 | +                    "is_business": False,  | 
 | 295 | +                    "counts": {  | 
 | 296 | +                        "media": 1320,  | 
 | 297 | +                        "follows": 420,  | 
 | 298 | +                        "followed_by": 3410  | 
 | 299 | +                    }  | 
 | 300 | +                }  | 
 | 301 | +            }  | 
 | 302 | +        )  | 
 | 303 | +        mocker.start()  | 
 | 304 | +        self.addCleanup(mocker.stop)  | 
 | 305 | + | 
 | 306 | +        instagram = OAuth2Session('someclientid', redirect_uri='https://i.b')  | 
 | 307 | +        self.session = instagram_compliance_fix(instagram)  | 
 | 308 | + | 
 | 309 | +    def test_protected_request(self):  | 
 | 310 | +        self.session.token = {"access_token": 'dummy-access-token'}  | 
 | 311 | +        response = self.session.get(  | 
 | 312 | +            "https://api.instagram.com/v1/users/self"  | 
 | 313 | +        )  | 
 | 314 | +        url = response.request.url  | 
 | 315 | +        query = parse_qs(urlparse(url).query)  | 
 | 316 | +        self.assertIn("access_token", query)  | 
 | 317 | +        self.assertEqual(query["access_token"], ["dummy-access-token"])  | 
 | 318 | + | 
 | 319 | +    def test_protected_request_dont_override(self):  | 
 | 320 | +        """check that if the access_token param  | 
 | 321 | +        already exist we don't override it"""  | 
 | 322 | +        self.session.token = {"access_token": 'dummy-access-token'}  | 
 | 323 | +        response = self.session.get(  | 
 | 324 | +            "https://api.instagram.com/v1/users/self?access_token=correct-access-token"  | 
 | 325 | +        )  | 
 | 326 | +        url = response.request.url  | 
 | 327 | +        query = parse_qs(urlparse(url).query)  | 
 | 328 | +        self.assertIn("access_token", query)  | 
 | 329 | +        self.assertEqual(query["access_token"], ["correct-access-token"])  | 
 | 330 | + | 
278 | 331 | class PlentymarketsComplianceFixTest(TestCase):  | 
279 | 332 | 
 
  | 
280 | 333 |     def setUp(self):  | 
 | 
0 commit comments