67 строки
1.9 KiB
Python
67 строки
1.9 KiB
Python
import datetime
|
|
import os
|
|
import urlparse
|
|
|
|
from fxapom.fxapom import DEV_URL, PROD_URL, FxATestAccount
|
|
import jwt
|
|
import pytest
|
|
import requests
|
|
|
|
|
|
@pytest.fixture
|
|
def capabilities(capabilities):
|
|
# In order to run these tests in Firefox 48, marionette is required
|
|
capabilities['marionette'] = True
|
|
return capabilities
|
|
|
|
@pytest.fixture
|
|
def fxa_account(base_url):
|
|
url = DEV_URL if 'dev' in base_url else PROD_URL
|
|
return FxATestAccount(url)
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
def jwt_issuer(base_url, variables):
|
|
try:
|
|
hostname = [urlparse.urlsplit(base_url).hostname]
|
|
return variables['api'][hostname]['jwt_issuer']
|
|
except KeyError:
|
|
return os.getenv('JWT_ISSUER')
|
|
|
|
|
|
@pytest.fixture(scope='session')
|
|
def jwt_secret(base_url, variables):
|
|
try:
|
|
hostname = [urlparse.urlsplit(base_url).hostname]
|
|
return variables['api'][hostname]['jwt_secret']
|
|
except KeyError:
|
|
return os.getenv('JWT_SECRET')
|
|
|
|
|
|
@pytest.fixture
|
|
def jwt_token(base_url, jwt_issuer, jwt_secret):
|
|
payload = {
|
|
'iss': jwt_issuer,
|
|
'iat': datetime.datetime.utcnow(),
|
|
'exp': datetime.datetime.utcnow() + datetime.timedelta(seconds=30)}
|
|
return jwt.encode(payload, jwt_secret, algorithm='HS256')
|
|
|
|
|
|
@pytest.fixture
|
|
def user(base_url, fxa_account, jwt_token):
|
|
user = {
|
|
'email': fxa_account.email,
|
|
'password': fxa_account.password,
|
|
'username': fxa_account.email.split('@')[0]}
|
|
url = '{base_url}/api/v3/accounts/super-create/'.format(base_url=base_url)
|
|
params = {
|
|
'email': user['email'],
|
|
'username': user['username'],
|
|
'password': user['password'],
|
|
'fxa_id': fxa_account.session.uid}
|
|
headers = {'Authorization': 'JWT {token}'.format(token=jwt_token)}
|
|
r = requests.post(url, data=params, headers=headers)
|
|
assert requests.codes.created == r.status_code
|
|
user.update(r.json())
|
|
return user
|