99 from django .test .utils import get_runner
1010
1111 def get_settings (signal_processor ):
12+ elasticsearch_dsl_default_settings = {
13+ 'hosts' : os .environ .get (
14+ 'ELASTICSEARCH_URL' ,
15+ 'https://127.0.0.1:9200'
16+ ),
17+ 'basic_auth' : (
18+ os .environ .get ('ELASTICSEARCH_USERNAME' ),
19+ os .environ .get ('ELASTICSEARCH_PASSWORD' )
20+ )
21+ }
22+
23+ elasticsearch_certs_path = os .environ .get (
24+ 'ELASTICSEARCH_CERTS_PATH'
25+ )
26+ if elasticsearch_certs_path :
27+ elasticsearch_dsl_default_settings ['ca_certs' ] = (
28+ elasticsearch_certs_path
29+ )
30+ else :
31+ elasticsearch_dsl_default_settings ['verify_certs' ] = False
32+
1233 PROCESSOR_CLASSES = {
1334 'realtime' : 'django_elasticsearch_dsl.signals.RealTimeSignalProcessor' ,
1435 'celery' : 'django_elasticsearch_dsl.signals.CelerySignalProcessor' ,
@@ -33,10 +54,7 @@ def get_settings(signal_processor):
3354 SITE_ID = 1 ,
3455 MIDDLEWARE_CLASSES = (),
3556 ELASTICSEARCH_DSL = {
36- 'default' : {
37- 'hosts' : os .environ .get ('ELASTICSEARCH_URL' ,
38- '127.0.0.1:9200' )
39- },
57+ 'default' : elasticsearch_dsl_default_settings
4058 },
4159 DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField" ,
4260 CELERY_BROKER_URL = 'memory://localhost/' ,
@@ -81,13 +99,42 @@ def make_parser():
8199 choices = ('realtime' , 'celery' ),
82100 help = 'Defines which signal backend to choose'
83101 )
102+ parser .add_argument (
103+ '--elasticsearch-username' ,
104+ nargs = '?' ,
105+ help = "Username for Elasticsearch user"
106+ )
107+ parser .add_argument (
108+ '--elasticsearch-password' ,
109+ nargs = '?' ,
110+ help = "Password for Elasticsearch user"
111+ )
112+ parser .add_argument (
113+ '--elasticsearch-certs-path' ,
114+ nargs = '?' ,
115+ help = "Path to CA certificates for Elasticsearch"
116+ )
84117 return parser
85118
86119
87120def run_tests (* test_args ):
88121 args , test_args = make_parser ().parse_known_args (test_args )
89122 if args .elasticsearch :
90- os .environ .setdefault ('ELASTICSEARCH_URL' , args .elasticsearch )
123+ os .environ .setdefault ('ELASTICSEARCH_URL' , "https://127.0.0.1:9200" )
124+
125+ username = args .elasticsearch_username or "elastic"
126+ password = args .elasticsearch_password or "changeme"
127+ os .environ .setdefault (
128+ 'ELASTICSEARCH_USERNAME' , username
129+ )
130+ os .environ .setdefault (
131+ 'ELASTICSEARCH_PASSWORD' , password
132+ )
133+
134+ if args .elasticsearch_certs_path :
135+ os .environ .setdefault (
136+ 'ELASTICSEARCH_CERTS_PATH' , args .elasticsearch_certs_path
137+ )
91138
92139 if not test_args :
93140 test_args = ['tests' ]
0 commit comments