aboutsummaryrefslogtreecommitdiff
path: root/test/requests/test_login_orcid.py
blob: ea15642e4d9123c82287c6ad37c0df3e536f6dd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import uuid
import requests
from time import sleep
from wqflask import app
from parameterized import parameterized
from parametrized_test import ParametrizedTest

login_link_text = '<a id="login_in" href="/n/login">Sign in</a>'
logout_link_text = '<a id="login_out" title="Signed in as ." href="/n/logout">Sign out</a>'
uid = str(uuid.uuid4())

class TestLoginOrcid(ParametrizedTest):

    def setUp(self):
        super(TestLoginOrcid, self).setUp()
        data = {
            "user_id": uid
            , "name": "A. T. Est User"
            , "orcid": 345872
            , "user_url": "https://fake-orcid.org/atestuser"
            , "login_type": "orcid"
            , "organization": ""
            , "active": 1
            , "confirmed": 1
        }
        self.es.create(index="users", doc_type="local", body=data, id=uid)
        sleep(1)

    def tearDown(self):
        super(TestLoginOrcid, self).tearDown()
        self.es.delete(index="users", doc_type="local", id=uid)

    def testLoginUrl(self):
        login_button_text = 'a href="https://sandbox.orcid.org/oauth/authorize?response_type=code&amp;scope=/authenticate&amp;show_login=true&amp;client_id=' + app.config.get("ORCID_CLIENT_ID") + '&amp;client_secret=' + app.config.get("ORCID_CLIENT_SECRET") + '" title="Login with ORCID" class="btn btn-info btn-group">Login with ORCID</a>'
        result = requests.get(self.gn2_url+"/n/login")
        index = result.content.find(login_button_text)
        self.assertTrue(index >= 0, "Should have found `Login with ORCID` button")

    @parameterized.expand([
        ("1234", login_link_text, "Login should have failed with non-existing user")
        , (uid, logout_link_text, "Login should have been successful with existing user")
        ])
    def testLogin(self, test_uid, expected, message):
        url = self.gn2_url+"/n/login?type=orcid&uid="+test_uid
        result = requests.get(url)
        index = result.content.find(expected)
        self.assertTrue(index >= 0, message)