You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_hub_private_repository.py 2.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. # Copyright (c) Alibaba, Inc. and its affiliates.
  2. import os
  3. import tempfile
  4. import unittest
  5. import uuid
  6. from modelscope.hub.api import HubApi
  7. from modelscope.hub.constants import Licenses, ModelVisibility
  8. from modelscope.hub.errors import GitError
  9. from modelscope.hub.repository import Repository
  10. USER_NAME = 'maasadmin'
  11. PASSWORD = '12345678'
  12. USER_NAME2 = 'sdkdev'
  13. model_chinese_name = '达摩卡通化模型'
  14. model_org = 'unittest'
  15. DEFAULT_GIT_PATH = 'git'
  16. class HubPrivateRepositoryTest(unittest.TestCase):
  17. def setUp(self):
  18. self.old_cwd = os.getcwd()
  19. self.api = HubApi()
  20. # note this is temporary before official account management is ready
  21. self.token, _ = self.api.login(USER_NAME, PASSWORD)
  22. self.model_name = uuid.uuid4().hex
  23. self.model_id = '%s/%s' % (model_org, self.model_name)
  24. self.api.create_model(
  25. model_id=self.model_id,
  26. visibility=ModelVisibility.PRIVATE, # 1-private, 5-public
  27. license=Licenses.APACHE_V2,
  28. chinese_name=model_chinese_name,
  29. )
  30. def tearDown(self):
  31. self.api.login(USER_NAME, PASSWORD)
  32. os.chdir(self.old_cwd)
  33. self.api.delete_model(model_id=self.model_id)
  34. def test_clone_private_repo_no_permission(self):
  35. token, _ = self.api.login(USER_NAME2, PASSWORD)
  36. temporary_dir = tempfile.mkdtemp()
  37. local_dir = os.path.join(temporary_dir, self.model_name)
  38. with self.assertRaises(GitError) as cm:
  39. Repository(local_dir, clone_from=self.model_id, auth_token=token)
  40. print(cm.exception)
  41. assert not os.path.exists(os.path.join(local_dir, 'README.md'))
  42. def test_clone_private_repo_has_permission(self):
  43. temporary_dir = tempfile.mkdtemp()
  44. local_dir = os.path.join(temporary_dir, self.model_name)
  45. repo1 = Repository(
  46. local_dir, clone_from=self.model_id, auth_token=self.token)
  47. print(repo1.model_dir)
  48. assert os.path.exists(os.path.join(local_dir, 'README.md'))
  49. def test_initlize_repo_multiple_times(self):
  50. temporary_dir = tempfile.mkdtemp()
  51. local_dir = os.path.join(temporary_dir, self.model_name)
  52. repo1 = Repository(
  53. local_dir, clone_from=self.model_id, auth_token=self.token)
  54. print(repo1.model_dir)
  55. assert os.path.exists(os.path.join(local_dir, 'README.md'))
  56. repo2 = Repository(
  57. local_dir, clone_from=self.model_id,
  58. auth_token=self.token) # skip clone
  59. print(repo2.model_dir)
  60. assert repo1.model_dir == repo2.model_dir
  61. if __name__ == '__main__':
  62. unittest.main()