def test_encode_obj(self): self.assertEqual(User.query(User).count(), 1) first_user = User.query().first() obj = SQLAlchemy2DictEncoder(fields=[ 'id', # int 'username', # str 'created_at' ]).encode(first_user) self.assertIsInstance(obj, dict) self.assertEqual(obj['id'], 1) self.assertEqual(obj['username'], 'test') self.assertIsInstance(obj['created_at'], datetime)
def test_getattr(self): user = User( username="******", tenant_id="mt_tenant_1", user_id="mt_user_1", ) user.save_object() self.assertEqual(User.query(User).count(), 1) first_user = User.query(User).one() self.assertEqual(first_user['username'], "test") first_user['username'] = "******" self.assertEqual(first_user.username, "test2") User.save_updates(first_user)
def test_encode_query(self): self.assertEqual(User.query(User).count(), 1) query = User.query() self.assertIsInstance(query, Query) result = SQLAlchemy2DictEncoder(fields=[ 'id', # int 'username', # str 'created_at' ]).encode(query) self.assertIsInstance(result, list) self.assertEqual(len(result), 1) obj = result[0] self.assertEqual(obj['id'], 1) self.assertEqual(obj['username'], 'test') self.assertIsInstance(obj['created_at'], datetime)
def test_todict(self): user = User( username="******", tenant_id="mt_tenant_1", user_id="mt_user_1", ) user.save_object() self.assertEqual(User.query(User).count(), 1) first_user = User.query(User).one() self.assertIsNone(first_user.deleted_at) expect = { 'username': u'test', 'user_id': u'mt_user_1', 'tenant_id': u'mt_tenant_1', u'deleted_at': None, 'id': 1 } user_obj = first_user.to_dict() for key, value in expect.iteritems(): self.assertEqual(user_obj[key], value)
def test_picker(self): User(username="******", tenant_id="mt_tenant_1", user_id="mt_user_1").save_object() user = User.query().first() # have not error dumped_user = user.dumps() loaded_user = User.loads(dumped_user) self.assertEqual(loaded_user.username, user.username) self.assertEqual(loaded_user.tenant_id, user.tenant_id) self.assertEqual(loaded_user.user_id, user.user_id) self.assertEqual(loaded_user.id, user.id) self.assertEqual(loaded_user.updated_at, user.updated_at)
def test_sso(self): """测试SSO过程 默认的http_client是AsyncHTTPClient 这里不用SessionClient,是因为SessionClient依赖RESTfulAsyncClient 而后者被上面mock掉了 """ # 首页现在重定向到analyze了也需要登录了 # response = self.fetch("/") # # 维持一个session # self.assertTrue(response.effective_url.startswith("http://localhost")) cookies = [] # for cookie in response.headers.get_list("Set-Cookie"): # cookies.append(self._parse_cookie(cookie)) headers = {} url = self.reverse_url("user:logout") response = self.fetch(url, headers=headers) self.assertFalse(response.effective_url.startswith("http://localhost")) self.assertEqual(User.query(User.id).count(), 0) # 经过一番重定向(外部忽略)后,带着token回到callback页面,并登陆 response2 = self.fetch( "/user/callback", method="POST", body="token=suibianshenme", headers=headers, # !!!跟随重定向的时候,cookie就没了,这尼玛心塞 follow_redirects=False) self.assertEqual(User.query(User.id).count(), 1) first_user = User.query(User).one() self.assertEqual(first_user.username, "testusername") self.assertEqual(first_user.tenant_id, "mt_tenant_1") self.assertEqual(first_user.user_id, "mt_user_1") # 再次带着登陆的Cookie for cookie in response2.headers.get_list("Set-Cookie"): cookies.append(self._parse_cookie(cookie)) headers = {"Cookie": "; ".join(cookies)} # 再访问之前需要登录的链接 response = self.fetch("/analyze/", headers=headers) self.assertTrue(response.effective_url.startswith("http://localhost"))
def test_create_or_get(self): self.assertEqual(User.query(User.id).count(), 0) obj, is_created = User.create_or_get(username="******", tenant_id="mt_tenant_1", user_id="mt_user_1") self.assertEqual(obj.id, 1) self.assertEqual(is_created, True) obj, is_created = User.create_or_get(username="******", tenant_id="mt_tenant_1", user_id="mt_user_1") self.assertEqual(obj.id, 1) self.assertEqual(is_created, False) obj, is_created = User.create_or_get(username="******", tenant_id="mt_tenant_1", user_id="mt_user_1") self.assertEqual(obj.id, 1) self.assertEqual(is_created, False)
def test_update_or_create(self): self.assertEqual(User.query(User.id).count(), 0) obj, is_created = User.update_or_create(username="******", defaults={ "tenant_id": "mt_tenant_1", "user_id": "mt_user_1" }) self.assertEqual(obj.id, 1) self.assertEqual(is_created, True) self.assertEqual(User.query(User.id).count(), 1) first_user = User.query(User).one() self.assertEqual(first_user.username, "test") self.assertEqual(first_user.tenant_id, "mt_tenant_1") self.assertEqual(first_user.user_id, "mt_user_1") # 一样的数据则不修改 obj, is_created = User.update_or_create(username="******", defaults={ "tenant_id": "mt_tenant_1", "user_id": "mt_user_1" }) self.assertEqual(obj.id, 1) self.assertEqual(is_created, False) self.assertEqual(User.query(User.id).count(), 1) obj, is_created = User.update_or_create(username="******", defaults={ "tenant_id": "mt_tenant_12", "user_id": "mt_user_12" }) self.assertEqual(obj.id, 1) self.assertEqual(is_created, False) self.assertEqual(User.query(User.id).count(), 1) first_user = User.query(User).first() self.assertEqual(first_user.username, "test") self.assertEqual(first_user.tenant_id, "mt_tenant_12") self.assertEqual(first_user.user_id, "mt_user_12")
def test_create(self): self.assertEqual(User.query(User.id).count(), 0) user = User( username="******", tenant_id="mt_tenant_1", user_id="mt_user_1", ) user.save_object() self.assertEqual(User.query(User).count(), 1) first_user = User.query(User).one() self.assertEqual(first_user.username, "test") self.assertEqual(first_user.tenant_id, "mt_tenant_1") self.assertEqual(first_user.user_id, "mt_user_1") yield gen.sleep(1) first_user.username = '******' # first_user.updated_at = datetime(2010, 1, 1,tzinfo=UTC) first_user.save_object() self.assertEqual(User.query(User).count(), 1) first_user = User.query(User).one() self.assertGreater(first_user.updated_at, first_user.created_at) # first_user.updated_at = datetime(2010, 1, 1, tzinfo=UTC) # first_user.save_object() first_user = User.query(User).first()
def get_current_user_async(): user = User.query().get(user_id) raise Return(user)
def get_user(self): user = User.query().filter_by(username="******").one() return user
def test_user(self): self.assertEqual(User.query(User.id).count(), 0)