def index(): if not github.authorized: return redirect("/auth") resp = github.get("/user") assert resp.ok githubData = resp.json() u = User.where('github_id', githubData["id"]).first() if u == None: print("none") user = User() user.name = githubData["name"] user.username = githubData["login"] user.email = githubData["email"] user.github_id = githubData["id"] user.avatar_url = githubData["avatar_url"] user.github_api_url = githubData["url"] user.access_token = session["github_oauth_token"]["access_token"] user.github_html_url = githubData["html_url"] user.save() u = user session["user"] = u.to_json() return render_template("search.html", user=u)
class TestUserPrefs(TestFlask): def setUp(self): super().setUp() self.session.begin_nested() light_theme = Theme(name='light') dark_theme = Theme(name='dark') self.session.add(light_theme) self.session.add(dark_theme) self.user = User(name="Test User", email="*****@*****.**", theme=light_theme.id) self.session.add(self.user) self.session.commit() with self.client as c: with c.session_transaction() as sess: set_session_user(self.user, current_session=sess) g.user = self.user def test_set_user_email(self): response = self.client.post("/preferences/email", data={"email": "*****@*****.**"}) self.assertEqual(response.status_code, 204) self.assertEqual(self.user.email, "*****@*****.**") bad_response = self.client.post("/preferences/email", data={"email": "fakeemail"}) self.assertEqual(bad_response.status_code, 400) self.assertEqual(self.user.email, "*****@*****.**") def test_set_user_name(self): response = self.client.post("/preferences/name", data={"name": "foobar"}) self.assertEqual(response.status_code, 204) self.assertEqual(self.user.name, "foobar") def test_set_user_theme(self): response = self.client.post("/theme/dark", data={}) self.assertEqual(response.status_code, 204) dark_theme = Theme.query.filter_by(id=self.user.theme).first() self.assertEqual(dark_theme.name, "dark") self.client.get("/") # make sure the dark theme files get generated response2 = self.client.post("/theme/light", data={}) self.assertEqual(response2.status_code, 204) light_theme = Theme.query.filter_by(id=self.user.theme).first() self.assertEqual(light_theme.name, "light") @skipIf(auth['imgur']['client-id'] == "IMGUR_CLIENT_ID", "need valid imgur client id") def test_set_user_avatar(self): response = self.client.post( "/preferences/avatar", data={ "avatar": "https://i.ytimg.com/vi/mMbvWUxgM8U/maxresdefault.jpg" }) self.assertEqual(response.status_code, 204) self.assertTrue( self.user.avatar_url().startswith("https://i.imgur.com/")) bad_response = self.client.post("/preferences/avatar", data={"avatar": "not_a_url"}) self.assertEqual(bad_response.status_code, 400) self.assertTrue(self.user.avatar != "not_a_url")