commit
22c29bf33f
2
.github/workflows/.tests-javascript.yml
vendored
2
.github/workflows/.tests-javascript.yml
vendored
@ -5,12 +5,14 @@ on:
|
|||||||
paths: ['fittrackee_client/**']
|
paths: ['fittrackee_client/**']
|
||||||
pull_request:
|
pull_request:
|
||||||
paths: ['fittrackee_client/**']
|
paths: ['fittrackee_client/**']
|
||||||
|
types: [opened, synchronize, reopened]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
working-directory: fittrackee_client
|
working-directory: fittrackee_client
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
javascript:
|
javascript:
|
||||||
|
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.fork }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
20
.github/workflows/.tests-python.yml
vendored
20
.github/workflows/.tests-python.yml
vendored
@ -2,9 +2,10 @@ name: Python CI
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
paths-ignore: ['docs/**', 'docsrc/**', 'fittrackee_client/**', '*.md']
|
paths-ignore: ['docs/**', 'docsrc/**', 'docker/**', 'fittrackee_client/**', '*.md']
|
||||||
pull_request:
|
pull_request:
|
||||||
paths-ignore: ['docs/**', 'docsrc/**', 'fittrackee_client/**', '*.md']
|
paths-ignore: ['docs/**', 'docsrc/**', 'docker/**', 'fittrackee_client/**', '*.md']
|
||||||
|
types: [opened, synchronize, reopened]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
APP_SETTINGS: fittrackee.config.TestingConfig
|
APP_SETTINGS: fittrackee.config.TestingConfig
|
||||||
@ -15,6 +16,7 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
python:
|
python:
|
||||||
|
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.fork }}
|
||||||
name: python ${{ matrix.python-version }} (postgresql 15)
|
name: python ${{ matrix.python-version }} (postgresql 15)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: python:${{ matrix.python-version }}
|
container: python:${{ matrix.python-version }}
|
||||||
@ -54,9 +56,10 @@ jobs:
|
|||||||
if: matrix.python-version == '3.11'
|
if: matrix.python-version == '3.11'
|
||||||
run: mypy fittrackee
|
run: mypy fittrackee
|
||||||
- name: Pytest
|
- name: Pytest
|
||||||
run: pytest fittrackee -p no:warnings --cov fittrackee --cov-report term-missing
|
run: pytest fittrackee -p no:warnings --cov fittrackee --cov-report term-missing --maxfail=1
|
||||||
|
|
||||||
postgresql:
|
postgresql:
|
||||||
|
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.fork }}
|
||||||
name: postgresql ${{ matrix.psql-version }} (python 3.11)
|
name: postgresql ${{ matrix.psql-version }} (python 3.11)
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container: python:3.11
|
container: python:3.11
|
||||||
@ -84,9 +87,10 @@ jobs:
|
|||||||
poetry config virtualenvs.create false
|
poetry config virtualenvs.create false
|
||||||
poetry install --no-interaction --quiet
|
poetry install --no-interaction --quiet
|
||||||
- name: Pytest
|
- name: Pytest
|
||||||
run: pytest fittrackee -p no:warnings --cov fittrackee --cov-report term-missing
|
run: pytest fittrackee -p no:warnings --cov fittrackee --cov-report term-missing --maxfail=1
|
||||||
|
|
||||||
end2end:
|
end2end:
|
||||||
|
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.fork }}
|
||||||
name: e2e tests
|
name: e2e tests
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: ["python"]
|
needs: ["python"]
|
||||||
@ -129,9 +133,10 @@ jobs:
|
|||||||
export TEST_APP_URL=http://$(hostname --ip-address):5000
|
export TEST_APP_URL=http://$(hostname --ip-address):5000
|
||||||
sleep 5
|
sleep 5
|
||||||
nohup flask worker --processes=1 >> nohup.out 2>&1 &
|
nohup flask worker --processes=1 >> nohup.out 2>&1 &
|
||||||
pytest e2e --driver Remote --capability browserName firefox --selenium-host selenium --selenium-port 4444
|
pytest e2e --driver Remote --capability browserName firefox --selenium-host selenium --selenium-port 4444 --maxfail=1
|
||||||
|
|
||||||
end2end_package:
|
end2end_package:
|
||||||
|
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.fork }}
|
||||||
name: e2e tests with package
|
name: e2e tests with package
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: ["python"]
|
needs: ["python"]
|
||||||
@ -182,9 +187,10 @@ jobs:
|
|||||||
export TEST_APP_URL=http://$(hostname --ip-address):5000
|
export TEST_APP_URL=http://$(hostname --ip-address):5000
|
||||||
sleep 5
|
sleep 5
|
||||||
nohup flask worker --processes=1 >> nohup.out 2>&1 &
|
nohup flask worker --processes=1 >> nohup.out 2>&1 &
|
||||||
pytest e2e --driver Remote --capability browserName firefox --selenium-host selenium --selenium-port 4444
|
pytest e2e --driver Remote --capability browserName firefox --selenium-host selenium --selenium-port 4444 --maxfail=1
|
||||||
|
|
||||||
end2end_package_update:
|
end2end_package_update:
|
||||||
|
if: ${{ github.event_name == 'push' || github.event.pull_request.head.repo.fork }}
|
||||||
name: e2e tests after update
|
name: e2e tests after update
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: ["python"]
|
needs: ["python"]
|
||||||
@ -239,4 +245,4 @@ jobs:
|
|||||||
export TEST_APP_URL=http://$(hostname --ip-address):5000
|
export TEST_APP_URL=http://$(hostname --ip-address):5000
|
||||||
sleep 5
|
sleep 5
|
||||||
nohup flask worker --processes=1 >> nohup.out 2>&1 &
|
nohup flask worker --processes=1 >> nohup.out 2>&1 &
|
||||||
pytest e2e --driver Remote --capability browserName firefox --selenium-host selenium --selenium-port 4444
|
pytest e2e --driver Remote --capability browserName firefox --selenium-host selenium --selenium-port 4444 --maxfail=1
|
@ -97,8 +97,8 @@ class TestingConfig(BaseConfig):
|
|||||||
SECRET_KEY = 'test key' # nosec
|
SECRET_KEY = 'test key' # nosec
|
||||||
BCRYPT_LOG_ROUNDS = 4
|
BCRYPT_LOG_ROUNDS = 4
|
||||||
TOKEN_EXPIRATION_DAYS = 0
|
TOKEN_EXPIRATION_DAYS = 0
|
||||||
TOKEN_EXPIRATION_SECONDS = 3
|
TOKEN_EXPIRATION_SECONDS = 60
|
||||||
PASSWORD_TOKEN_EXPIRATION_SECONDS = 3
|
PASSWORD_TOKEN_EXPIRATION_SECONDS = 60
|
||||||
UI_URL = 'http://0.0.0.0:5000'
|
UI_URL = 'http://0.0.0.0:5000'
|
||||||
SENDER_EMAIL = 'fittrackee@example.com'
|
SENDER_EMAIL = 'fittrackee@example.com'
|
||||||
OAUTH2_TOKEN_EXPIRES_IN = {
|
OAUTH2_TOKEN_EXPIRES_IN = {
|
||||||
|
@ -2128,7 +2128,7 @@ class TestPasswordResetRequest(ApiTestCaseMixin):
|
|||||||
'email': user_1.email,
|
'email': user_1.email,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'expiration_delay': '3 seconds',
|
'expiration_delay': 'a minute',
|
||||||
'username': user_1.username,
|
'username': user_1.username,
|
||||||
'password_reset_url': (
|
'password_reset_url': (
|
||||||
f'http://0.0.0.0:5000/password-reset?token={token}'
|
f'http://0.0.0.0:5000/password-reset?token={token}'
|
||||||
@ -2235,7 +2235,7 @@ class TestPasswordUpdate(ApiTestCaseMixin):
|
|||||||
token = get_user_token(user_1.id, password_reset=True)
|
token = get_user_token(user_1.id, password_reset=True)
|
||||||
client = app.test_client()
|
client = app.test_client()
|
||||||
|
|
||||||
with freeze_time(now + timedelta(seconds=4)):
|
with freeze_time(now + timedelta(seconds=61)):
|
||||||
response = client.post(
|
response = client.post(
|
||||||
'/api/auth/password/update',
|
'/api/auth/password/update',
|
||||||
data=json.dumps(
|
data=json.dumps(
|
||||||
@ -2649,7 +2649,7 @@ class TestUserLogout(ApiTestCaseMixin):
|
|||||||
client, auth_token = self.get_test_client_and_auth_token(
|
client, auth_token = self.get_test_client_and_auth_token(
|
||||||
app, user_1.email
|
app, user_1.email
|
||||||
)
|
)
|
||||||
with freeze_time(now + timedelta(seconds=4)):
|
with freeze_time(now + timedelta(seconds=61)):
|
||||||
response = client.post(
|
response = client.post(
|
||||||
'/api/auth/logout',
|
'/api/auth/logout',
|
||||||
headers=dict(Authorization=f'Bearer {auth_token}'),
|
headers=dict(Authorization=f'Bearer {auth_token}'),
|
||||||
|
@ -376,7 +376,7 @@ class TestUserModelToken:
|
|||||||
) -> None:
|
) -> None:
|
||||||
auth_token = user_1.encode_auth_token(user_1.id)
|
auth_token = user_1.encode_auth_token(user_1.id)
|
||||||
now = datetime.utcnow()
|
now = datetime.utcnow()
|
||||||
with freeze_time(now + timedelta(seconds=4)):
|
with freeze_time(now + timedelta(seconds=61)):
|
||||||
assert (
|
assert (
|
||||||
User.decode_auth_token(auth_token)
|
User.decode_auth_token(auth_token)
|
||||||
== 'signature expired, please log in again'
|
== 'signature expired, please log in again'
|
||||||
|
Loading…
Reference in New Issue
Block a user