149 lines
4.6 KiB
Python
149 lines
4.6 KiB
Python
from behave import given as Given, then as Then
|
|
from sure import ensure
|
|
|
|
from helpers.api import provisioning, webdav_helper as webdav
|
|
from helpers.TableParser import table_rows_hash
|
|
|
|
|
|
@Given('user "{user}" has been created in the server with default attributes')
|
|
def step(context, user):
|
|
provisioning.create_user(user)
|
|
|
|
|
|
@Then(
|
|
'as "{user_name}" {resource_type:ResourceType} "{resource_name}" should not exist in the server'
|
|
)
|
|
def step(context, user_name, resource_type, resource_name):
|
|
resource_exists = webdav.resource_exists(user_name, resource_name)
|
|
|
|
with ensure(
|
|
'{0} "{1}" should not exist, but it does',
|
|
resource_type.capitalize(),
|
|
resource_name,
|
|
):
|
|
resource_exists.should.be.false
|
|
|
|
|
|
@Then(
|
|
'as "{user_name}" {resource_type:ResourceType} "{resource_name}" should exist in the server'
|
|
)
|
|
def step(context, user_name, resource_type, resource_name):
|
|
resource_exists = webdav.resource_exists(user_name, resource_name)
|
|
|
|
with ensure(
|
|
'{0} "{1}" should exist, but it does not',
|
|
resource_type.capitalize(),
|
|
resource_name,
|
|
):
|
|
resource_exists.should.be.true
|
|
|
|
|
|
@Then(
|
|
'as "{user_name}" the file "{file_name}" should have the content "{content}" in the server'
|
|
)
|
|
def step(context, user_name, file_name, content):
|
|
text_content = webdav.get_file_content(user_name, file_name)
|
|
with ensure(
|
|
'{0} should have content "{1}" but found "{2}"',
|
|
file_name,
|
|
content,
|
|
text_content,
|
|
):
|
|
text_content.should.equal(content)
|
|
|
|
|
|
@Then(
|
|
r'as user "([^"].*)" folder "([^"].*)" should contain "([^"].*)" items in the server',
|
|
regexp=True,
|
|
)
|
|
def step(context, user_name, folder_name, items_number):
|
|
total_items = webdav.get_folder_items_count(user_name, folder_name)
|
|
test.compare(
|
|
total_items, items_number, f'Folder should contain {items_number} items'
|
|
)
|
|
|
|
|
|
@Given('user "{user}" has created folder "{folder_name}" in the server')
|
|
def step(context, user, folder_name):
|
|
webdav.create_folder(user, folder_name)
|
|
|
|
|
|
@Given(
|
|
'user "{user}" has uploaded file with content "{file_content}" to "{file_name}" in the server'
|
|
)
|
|
def step(context, user, file_content, file_name):
|
|
webdav.create_file(user, file_name, file_content)
|
|
|
|
|
|
@When('the user clicks on the settings tab')
|
|
def step(context):
|
|
Toolbar.open_settings_tab()
|
|
|
|
|
|
@When('user "{user}" uploads file with content "{file_content}" to "{file_name}" in the server')
|
|
def step(context, user, file_content, file_name):
|
|
webdav.create_file(user, file_name, file_content)
|
|
|
|
|
|
@When('user "{user}" deletes the folder "{folder_name}" in the server')
|
|
def step(context, user, folder_name):
|
|
webdav.delete_resource(user, folder_name)
|
|
|
|
|
|
@Given('user "{user}" has uploaded file "{file_name}" to "{destination}" in the server')
|
|
def step(context, user, file_name, destination):
|
|
webdav.upload_file(user, file_name, destination)
|
|
|
|
|
|
@Then(
|
|
'as "|any|" the content of file "|any|" in the server should match the content of local file "|any|"'
|
|
)
|
|
def step(context, user_name, server_file_name, local_file_name):
|
|
raw_server_content = webdav.get_file_content(user_name, server_file_name)
|
|
with tempfile.NamedTemporaryFile(suffix=Path(server_file_name).suffix) as tmp_file:
|
|
if isinstance(raw_server_content, str):
|
|
tmp_file.write(raw_server_content.encode('utf-8'))
|
|
else:
|
|
tmp_file.write(raw_server_content)
|
|
server_content = get_document_content(tmp_file.name)
|
|
local_content = get_document_content(get_file_for_upload(local_file_name))
|
|
|
|
test.compare(
|
|
server_content,
|
|
local_content,
|
|
f"Server file '{server_file_name}' differs from local file '{local_file_name}'",
|
|
)
|
|
|
|
|
|
@Then(
|
|
r'as "([^"].*)" following files should not exist in the server',
|
|
regexp=True,
|
|
)
|
|
def step(context, user_name):
|
|
for row in context.table[1:]:
|
|
resource_name = row[0]
|
|
test.compare(
|
|
webdav.resource_exists(user_name, resource_name),
|
|
False,
|
|
f"Resource '{resource_name}' should not exist, but does",
|
|
)
|
|
|
|
|
|
@Given('user "|any|" has uploaded the following files to the server')
|
|
def step(context, user):
|
|
for row in context.table[1:]:
|
|
file_name = row[0]
|
|
file_content = row[1]
|
|
webdav.create_file(user, file_name, file_content)
|
|
|
|
|
|
@Given('user "{user}" has sent the following resource share invitation:')
|
|
def step(context, user):
|
|
resource_details = table_rows_hash(context.table)
|
|
webdav.send_resource_share_invitation(
|
|
user,
|
|
resource_details['resource'],
|
|
resource_details['sharee'],
|
|
resource_details['permissionsRole'],
|
|
)
|