added cmdline login functionality
This commit is contained in:
parent
68867718af
commit
28ca0ac4eb
@ -299,6 +299,14 @@ test "$(sqlite3 twitter.db "select count(*) from users where is_followed = 1")"
|
||||
tw unfollow cernovich
|
||||
test "$(sqlite3 twitter.db "select count(*) from users where is_followed = 1")" = "0"
|
||||
|
||||
# Testing login
|
||||
tw login offline_twatter S1pKIW#eRT016iA@OFcK
|
||||
test -f Offline_Twatter.session
|
||||
test "$(jq .UserHandle Offline_Twatter.session)" = "\"Offline_Twatter\""
|
||||
test "$(jq .IsAuthenticated Offline_Twatter.session)" = "true"
|
||||
|
||||
|
||||
# TODO: Maybe this file should be broken up into multiple test scripts
|
||||
|
||||
echo -e "\033[32mAll tests passed. Finished successfully.\033[0m"
|
||||
|
||||
|
@ -36,6 +36,7 @@ func die(text string, display_help bool, exit_code int) {
|
||||
func happy_exit(text string) {
|
||||
fmt.Printf(terminal_utils.COLOR_GREEN + text + terminal_utils.COLOR_RESET + "\n")
|
||||
fmt.Printf(terminal_utils.COLOR_GREEN + "Exiting successfully." + terminal_utils.COLOR_RESET + "\n")
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -86,11 +86,20 @@ func main() {
|
||||
}
|
||||
|
||||
profile, err = persistence.LoadProfile(*profile_dir)
|
||||
|
||||
if err != nil {
|
||||
die(fmt.Sprintf("Could not load profile: %s", err.Error()), true, 2)
|
||||
}
|
||||
|
||||
if len(args) == 3 && args[0] == "login" {
|
||||
username := args[1]
|
||||
password := args[2]
|
||||
|
||||
login(username, password)
|
||||
}
|
||||
|
||||
switch operation {
|
||||
|
||||
case "create_profile":
|
||||
create_profile(target)
|
||||
case "fetch_user":
|
||||
@ -120,6 +129,21 @@ func main() {
|
||||
}
|
||||
}
|
||||
|
||||
// Log into twitter
|
||||
//
|
||||
// args:
|
||||
// - username: twitter username or email address
|
||||
// - password: twitter account password
|
||||
|
||||
func login(username string, password string) {
|
||||
|
||||
api := scraper.NewGuestSession()
|
||||
api.LogIn(username, password)
|
||||
|
||||
profile.SaveSession(api)
|
||||
happy_exit("Logged in as " + string(api.UserHandle))
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a data directory.
|
||||
*
|
||||
|
@ -4,6 +4,8 @@ import (
|
||||
"encoding/json"
|
||||
"offline_twitter/scraper"
|
||||
"os"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func (p Profile) SaveSession(api scraper.API) {
|
||||
@ -12,6 +14,7 @@ func (p Profile) SaveSession(api scraper.API) {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
log.Debug("Profile Dir: " + p.ProfileDir)
|
||||
err = os.WriteFile(p.ProfileDir+"/"+string(api.UserHandle+".session"), data, os.FileMode(0644))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
|
@ -18,7 +18,7 @@ import (
|
||||
// TODO authentication: this has to be removed and replaced with an integration test once the feature is stable-ish
|
||||
func TestAuthentication(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
require := require.New(t)
|
||||
//require := require.New(t)
|
||||
|
||||
username := "offline_twatter"
|
||||
password := "S1pKIW#eRT016iA@OFcK"
|
||||
@ -30,11 +30,11 @@ func TestAuthentication(t *testing.T) {
|
||||
assert.NotEqual(api.CSRFToken, "")
|
||||
assert.Equal(api.UserHandle, UserHandle("Offline_Twatter"))
|
||||
|
||||
response, err := api.GetLikesFor(1458284524761075714, "")
|
||||
require.NoError(err)
|
||||
trove, err := response.ToTweetTrove()
|
||||
require.NoError(err)
|
||||
assert.True(len(trove.Tweets) > 0)
|
||||
// response, err := api.GetLikesFor(1458284524761075714, "")
|
||||
// require.NoError(err)
|
||||
// trove, err := response.ToTweetTrove()
|
||||
// require.NoError(err)
|
||||
// assert.True(len(trove.Tweets) > 0)
|
||||
}
|
||||
|
||||
// An API object should serialize and then deserialize to give the same session state from before.
|
||||
|
Loading…
x
Reference in New Issue
Block a user