import uuid
import requests
from time import sleep
from wqflask import app
from parameterized import parameterized
from parametrized_test import ParametrizedTest
login_link_text = 'Sign in'
logout_link_text = 'Sign out'
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&scope=/authenticate&show_login=true&client_id=' + app.config.get("ORCID_CLIENT_ID") + '&client_secret=' + app.config.get("ORCID_CLIENT_SECRET") + '" title="Login with ORCID" class="btn btn-info btn-group">Login with ORCID'
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)