Source code for stepler.horizon.steps.containers

"""
----------------
Containers steps
----------------
"""

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from hamcrest import assert_that, contains_string, equal_to  # noqa
import requests

from stepler.horizon.steps import base
from stepler.third_party import steps_checker


[docs]class ContainersSteps(base.BaseSteps): """Containers steps.""" def _page_containers(self): """Open containers page if it isn't opened.""" return self._open(self.app.page_containers) @steps_checker.step
[docs] def create_container(self, container_name, public=False, check=True): """Step to create container.""" page_containers = self._page_containers() page_containers.button_create_container.click() with page_containers.form_create_container as form: form.field_name.value = container_name if public: form.checkbox_public.select() else: form.checkbox_public.unselect() form.submit() if check: self.close_notification('success') page_containers.list_containers.row( container_name).wait_for_presence()
@steps_checker.step
[docs] def delete_container(self, container_name, check=True): """Step to delete container.""" page_containers = self._page_containers() with page_containers.list_containers.row(container_name) as row: row.click() row.button_delete_container.click() page_containers.form_confirm.submit() if check: self.close_notification('success') page_containers.list_containers.row( container_name).wait_for_absence()
def __enter__(self): """Enter to context manager.""" return self def __exit__(self, exc_type, exc_value, exc_tb): """Exit from context manager.""" self._callback() @steps_checker.step
[docs] def get_container(self, container_name): """Step to enter to container.""" self.app.page_containers.list_containers.row(container_name).click() def exit(self=self): self.app.page_containers.list_containers.row( container_name).click() self._callback = exit return self
@steps_checker.step
[docs] def get_folder(self, folder_name): """Step to enter to folder.""" self.app.page_containers.table_objects.row( name=folder_name).link_folder.click() def exit(self=self): self.app.page_containers.back() self._callback = exit return self
@steps_checker.step
[docs] def create_folder(self, folder_name, check=True): """Step to create folder.""" with self.app.page_containers as page: page.button_create_folder.click() with page.form_create_folder as form: form.field_name.value = folder_name form.submit() if check: self.close_notification('success') self.app.page_containers.table_objects.row( name=folder_name).wait_for_presence()
@steps_checker.step
[docs] def delete_folder(self, folder_name, check=True): """Step to delete folder.""" with self.app.page_containers as page: page.table_objects.row( name=folder_name).button_delete.click() # Confirm deleting page.form_confirm.submit(modal_absent=False) # Close modal page.form_confirm.submit() if check: self.app.page_containers.table_objects.row( name=folder_name).wait_for_absence()
@steps_checker.step
[docs] def get_container_info(self, container_name): """Step to get container info.""" with self.app.page_containers.list_containers.row( container_name) as row: container_info = { 'objects_count': row.label_objects_count.value, 'size': row.label_size.value, 'created_date': row.label_created_date.value, 'public_url': row.link_public_url.href} return container_info
@steps_checker.step
[docs] def upload_file(self, file_path, file_name=None, check=True): """Step to upload file.""" self.app.page_containers.button_upload_file.click() with self.app.page_containers.form_upload_file as form: form.field_file.value = file_path if file_name: form.field_name.value = file_name file_name = form.field_name.value form.submit() if check: self.close_notification('success') self.app.page_containers.table_objects.row( name=file_name).wait_for_presence() return file_name
@steps_checker.step
[docs] def delete_file(self, file_name, check=True): """Step to delete file.""" with self.app.page_containers.table_objects.row( name=file_name).dropdown_menu as menu: menu.button_toggle.click() menu.item_delete.click() # Confirm deleting self.app.page_containers.form_confirm.submit(modal_absent=False) # Close modal self.app.page_containers.form_confirm.submit() if check: self.app.page_containers.table_objects.row( name=file_name).wait_for_absence()
@steps_checker.step
[docs] def check_folder_available_by_public_url(self, folder_name, public_url): """Step to check that folder is available by public URL.""" assert_that(requests.get(public_url).text, contains_string(folder_name))
@steps_checker.step
[docs] def check_container_name_volume_backups(self): """Step to check that container has name 'volumebackups'.""" page_containers = self._page_containers() page_containers.list_containers.wait_for_presence() container_name = page_containers.item_container_name() assert_that('volumebackups', equal_to(container_name))