def test_clean_url(self):
        from oauth2_provider.provider import AuthorizationProvider
        provider = AuthorizationProvider()

        verify_client_id = Mock(return_value = True)
        verify_redirect_uri = Mock(return_value = True)
        verify_scope = Mock(return_value = True)
        save_data = Mock()

        provider.verify_client_id = verify_client_id
        provider.verify_redirect_uri = verify_redirect_uri
        provider.verify_scope = verify_scope
        provider.save_data = save_data
        provider.generate_authorization_code = Mock(return_value='bar')

        redirect_uri = 'http://google.com?this=bad&so=is_this'
        client_id = 'client_id'
        scope = 'foo,bar'
        state = 'omgz'

        results = provider.verify_auth_request('code', client_id,
                redirect_uri=redirect_uri, scope=scope, state=state)


        save_data.assert_called_with(client_id, 'bar', scope, redirect_uri)

        assert state in results['redirect_uri']
        assert not 'this' in results['redirect_uri']
        assert not 'bad' in results['redirect_uri']
        assert not 'so' in results['redirect_uri']
    def test_save_data(self):
        from oauth2_provider.provider import AuthorizationProvider
        provider = AuthorizationProvider()

        with self.assertRaises(NotImplementedError):
            provider.save_data('foo', 'bar', 'baz', 'boom!')