1515#
1616from urllib import parse
1717from requests .auth import HTTPBasicAuth
18+ from splunktaucclib .rest_handler .handler import BASIC_NAME_VALIDATORS
1819import requests
1920import os
2021
2122import pytest
2223
23- admin = os . getenv ( "SPLUNK_ADMIN" )
24- admin_password = os . getenv ( "SPLUNK_ADMIN_PWD" )
24+ admin = "admin"
25+ admin_password = "Chang3d!"
2526user = os .getenv ("SPLUNK_USER" )
2627user_password = os .getenv ("SPLUNK_USER_PWD" )
2728host = "localhost"
@@ -99,22 +100,12 @@ def test_403_api_call():
99100 "test(name" ,
100101 "test)name" ,
101102 "test?name" ,
102- "test:name" ,
103- "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnamet"
104- "oolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnameto"
105- "olongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoo"
106- "longnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametool"
107- "ongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolo"
108- "ngnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolon"
109- "gnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolong"
110- "nametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongn"
111- "ametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongna"
112- "metoolongnametoolongnamet" ,
103+ "test:name"
113104 ],
114105)
115- def test_basic_name_validation (value ):
116- prohibited_chars = [ "*" , " \\ " , "[" , "]" , "(" , ")" , "?" , ": " ]
117- prohibited_names = [ "default" , "." , ".. " ]
106+ def test_basic_name_validation_prohibited_char_and_names (value ):
107+ prohibited_chars = BASIC_NAME_VALIDATORS [ "PROHIBITED_NAME_CHARACTERS " ]
108+ prohibited_names = BASIC_NAME_VALIDATORS [ "PROHIBITED_NAMES " ]
118109 expected_msg = (
119110 f'{ prohibited_names } , string started with "_" and string including any one '
120111 f'of { prohibited_chars } are reserved value which cannot be used for field Name"'
@@ -131,27 +122,43 @@ def test_basic_name_validation(value):
131122 verify = False ,
132123 )
133124
134- if value .startswith ("toolongname" ):
135- assert (
125+ assert expected_msg .replace ("\n " , "" ) in response .text
126+ assert response .status_code == 500
127+
128+
129+ def test_basic_name_validation_too_long_name ():
130+ value = ("toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
131+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
132+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
133+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
134+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
135+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
136+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
137+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
138+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
139+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
140+ "toolongnametoolongnametoolongnamet" ),
141+
142+ response = requests .post (
143+ f"https://{ host } :{ management_port } /servicesNS/-/demo/demo_demo" ,
144+ data = {"name" : value , "interval" : "44" },
145+ headers = {
146+ "accept" : "application/json" ,
147+ "Content-Type" : "application/x-www-form-urlencoded" ,
148+ },
149+ auth = HTTPBasicAuth (admin , admin_password ),
150+ verify = False ,
151+ )
152+ assert (
136153 '<msg type="ERROR">Parameter "name" must be less than 1024' .replace (
137154 "\n " , ""
138155 )
139156 in response .text
140- )
141- else :
142- assert expected_msg .replace ("\n " , "" ) in response .text
143- assert response .status_code == 500
157+ )
144158
145159
146- @pytest .mark .parametrize (
147- "value" ,
148- [
149- "ftestname" ,
150- "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnamet"
151- "oolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnameto" ,
152- ],
153- )
154- def test_custom_name_validation (value ):
160+ def test_custom_name_validation_invalid_name ():
161+ value = "atestname"
155162 expected_msg = """All of the following errors need to be fixed: ["Not matching the pattern: ^[a-dA-D]\\ \\ w*$"]"""
156163
157164 response = requests .post (
@@ -164,9 +171,23 @@ def test_custom_name_validation(value):
164171 auth = HTTPBasicAuth (admin , admin_password ),
165172 verify = False ,
166173 )
174+ assert expected_msg .replace ("\n " , "" ) in response .text
175+ assert response .status_code == 500
176+
167177
168- if value .startswith ("toolongname" ):
169- assert "String length should be between 1 and 100" in response .text
170- else :
171- assert expected_msg .replace ("\n " , "" ) in response .text
172- assert response .status_code == 500
178+ def test_custom_name_validation_too_long_name ():
179+ value = ("toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
180+ "toolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongnametoolongname"
181+ "toolongnametoolongnameto" )
182+
183+ response = requests .post (
184+ f"https://{ host } :{ management_port } /servicesNS/-/demo/demo_demo" ,
185+ data = {"name" : value , "interval" : "44" },
186+ headers = {
187+ "accept" : "application/json" ,
188+ "Content-Type" : "application/x-www-form-urlencoded" ,
189+ },
190+ auth = HTTPBasicAuth (admin , admin_password ),
191+ verify = False ,
192+ )
193+ assert "String length should be between 1 and 100" in response .text
0 commit comments