Beispiel #1
0
func (w *Worker) LoginWithSuccess(from *ip.IP, user *user.User) error {
	defer w.Reset()
	defer func() {
		user.LastLoginedIP = from
		user.LastLoginedTime = time.Now()
	}()

	topPage := NewScenario("GET", "/")
	topPage.IP = from
	topPage.ExpectedStatusCode = 200
	topPage.ExpectedSelectors = []string{"//input[@name='login']", "//input[@name='password']", "//*[@type='submit']"}
	topPage.ExpectedAssets = defaultExpectedAssets

	err := topPage.Play(w)

	if err != nil {
		return err
	}

	login := NewScenario("POST", "/login")
	login.IP = from
	login.PostData = map[string]string{
		"login":    user.Name,
		"password": user.RightPassword,
	}
	login.ExpectedStatusCode = 200
	login.ExpectedLocation = "/mypage"
	if user.LastLoginedIP != nil {
		login.ExpectedHTML = map[string]string{
			"//*[@id='last-logined-ip']": user.LastLoginedIP.String(),
		}
		login.ExpectedLastLoginedAt = user.LastLoginedTime
	}
	login.ExpectedAssets = defaultExpectedAssets

	err = login.Play(w)

	from.Success()
	user.Success()

	return err
}