[tests] expand client conversion tests

This commit is contained in:
samschott 2022-03-31 22:54:34 +02:00
parent 322f31056f
commit 45cbbc77b4

View File

@ -1,8 +1,13 @@
from dropbox import users, users_common, common, team_common
import datetime
import pytest
from dropbox import users, users_common, common, team_common, files, sharing
from maestral.client import (
convert_account,
convert_full_account,
convert_space_usage,
convert_metadata,
convert_shared_link_metadata,
)
from maestral import core
@ -77,6 +82,27 @@ def test_convert_full_account():
root_namespace_id="root_id", home_namespace_id="home_id"
)
dbx_account_info.account_type = users_common.AccountType.pro
account_info = convert_full_account(dbx_account_info)
assert account_info.account_type is core.AccountType.Pro
assert account_info.root_info == core.UserRootInfo(
root_namespace_id="root_id", home_namespace_id="home_id"
)
dbx_account_info.account_type = users_common.AccountType.business
dbx_account_info.root_info = common.TeamRootInfo(
root_namespace_id="root_id", home_namespace_id="home_id", home_path="/home"
)
account_info = convert_full_account(dbx_account_info)
assert account_info.account_type is core.AccountType.Business
assert account_info.root_info == core.TeamRootInfo(
root_namespace_id="root_id", home_namespace_id="home_id", home_path="/home"
)
def test_convert_space_usage_individual():
dbx_space_usage = users.SpaceUsage(
@ -132,3 +158,212 @@ def test_convert_space_usage_team():
assert space_usage.used == 10
assert space_usage.allocated == 15
assert space_usage.team_usage == core.TeamSpaceUsage(20, 30)
def test_convert_space_usage_other():
dbx_space_usage = users.SpaceUsage(
used=10,
allocation=users.SpaceAllocation.other,
)
space_usage = convert_space_usage(dbx_space_usage)
assert isinstance(space_usage, core.SpaceUsage)
assert space_usage.used == 10
assert space_usage.allocated == 0
assert space_usage.team_usage is None
def test_convert_metadata_file():
dbx_md = files.FileMetadata(
name="Hello",
path_lower="/folder/hello",
path_display="/folder/Hello",
id="id-0123456789",
client_modified=datetime.datetime.fromtimestamp(10),
server_modified=datetime.datetime.fromtimestamp(20),
rev="abcdf12687980",
size=658,
symlink_info=files.SymlinkInfo(target="/symlink-target"),
sharing_info=files.FileSharingInfo(
read_only=False,
parent_shared_folder_id="parent_shared_folder_id",
modified_by="dbid-kjahdskjhkljkadsjhjhjmwerjhjhjmwero",
),
is_downloadable=True,
content_hash="content_hash_hjkglidjsadfjhsdfgkasdhfgocapigkasdhfgociuyoweruqpi",
)
md = convert_metadata(dbx_md)
assert isinstance(md, core.FileMetadata)
assert md.name == "Hello"
assert md.path_display == "/folder/Hello"
assert md.path_lower == "/folder/hello"
assert md.id == "id-0123456789"
assert md.client_modified == datetime.datetime.fromtimestamp(10)
assert md.server_modified == datetime.datetime.fromtimestamp(20)
assert md.rev == "abcdf12687980"
assert md.size == 658
assert md.symlink_target == "/symlink-target"
assert md.is_downloadable is True
assert (
md.content_hash
== "content_hash_hjkglidjsadfjhsdfgkasdhfgocapigkasdhfgociuyoweruqpi"
)
assert md.is_downloadable is True
assert md.shared is True
def test_convert_metadata_folder():
dbx_md = files.FolderMetadata(
name="Hello",
path_lower="/folder/hello",
path_display="/folder/Hello",
id="id-0123456789",
sharing_info=files.FolderSharingInfo(
read_only=False,
parent_shared_folder_id="parent_shared_folder_id",
),
)
md = convert_metadata(dbx_md)
assert isinstance(md, core.FolderMetadata)
assert md.name == "Hello"
assert md.path_display == "/folder/Hello"
assert md.path_lower == "/folder/hello"
assert md.id == "id-0123456789"
assert md.shared is True
def test_convert_metadata_deleted():
dbx_md = files.DeletedMetadata(
name="Hello",
path_lower="/folder/hello",
path_display="/folder/Hello",
)
md = convert_metadata(dbx_md)
assert isinstance(md, core.DeletedMetadata)
assert md.name == "Hello"
assert md.path_display == "/folder/Hello"
assert md.path_lower == "/folder/hello"
def test_convert_metadata_unsupported():
dbx_md = files.Metadata(
name="Hello",
path_lower="/folder/hello",
path_display="/folder/Hello",
)
with pytest.raises(RuntimeError):
convert_metadata(dbx_md)
def test_convert_sharedlink_metdata():
# Test conversion with effective_audience.
dbx_md = sharing.SharedLinkMetadata(
url="/url",
name="Hello",
path_lower="/folder/hello",
expires=datetime.datetime.fromtimestamp(10),
link_permissions=sharing.LinkPermissions(
can_revoke=False,
effective_audience=sharing.LinkAudience.public,
link_access_level=sharing.LinkAccessLevel.viewer,
require_password=True,
allow_download=True,
),
)
md = convert_shared_link_metadata(dbx_md)
assert isinstance(md, core.SharedLinkMetadata)
assert md.url == "/url"
assert md.name == "Hello"
assert md.path_lower == "/folder/hello"
assert md.expires == datetime.datetime.fromtimestamp(10)
assert md.link_permissions.require_password is True
assert md.link_permissions.can_revoke is False
assert md.link_permissions.allow_download is True
assert md.link_permissions.link_access_level is core.LinkAccessLevel.Viewer
assert md.link_permissions.effective_audience is core.LinkAudience.Public
dbx_md.link_permissions.effective_audience = sharing.LinkAudience.team
md = convert_shared_link_metadata(dbx_md)
assert md.link_permissions.effective_audience is core.LinkAudience.Team
dbx_md.link_permissions.effective_audience = sharing.LinkAudience.no_one
md = convert_shared_link_metadata(dbx_md)
assert md.link_permissions.effective_audience is core.LinkAudience.NoOne
# Test conversion with resolved_visibility.
dbx_md = sharing.SharedLinkMetadata(
url="/url",
name="Hello",
path_lower="/folder/hello",
expires=datetime.datetime.fromtimestamp(10),
link_permissions=sharing.LinkPermissions(
can_revoke=False,
resolved_visibility=sharing.ResolvedVisibility.public,
link_access_level=sharing.LinkAccessLevel.editor,
allow_download=True,
),
)
md = convert_shared_link_metadata(dbx_md)
assert isinstance(md, core.SharedLinkMetadata)
assert md.url == "/url"
assert md.name == "Hello"
assert md.path_lower == "/folder/hello"
assert md.expires == datetime.datetime.fromtimestamp(10)
assert md.link_permissions.require_password is False
assert md.link_permissions.can_revoke is False
assert md.link_permissions.allow_download is True
assert md.link_permissions.link_access_level is core.LinkAccessLevel.Editor
assert md.link_permissions.effective_audience is core.LinkAudience.Public
dbx_md.link_permissions.resolved_visibility = sharing.ResolvedVisibility.team_only
md = convert_shared_link_metadata(dbx_md)
assert md.link_permissions.effective_audience is core.LinkAudience.Team
assert md.link_permissions.require_password is False
dbx_md.link_permissions.resolved_visibility = (
sharing.ResolvedVisibility.team_and_password
)
md = convert_shared_link_metadata(dbx_md)
assert md.link_permissions.effective_audience is core.LinkAudience.Team
assert md.link_permissions.require_password is True
dbx_md.link_permissions.resolved_visibility = sharing.ResolvedVisibility.password
md = convert_shared_link_metadata(dbx_md)
assert md.link_permissions.effective_audience is core.LinkAudience.Other
assert md.link_permissions.require_password is True
dbx_md.link_permissions.resolved_visibility = sharing.ResolvedVisibility.no_one
md = convert_shared_link_metadata(dbx_md)
assert md.link_permissions.effective_audience is core.LinkAudience.NoOne
assert md.link_permissions.require_password is False