def test_success(self): site = mommy.make_one(Site) user = mommy.make_one(MainUser) ndb.put_multi([site, user]) create_login = CreateLogin(user, site, 'hook') create_login.execute() login = create_login.result self.assertIsNotNone(login) self.assertEqual(LOGIN_CALL, login.status) self.assertEqual('hook', login.hook) db_login = Login.query().get() self.assertEqual(db_login.key, login.key) def neighbor(cls): DestinationsSearch.arc_class = cls search = DestinationsSearch(login) search.execute() self.assertEqual(1, len(search.result), cls) return search.result[0] n_user = neighbor(LoginUser) self.assertEqual(n_user.key, user.key) n_site = neighbor(LoginSite) self.assertEqual(n_site.key, site.key) login_status = neighbor(LoginStatusArc) self.assertEqual(LOGIN_CALL, login_status.label)
def test_spam(self): site = mommy.make_one(Site, domain='www.pswd.com') user = mommy.make_one(MainUser) ndb.put_multi([site, user]) create_login = CreateLogin(user, site, 'hook') create_login.execute() # time.sleep(3) # giving time because eventual consistency validate_cmd = ValidateLoginCall(site.key.id(), site.token, 'http://www.pswd.com/pswdless', user.key.id()) self.assertRaises(CommandExecutionException, validate_cmd.execute) self.assertDictEqual({'spam': 'Spam not allowed'}, validate_cmd.errors)
def _assert_succes_with_status(self, status): site = mommy.make_one(Site, domain='www.pswd.com') user = mommy.make_one(MainUser) ndb.put_multi([site, user]) create_login = CreateLogin(user, site, 'hook') create_login.execute() lg = Login.query().get() lg.status = status lg.put() validate_cmd = ValidateLoginCall(site.key.id(), site.token, 'http://www.pswd.com/pswdless', user.key.id()) validate_cmd.execute() self.assertDictEqual({}, validate_cmd.errors)
def test_success_after_one_hour(self): site = mommy.make_one(Site, domain='www.pswd.com') user = mommy.make_one(MainUser) ndb.put_multi([site, user]) create_login = CreateLogin(user, site, 'hook') create_login.execute() lg = Login.query().get() lg.creation = datetime.now() - timedelta(hours=1, minutes=1) lg.put() validate_cmd = ValidateLoginCall(site.key.id(), site.token, 'http://www.pswd.com/pswdless', user.key.id()) validate_cmd.execute() self.assertDictEqual({}, validate_cmd.errors)