Exemple #1
0
def test_audit_cleanup_disabled_export(
    app: LinOTPApp,
    runner: FlaskCliRunner,
    freezer: FrozenDateTimeFactory,
    export_dir: Path,
    setup_audit_table: None,
):
    freezer.move_to("2020-01-01 09:50:00")
    formated_time = datetime.now().strftime(
        app.config["BACKUP_FILE_TIME_FORMAT"])

    runner.invoke(
        cli_main,
        [
            "-vv",
            "audit",
            "cleanup",
            "--max",
            "10",
            "--min",
            "10",
            "--no-export",
            "--exportdir",
            str(export_dir),
        ],
    )

    deleted = AUDIT_AMOUNT_ENTRIES - 10

    filename = f"SQLAuditExport.{formated_time}.{deleted}.csv"
    export_file_backup_dir = Path(app.config["BACKUP_DIR"]) / filename

    assert not export_file_backup_dir.is_file()
    assert len(list(export_dir.iterdir())) == 0
Exemple #2
0
def test_tag_export(runner: FlaskCliRunner, app: Teal):
    with app.app_context():
        t = ETag()
        db.session.add(t)
        db.session.commit()
    with NamedTemporaryFile('r+') as f:
        result = runner.invoke(args=('export', f.name), catch_exceptions=False)
        assert result.exit_code == 0
        result = runner.invoke(args=('import', f.name), catch_exceptions=False)
        assert result.exit_code == 0
    with app.app_context():
        t = Tag()
        db.session.add(t)
        db.session.commit()
        assert Tag.decode(t.id) == 2
Exemple #3
0
def test_drop_cmd(runner: FlaskCliRunner) -> None:
    with app.app_context():
        result = runner.invoke(args=['drop-db'])
        assert 'dropped' in result.output

        with pytest.raises(ProgrammingError):
            Channel.query.all()
Exemple #4
0
def test_audit_cleanup_parameters(
    app: LinOTPApp,
    runner: FlaskCliRunner,
    setup_audit_table: None,
    freezer: FrozenDateTimeFactory,
    options: List,
    deleted: int,
    remaining: int,
    cleaned: bool,
):
    """Run audit cleanup with different max and min values"""

    freezer.move_to("2020-01-01 09:50:00")
    formated_time = datetime.now().strftime(
        app.config["BACKUP_FILE_TIME_FORMAT"])

    result = runner.invoke(cli_main, ["-vv", "audit", "cleanup"] + options)

    assert result.exit_code == 0

    filename = f"SQLAuditExport.{formated_time}.{deleted}.csv"
    export_file = Path(app.config["BACKUP_DIR"]) / filename
    if cleaned:
        num_lines = sum(1 for _ in export_file.open())
        # expected: Number of deleted lines + header row
        assert num_lines == deleted + 1
        assert f"{remaining} entries left in database" in result.stderr
        assert f"Exported into {export_file}" in result.stderr
    else:
        assert not export_file.is_file()
        assert f"{remaining} entries in database" in result.stderr
        assert "Exported" not in result.stderr

    assert db.session.query(AuditTable).count() == remaining
Exemple #5
0
    def test_initial_setup(self, user, testapp):
        from authenticate.app import create_app
        app = create_app(TestConfig)
        runner = FlaskCliRunner(app)
        # invoke the command directly
        result = runner.invoke(initial_setup, [
            '--username', 'root_admin', '--password', 'myprecious', '--email',
            '*****@*****.**'
        ])

        assert 'Root user and root scope setup successfully' in result.output

        user = User.query.filter_by(email='*****@*****.**').first()
        assert user.username == 'root_admin'
        assert user.check_password('myprecious')
        assert user.email == '*****@*****.**'
Exemple #6
0
def test_audit_cleanup_custom_export_dir(
    app: LinOTPApp,
    runner: FlaskCliRunner,
    freezer: FrozenDateTimeFactory,
    export_dir: Path,
    setup_audit_table: None,
):
    freezer.move_to("2020-01-01 09:50:00")
    formated_time = datetime.now().strftime(
        app.config["BACKUP_FILE_TIME_FORMAT"])

    runner.invoke(
        cli_main,
        [
            "-vvv",
            "audit",
            "cleanup",
            "--max",
            "10",
            "--min",
            "10",
            "--exportdir",
            str(export_dir),
        ],
    )

    deleted = AUDIT_AMOUNT_ENTRIES - 10

    filename = f"SQLAuditExport.{formated_time}.{deleted}.csv"
    export_file_backup_dir = Path(app.config["BACKUP_DIR"]) / filename
    export_file_export_dir = export_dir / filename

    assert not export_file_backup_dir.is_file()
    assert export_file_export_dir.is_file()

    num_lines = sum(1 for _ in export_file_export_dir.open())
    # expected: Number of deleted lines + header row
    assert num_lines == deleted + 1
Exemple #7
0
def test_create_tags_cli(runner: FlaskCliRunner, client: Client):
    """Tests creating a tag."""
    with NamedTemporaryFile('r+') as f:
        result = runner.invoke(args=('create-tags', '100', '--csv', f.name,
                                     '--etag'),
                               catch_exceptions=False)
        assert result.exit_code == 0
        urls = tuple(csv.reader(f))
        assert len(urls) == 100
        for url, *_ in urls:
            assert 'http://foo.bar/' in url
            assert len(url) == 23
            # Tag exists but it has not been linked
            client.get(res=Tag.t,
                       item=URL(url).path_parts[1],
                       status=NoRemoteTag)
Exemple #8
0
def test_create_superuser(runner: FlaskCliRunner, app: Flask, username: str,
                          email: str, password: str, output: str):
    result = runner.invoke(args=[
        "createsuperuser", "--username", username, "--email", email,
        "--password", password
    ])
    assert output in result.output

    if output != "Created":
        return

    with app.app_context():
        user = User.query.filter_by(username=username).first()
    assert user
    assert user.stuff
    assert user.superuser
Exemple #9
0
def test_run_janitor_max_min(runner: FlaskCliRunner, setup_audit_table: None):
    """Run janitor with min greater than max"""
    max = 5
    min = 6
    # run linotp audit-janitor
    result = runner.invoke(
        cli_main,
        [
            "audit",
            "cleanup",
            "--max",
            max,
            "--min",
            min,
        ],
    )
    assert result.exit_code == 1
    assert ("Error: --max must be greater than or equal to --min"
            in result.stderr)
Exemple #10
0
def test_create_cmd(runner: FlaskCliRunner) -> None:
    with app.app_context():
        result = runner.invoke(args=['create-db'])
        assert 'created' in result.output
        Channel.query.all()