diff --git a/harvester.py b/harvester.py index 28cf7b8..465bff5 100755 --- a/harvester.py +++ b/harvester.py @@ -3,44 +3,5 @@ from devops import Organization, Project, Repository, Item, DEVOPS_SCOPE from azure.identity import DefaultAzureCredential from json import dumps +import tests -org = Organization("https://dev.azure.com/mcovsandbox", DefaultAzureCredential().get_token(DEVOPS_SCOPE).token) - -# Listing projects in the organization -print(f"Projects in the organization {org._org_url}:") -for project in org.projects: - print(f"- {project.name} (ID: {project.id})") -print() - -ado_sandbox = Project(org, id="bafe0cf1-6c97-4088-864a-ea6dc02b2727") - -print(f"Listing repositories in project: {ado_sandbox.name}") -for repo in ado_sandbox.repositories: - print(f"- {repo.name} (ID: {repo.id})") -print() - -repo = Repository(ado_sandbox, id="ado-auth-lab") -print(f"Repository name: {repo.name} and URL: {repo.web_url} (fetched by name)\n") - -repo = Repository(ado_sandbox, id="feac266f-84d2-41bc-839b-736925a85eaa") -print(f"Repository name: {repo.name} and URL: {repo.web_url} (fetched by direct ID)\n") - -print(f"Listing items in the {repo.name} repository:") - -for item in repo.items: - print(f"{item.path} ({item.git_object_type}): {item.commit_id}") -print() - -print("Getting specific item details:") -item = Item(repo, path="/generate-pat.py") -print(f"Item path: {item.path}") -print(f"Item type: {item.git_object_type}") -print(f"Item commit ID: {item.commit_id}") -print(f"Item URL: {item.url}") -print() - -print("Listing items under the /container folder:") -docs_item = Item(repo, path="/container") -for sub_item in docs_item.children: - print(f"{sub_item.path} ({sub_item.git_object_type}): {sub_item.commit_id}") -print() diff --git a/tests.py b/tests.py new file mode 100755 index 0000000..f7138c2 --- /dev/null +++ b/tests.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +import unittest +from devops import DEVOPS_SCOPE, Organization, Repository, Project, Item +from azure.identity import DefaultAzureCredential + +# Example: set up your org here if possible, or mock as needed +# org = Organization("https://dev.azure.com/mcovsandbox", DefaultAzureCredential().get_token(DEVOPS_SCOPE).token) + +class TestDevOps(unittest.TestCase): + def setUp(self): + # Set up your Organization object here if possible + self.org = Organization("https://dev.azure.com/mcovsandbox", DefaultAzureCredential().get_token(DEVOPS_SCOPE).token) + + def test_listing_projects_in_organization(self): + org = self.org + projects = list(org.projects) + self.assertGreater(len(projects), 0) + + def test_listing_repositories_in_project(self): + project = Project(self.org, id="bafe0cf1-6c97-4088-864a-ea6dc02b2727") + repos = list(project.repositories) + self.assertGreater(len(repos), 0) + + def test_fetching_repository_by_name_or_id(self): + project = Project(self.org, id="bafe0cf1-6c97-4088-864a-ea6dc02b2727") + self.assertIsNotNone(project) + repo_by_name = Repository(project, id="ado-auth-lab") + self.assertIsNotNone(repo_by_name) + self.assertEqual(repo_by_name.name, "ado-auth-lab") + self.assertEqual(repo_by_name.id, "feac266f-84d2-41bc-839b-736925a85eaa") + repo_by_id = Repository(project, id="feac266f-84d2-41bc-839b-736925a85eaa") + self.assertEqual(repo_by_id.name, "ado-auth-lab") + self.assertEqual(repo_by_id.id, "feac266f-84d2-41bc-839b-736925a85eaa") + + def test_listing_items_in_repository(self): + repo = Repository(Project(self.org, id="bafe0cf1-6c97-4088-864a-ea6dc02b2727"), id="feac266f-84d2-41bc-839b-736925a85eaa") + items = list(repo.items) + self.assertGreater(len(items), 0) + + def test_getting_specific_item_details(self): + item = Item(Repository(Project(self.org, id="bafe0cf1-6c97-4088-864a-ea6dc02b2727"), id="feac266f-84d2-41bc-839b-736925a85eaa"), path="/generate-pat.py") + self.assertEqual(item.path, "/generate-pat.py") + self.assertIsNotNone(item.commit_id) + + def test_listing_descendant_items_in_folder(self): + repo = Repository(Project(self.org, id="bafe0cf1-6c97-4088-864a-ea6dc02b2727"), id="feac266f-84d2-41bc-839b-736925a85eaa") + docs_item = Item(repo, path="/container") + children = list(docs_item.children) + self.assertGreater(len(children), 0) + +if __name__ == "__main__": + unittest.main()