aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/functional/test_admin.py
blob: cae601071940c446c9026c319ea2f0fd567825cf (plain) (blame)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from datetime import datetime, timezone

import pytest
from flask.testing import FlaskClient

from sec_certs_page import mongo
from sec_certs_page.admin import User, hash_password


@pytest.fixture()
def admin(app):
    username = "admin"
    password = "password"
    email = "example@example.com"
    roles = ["admin"]
    pwhash = hash_password(password)
    user = User(
        username, pwhash, email, roles, email_confirmed=True, created_at=datetime.now(timezone.utc), github_id=None
    )
    res = mongo.db.users.insert_one(user.dict)
    yield user, password
    mongo.db.users.delete_one({"_id": res.inserted_id})


@pytest.fixture()
def logged_in_client(raw_client: FlaskClient, admin, mocker):
    user, password = admin
    mocker.patch("flask_wtf.csrf.validate_csrf")
    with raw_client:
        raw_client.post(
            "/user/login",
            data={"username": user.username, "password": password, "remember_me": True},
            follow_redirects=True,
        )
        yield raw_client


def test_home(logged_in_client):
    resp = logged_in_client.get("/admin/")
    assert resp.status_code == 200


def test_updates(logged_in_client):
    resp = logged_in_client.get("/admin/updates")
    assert resp.status_code == 200


def test_update(logged_in_client):
    id = list(mongo.db.cc_log.find({}, {"_id": True}))[-1]["_id"]
    resp = logged_in_client.get(f"/admin/update/{id}")
    assert resp.status_code == 200

    id = list(mongo.db.fips_log.find({}, {"_id": True}))[-1]["_id"]
    resp = logged_in_client.get(f"/admin/update/{id}")
    assert resp.status_code == 200


def test_update_diff(logged_in_client):
    id = list(mongo.db.cc_diff.find({}, {"_id": True}))[-1]["_id"]
    resp = logged_in_client.get(f"/admin/update/diff/{id}")
    assert resp.status_code == 200

    id = list(mongo.db.fips_diff.find({}, {"_id": True}))[-1]["_id"]
    resp = logged_in_client.get(f"/admin/update/diff/{id}")
    assert resp.status_code == 200