def test_auth_types_interaction(): """Test the various options for configuration work as expected.""" # 1. bearer_token auth -> app auth tw = twarc.Twarc2(bearer_token=bearer_token) assert tw.auth_type == "application" for response in tw.user_lookup(range(1, 101)): assert response["data"] tw.client.close() # 2. consumer_keys tw = twarc.Twarc2(consumer_key=consumer_key, consumer_secret=consumer_secret) assert tw.auth_type == "application" for response in tw.user_lookup(range(1, 101)): assert response["data"] tw.client.close() # 3. Full user auth tw = twarc.Twarc2(access_token=access_token, access_token_secret=access_token_secret, consumer_key=consumer_key, consumer_secret=consumer_secret) assert tw.auth_type == "user" for response in tw.user_lookup(range(1, 101)): assert response["data"] tw.client.close() with pytest.raises(twarc.client2.InvalidAuthType): tw.sample()
def twarc2( ctx, consumer_key, consumer_secret, access_token, access_token_secret, bearer_token, log, metadata, app_auth ): """ Collect data from the Twitter V2 API. """ logging.basicConfig( filename=log, level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s" ) if bearer_token or (consumer_key and consumer_secret): if app_auth and (bearer_token or (consumer_key and consumer_secret)): ctx.obj = twarc.Twarc2( consumer_key=consumer_key, consumer_secret=consumer_secret, bearer_token=bearer_token, metadata=metadata ) # Check everything is present for user auth. elif (consumer_key and consumer_secret and access_token and access_token_secret): ctx.obj = twarc.Twarc2( consumer_key=consumer_key, consumer_secret=consumer_secret, access_token=access_token, access_token_secret=access_token_secret, metadata=metadata ) else: click.echo( click.style( '🙃 To use user authentication, you need all of the following:\n' '- consumer_key\n', '- consumer_secret\n', '- access_token\n', '- access_token_secret\n', fg='red'), err=True ) click.echo("You can configure twarc2 using the `twarc2 configure` command.") else: click.echo() click.echo("👋 Hi I don't see a configuration file yet, so lets make one.") click.echo() click.echo("Please follow these steps:") click.echo() click.echo("1. visit https://developer.twitter.com/en/portal/") click.echo("2. create a project and an app") click.echo("3. go to your Keys and Tokens and generate your keys") click.echo() ctx.invoke(configure)
dotenv.load_dotenv() consumer_key = os.environ.get('CONSUMER_KEY') consumer_secret = os.environ.get('CONSUMER_SECRET') bearer_token = os.environ.get("BEARER_TOKEN") access_token = os.environ.get('ACCESS_TOKEN') access_token_secret = os.environ.get('ACCESS_TOKEN_SECRET') logging.basicConfig(filename="test.log", level=logging.INFO) # Implicitly test the constructor in application auth mode. This ensures that # the tests don't depend on test ordering, and allows using the pytest # functionality to only run a single test at a time. T = twarc.Twarc2( consumer_key=consumer_key, consumer_secret=consumer_secret, ) def test_version(): import setup assert setup.version == twarc.version def test_auth_types_interaction(): """Test the various options for configuration work as expected.""" # 1. bearer_token auth -> app auth tw = twarc.Twarc2(bearer_token=bearer_token) assert tw.auth_type == "application" for response in tw.user_lookup(range(1, 101)):