ClickHouse/tests/testflows/ldap/authentication/regression.py
2021-01-05 06:26:53 +03:00

67 lines
2.7 KiB
Python
Executable File

#!/usr/bin/env python3
import sys
from testflows.core import *
append_path(sys.path, "..", "..")
from helpers.cluster import Cluster
from helpers.argparser import argparser
from ldap.authentication.requirements import *
# Cross-outs of known fails
xfails = {
"connection protocols/tls/tls_require_cert='try'":
[(Fail, "can't be tested with self-signed certificates")],
"connection protocols/tls/tls_require_cert='demand'":
[(Fail, "can't be tested with self-signed certificates")],
"connection protocols/starttls/tls_require_cert='try'":
[(Fail, "can't be tested with self-signed certificates")],
"connection protocols/starttls/tls_require_cert='demand'":
[(Fail, "can't be tested with self-signed certificates")],
"connection protocols/tls require cert default demand":
[(Fail, "can't be tested with self-signed certificates")],
"connection protocols/starttls with custom port":
[(Fail, "it seems that starttls is not enabled by default on custom plain-text ports in LDAP server")],
"connection protocols/tls cipher suite":
[(Fail, "can't get it to work")],
"external user directory/user authentications/valid verification cooldown value ldap unavailable":
[(Fail, "flaky, ask Vitaly Zakaznikov, Telegram @vzakaznikov")],
"user authentications/rbac=True/verification cooldown/verification cooldown performance":
[(Fail, "flaky, ask Vitaly Zakaznikov, Telegram @vzakaznikov")]
}
@TestFeature
@Name("authentication")
@ArgumentParser(argparser)
@Specifications(
SRS_007_ClickHouse_Authentication_of_Users_via_LDAP
)
@Requirements(
RQ_SRS_007_LDAP_Authentication("1.0")
)
@XFails(xfails)
def regression(self, local, clickhouse_binary_path, stress=None, parallel=None):
"""ClickHouse integration with LDAP regression module.
"""
nodes = {
"clickhouse": ("clickhouse1", "clickhouse2", "clickhouse3"),
}
with Cluster(local, clickhouse_binary_path, nodes=nodes) as cluster:
self.context.cluster = cluster
if stress is not None or not hasattr(self.context, "stress"):
self.context.stress = stress
if parallel is not None or not hasattr(self.context, "parallel"):
self.context.parallel = parallel
Scenario(run=load("ldap.authentication.tests.sanity", "scenario"))
Scenario(run=load("ldap.authentication.tests.multiple_servers", "scenario"))
Feature(run=load("ldap.authentication.tests.connections", "feature"))
Feature(run=load("ldap.authentication.tests.server_config", "feature"))
Feature(run=load("ldap.authentication.tests.user_config", "feature"))
Feature(run=load("ldap.authentication.tests.authentications", "feature"))
if main():
regression()