コード例 #1
0
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)
コード例 #2
0
ファイル: test_user_prefs.py プロジェクト: vishvega/Axtell
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")