def setup_continuous_delivery(self, resource_group_name, name, repo_url, branch, git_token, slot, cd_app_type_details, cd_project_url, cd_create_account, location, test, private_repo_username, private_repo_password, webapp_list): """ This method sets up CD for an Azure Web App thru Team Services """ # Gather information about the Azure connection profile = Profile() subscription = profile.get_subscription() user = profile.get_current_account_user() cred, _, _ = profile.get_login_credentials(subscription_id=None) cd_manager = ContinuousDeliveryManager(self._update_progress) # Generate an Azure token with the VSTS resource app id auth_token = profile.get_access_token_for_resource( user, None, cd_manager.get_vsts_app_id()) cd_manager.set_repository_info(repo_url, branch, git_token, private_repo_username, private_repo_password) cd_manager.set_azure_web_info(resource_group_name, name, cred, subscription['id'], subscription['name'], subscription['tenantId'], location) vsts_cd_status = cd_manager.setup_continuous_delivery( slot, cd_app_type_details, cd_project_url, cd_create_account, auth_token, test, webapp_list) return vsts_cd_status
def setup_continuous_delivery(self, cli_ctx, resource_group_name, name, repo_url, branch, git_token, slot, cd_app_type_details, cd_project_url, cd_create_account, location, test, private_repo_username, private_repo_password, webapp_list): """ This method sets up CD for an Azure Web App thru Team Services """ # Gather information about the Azure connection profile = Profile(cli_ctx=cli_ctx) subscription = profile.get_subscription() user = profile.get_current_account_user() cred, _, _ = profile.get_login_credentials(subscription_id=None) cd_manager = ContinuousDeliveryManager(self._update_progress) # Generate an Azure token with the VSTS resource app id auth_token = profile.get_access_token_for_resource(user, None, cd_manager.get_vsts_app_id()) cd_manager.set_repository_info(repo_url, branch, git_token, private_repo_username, private_repo_password) cd_manager.set_azure_web_info(resource_group_name, name, cred, subscription['id'], subscription['name'], subscription['tenantId'], location) vsts_cd_status = cd_manager.setup_continuous_delivery(slot, cd_app_type_details, cd_project_url, cd_create_account, auth_token, test, webapp_list) return vsts_cd_status
def test_setup_continuous_delivery___create_account( self, mock_account, mock_cd): # Mock the CD Client mocked_cd = mock_cd.return_value mocked_cd.provisioning_configuration.return_value = self._get_provisioning_config( 'queued', '') mocked_cd.get_provisioning_configuration.return_value = self._get_provisioning_config( 'succeeded', '') # Mock the Account Client mocked_account = mock_account.return_value mocked_account.create_account.return_value = Collection( '111', 'collection111') mocked_account.account_exists.return_value = False # create CD manager cdman = ContinuousDeliveryManager(None) # Mock the vsts info call cdman._get_vsts_info = self._mock_get_vsts_info # set required values cdman.set_azure_web_info('group1', 'web1', 'fakeCreds', 'sub1', 'subname1', 'tenant1', 'South Central US') cdman.set_repository_info('repoUrl1', 'master1', 'token1', None, None) cd_app_type = 'AspNet' app_type_details = self.create_cd_app_type_details_map( cd_app_type, None, None, None, None) # call setup result = cdman.setup_continuous_delivery( 'staging', app_type_details, "https://account1.visualstudio.com", True, 'token2', None, None) self.assertEqual('SUCCESS', result.status) self.assertTrue( "The Team Services account 'https://account1.visualstudio.com' was created" in result.status_message) self.assertEqual( 'https://portal.azure.com/#resource/subscriptions/sub1/resourceGroups/group1/providers/Microsoft.Web/sites/web1/vstscd', result.azure_continuous_delivery_url) self.assertEqual('group1', result.azure_resource_group) self.assertEqual('sub1', result.azure_subscription_id) self.assertEqual('web1', result.azure_website_name) self.assertEqual(True, result.vsts_account_created) self.assertEqual('https://account1.visualstudio.com', result.vsts_account_url) self.assertEqual( 'https://account1.visualstudio.com/333/_build?_a=simple-process&definitionId=123', result.vsts_build_def_url) self.assertEqual( 'https://account1.visualstudio.com/333/_apps/hub/ms.vss-releaseManagement-web.hub-explorer?definitionId=321&_a=releases', result.vsts_release_def_url) # call setup mocked_account.create_account.return_value = Collection( None, 'collection111') with self.assertRaises(RuntimeError) as context: cdman.setup_continuous_delivery( 'staging', app_type_details, "https://account1.visualstudio.com", True, 'token2', None, None) self.assertTrue('Account creation failed' in str(context.exception))
def test_set_repository_info(self): cdman = ContinuousDeliveryManager(None) cdman.set_repository_info('repoUrl1', 'master1', 'token1', 'username', 'password') self.assertEqual('master1', cdman._repo_info.branch) self.assertEqual('token1', cdman._repo_info.git_token) self.assertEqual('repoUrl1', cdman._repo_info.url) self.assertEqual('username', cdman._repo_info._private_repo_username) self.assertEqual('password', cdman._repo_info._private_repo_password) cdman.set_repository_info(None, None, None, None, None) self.assertEqual(None, cdman._repo_info.branch) self.assertEqual(None, cdman._repo_info.git_token) self.assertEqual(None, cdman._repo_info.url) self.assertEqual(None, cdman._repo_info._private_repo_username) self.assertEqual(None, cdman._repo_info._private_repo_password)