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
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
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()
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
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 == '*****@*****.**'
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
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)
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
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)
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()