diff options
Diffstat (limited to 'bitbake')
-rw-r--r-- | bitbake/lib/toaster/tests/browser/test_project_config_page.py | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/bitbake/lib/toaster/tests/browser/test_project_config_page.py b/bitbake/lib/toaster/tests/browser/test_project_config_page.py index 7fc1252182..0710084995 100644 --- a/bitbake/lib/toaster/tests/browser/test_project_config_page.py +++ b/bitbake/lib/toaster/tests/browser/test_project_config_page.py | |||
@@ -31,6 +31,9 @@ class TestProjectConfigsPage(SeleniumTestCase): | |||
31 | """ Test data at /project/X/builds is displayed correctly """ | 31 | """ Test data at /project/X/builds is displayed correctly """ |
32 | 32 | ||
33 | PROJECT_NAME = 'test project' | 33 | PROJECT_NAME = 'test project' |
34 | INVALID_PATH_START_TEXT = 'The directory path should either start with a /' | ||
35 | INVALID_PATH_CHAR_TEXT = 'The directory path cannot include spaces or ' \ | ||
36 | 'any of these characters' | ||
34 | 37 | ||
35 | def setUp(self): | 38 | def setUp(self): |
36 | bbv = BitbakeVersion.objects.create(name='bbv1', giturl='/tmp/', | 39 | bbv = BitbakeVersion.objects.create(name='bbv1', giturl='/tmp/', |
@@ -116,3 +119,113 @@ class TestProjectConfigsPage(SeleniumTestCase): | |||
116 | checkbox.click() | 119 | checkbox.click() |
117 | self.assertTrue(("cpio" not in element.text), | 120 | self.assertTrue(("cpio" not in element.text), |
118 | "Image still present in the textbox") | 121 | "Image still present in the textbox") |
122 | |||
123 | def test_set_download_dir(self): | ||
124 | """ | ||
125 | Validate the allowed and disallowed types in the directory field for | ||
126 | DL_DIR | ||
127 | """ | ||
128 | |||
129 | ProjectVariable.objects.get_or_create(project=self.project1, | ||
130 | name='DL_DIR') | ||
131 | url = reverse('projectconf', args=(self.project1.id,)) | ||
132 | self.get(url) | ||
133 | |||
134 | # activate the input to edit download dir | ||
135 | self.click('#change-dl_dir-icon') | ||
136 | self.wait_until_visible('#new-dl_dir') | ||
137 | |||
138 | # downloads dir path doesn't start with / or ${...} | ||
139 | self.enter_text('#new-dl_dir', 'home/foo') | ||
140 | element = self.wait_until_visible('#hintError-initialChar-dl_dir') | ||
141 | |||
142 | msg = 'downloads directory path starts with invalid character but ' \ | ||
143 | 'treated as valid' | ||
144 | self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg) | ||
145 | |||
146 | # downloads dir path has a space | ||
147 | self.driver.find_element_by_id('new-dl_dir').clear() | ||
148 | self.enter_text('#new-dl_dir', '/foo/bar a') | ||
149 | |||
150 | element = self.wait_until_visible('#hintError-dl_dir') | ||
151 | msg = 'downloads directory path characters invalid but treated as valid' | ||
152 | self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) | ||
153 | |||
154 | # downloads dir path starts with ${...} but has a space | ||
155 | self.driver.find_element_by_id('new-dl_dir').clear() | ||
156 | self.enter_text('#new-dl_dir', '${TOPDIR}/down foo') | ||
157 | |||
158 | element = self.wait_until_visible('#hintError-dl_dir') | ||
159 | msg = 'downloads directory path characters invalid but treated as valid' | ||
160 | self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) | ||
161 | |||
162 | # downloads dir path starts with / | ||
163 | self.driver.find_element_by_id('new-dl_dir').clear() | ||
164 | self.enter_text('#new-dl_dir', '/bar/foo') | ||
165 | |||
166 | hidden_element = self.driver.find_element_by_id('hintError-dl_dir') | ||
167 | self.assertEqual(hidden_element.is_displayed(), False, | ||
168 | 'downloads directory path valid but treated as invalid') | ||
169 | |||
170 | # downloads dir path starts with ${...} | ||
171 | self.driver.find_element_by_id('new-dl_dir').clear() | ||
172 | self.enter_text('#new-dl_dir', '${TOPDIR}/down') | ||
173 | |||
174 | hidden_element = self.driver.find_element_by_id('hintError-dl_dir') | ||
175 | self.assertEqual(hidden_element.is_displayed(), False, | ||
176 | 'downloads directory path valid but treated as invalid') | ||
177 | |||
178 | def test_set_sstate_dir(self): | ||
179 | """ | ||
180 | Validate the allowed and disallowed types in the directory field for | ||
181 | SSTATE_DIR | ||
182 | """ | ||
183 | |||
184 | ProjectVariable.objects.get_or_create(project=self.project1, | ||
185 | name='SSTATE_DIR') | ||
186 | url = reverse('projectconf', args=(self.project1.id,)) | ||
187 | self.get(url) | ||
188 | |||
189 | self.click('#change-sstate_dir-icon') | ||
190 | |||
191 | self.wait_until_visible('#new-sstate_dir') | ||
192 | |||
193 | # path doesn't start with / or ${...} | ||
194 | self.enter_text('#new-sstate_dir', 'home/foo') | ||
195 | element = self.wait_until_visible('#hintError-initialChar-sstate_dir') | ||
196 | |||
197 | msg = 'sstate directory path starts with invalid character but ' \ | ||
198 | 'treated as valid' | ||
199 | self.assertTrue((self.INVALID_PATH_START_TEXT in element.text), msg) | ||
200 | |||
201 | # path has a space | ||
202 | self.driver.find_element_by_id('new-sstate_dir').clear() | ||
203 | self.enter_text('#new-sstate_dir', '/foo/bar a') | ||
204 | |||
205 | element = self.wait_until_visible('#hintError-sstate_dir') | ||
206 | msg = 'sstate directory path characters invalid but treated as valid' | ||
207 | self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) | ||
208 | |||
209 | # path starts with ${...} but has a space | ||
210 | self.driver.find_element_by_id('new-sstate_dir').clear() | ||
211 | self.enter_text('#new-sstate_dir', '${TOPDIR}/down foo') | ||
212 | |||
213 | element = self.wait_until_visible('#hintError-sstate_dir') | ||
214 | msg = 'sstate directory path characters invalid but treated as valid' | ||
215 | self.assertTrue((self.INVALID_PATH_CHAR_TEXT in element.text), msg) | ||
216 | |||
217 | # path starts with / | ||
218 | self.driver.find_element_by_id('new-sstate_dir').clear() | ||
219 | self.enter_text('#new-sstate_dir', '/bar/foo') | ||
220 | |||
221 | hidden_element = self.driver.find_element_by_id('hintError-sstate_dir') | ||
222 | self.assertEqual(hidden_element.is_displayed(), False, | ||
223 | 'sstate directory path valid but treated as invalid') | ||
224 | |||
225 | # paths starts with ${...} | ||
226 | self.driver.find_element_by_id('new-sstate_dir').clear() | ||
227 | self.enter_text('#new-sstate_dir', '${TOPDIR}/down') | ||
228 | |||
229 | hidden_element = self.driver.find_element_by_id('hintError-sstate_dir') | ||
230 | self.assertEqual(hidden_element.is_displayed(), False, | ||
231 | 'sstate directory path valid but treated as invalid') \ No newline at end of file | ||