@AllowLargeResponse()
@ResourceGroupPreparer(location=WINDOWS_ASP_LOCATION_WEBAPP)
def test_webapp_e2e(self, resource_group):
    webapp_name = self.create_random_name(prefix='webapp-e2e', length=24)
    plan = self.create_random_name(prefix='webapp-e2e-plan', length=24)
    self.cmd('appservice plan create -g {} -n {}'.format(resource_group, plan))
    self.cmd('appservice plan list -g {}'.format(resource_group), checks=[JMESPathCheck('length(@)', 1), JMESPathCheck('[0].name', plan), JMESPathCheck('[0].perSiteScaling', False)])
    self.cmd('appservice plan create -g {} -n {} --per-site-scaling'.format(resource_group, plan))
    self.cmd('appservice plan list -g {}'.format(resource_group), checks=[JMESPathCheck('length(@)', 1), JMESPathCheck('[0].name', plan), JMESPathCheck('[0].sku.tier', 'Basic'), JMESPathCheck('[0].sku.name', 'B1'), JMESPathCheck('[0].perSiteScaling', True)])
    self.cmd('appservice plan list -g {}'.format(resource_group), checks=[JMESPathCheck("length([?name=='{}' && resourceGroup=='{}'])".format(plan, resource_group), 1)])
    self.cmd('appservice plan show -g {} -n {}'.format(resource_group, plan), checks=[JMESPathCheck('name', plan)])
    self.cmd('webapp create -g {} -n {} --plan {}'.format(resource_group, webapp_name, plan), checks=[JMESPathCheck('state', 'Running'), JMESPathCheck('name', webapp_name), JMESPathCheck('hostNames[0]', (webapp_name + '.azurewebsites.net'))])
    self.cmd('webapp create -g {} -n {} --plan {}'.format(resource_group, webapp_name, plan))
    self.cmd('webapp list -g {}'.format(resource_group), checks=[JMESPathCheck('length(@)', 1), JMESPathCheck('[0].name', webapp_name), JMESPathCheck('[0].hostNames[0]', (webapp_name + '.azurewebsites.net'))])
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('name', webapp_name), JMESPathCheck('hostNames[0]', (webapp_name + '.azurewebsites.net'))])
    result = self.cmd('webapp deployment source config-local-git -g {} -n {}'.format(resource_group, webapp_name)).get_output_in_json()
    self.assertTrue(result['url'].endswith((webapp_name + '.git')))
    self.cmd('webapp deployment source show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('repoUrl', 'https://{}.scm.azurewebsites.net'.format(webapp_name))])
    test_cmd = ('webapp log config -g {} -n {} --level verbose'.format(resource_group, webapp_name) + ' --application-logging true --detailed-error-messages true --failed-request-tracing true --web-server-logging filesystem')
    self.cmd(test_cmd)
    self.cmd('webapp log show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('detailedErrorMessages.enabled', True), JMESPathCheck('failedRequestsTracing.enabled', True)])
    self.cmd('webapp config show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('detailedErrorLoggingEnabled', True), JMESPathCheck('httpLoggingEnabled', True), JMESPathCheck('scmType', 'LocalGit'), JMESPathCheck('requestTracingEnabled', True)])
    result = self.cmd('webapp deployment list-publishing-profiles -g {} -n {}'.format(resource_group, webapp_name)).get_output_in_json()
    self.assertTrue(result[1]['publishUrl'].startswith('ftp://'))
    self.cmd('webapp stop -g {} -n {}'.format(resource_group, webapp_name))
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('state', 'Stopped'), JMESPathCheck('name', webapp_name)])
    self.cmd('webapp start -g {} -n {}'.format(resource_group, webapp_name))
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('state', 'Running'), JMESPathCheck('name', webapp_name)])
    result = self.cmd('webapp deployment list-publishing-credentials -g {} -n {}'.format(resource_group, webapp_name)).get_output_in_json()
    self.assertTrue(('scm' in result['scmUri']))
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('httpsOnly', False)])
    self.cmd('webapp create -g {} -n {} --plan {} -r "php|7.3"'.format(resource_group, webapp_name, plan))
@AllowLargeResponse()
@ResourceGroupPreparer(location=WINDOWS_ASP_LOCATION_WEBAPP)
def test_webapp_e2e(self, resource_group):
    webapp_name = self.create_random_name(prefix='webapp-e2e', length=24)
    plan = self.create_random_name(prefix='webapp-e2e-plan', length=24)
    self.cmd('appservice plan create -g {} -n {}'.format(resource_group, plan))
    self.cmd('appservice plan list -g {}'.format(resource_group), checks=[JMESPathCheck('length(@)', 1), JMESPathCheck('[0].name', plan), JMESPathCheck('[0].perSiteScaling', False)])
    self.cmd('appservice plan create -g {} -n {} --per-site-scaling'.format(resource_group, plan))
    self.cmd('appservice plan list -g {}'.format(resource_group), checks=[JMESPathCheck('length(@)', 1), JMESPathCheck('[0].name', plan), JMESPathCheck('[0].sku.tier', 'Basic'), JMESPathCheck('[0].sku.name', 'B1'), JMESPathCheck('[0].perSiteScaling', True)])
    self.cmd('appservice plan list -g {}'.format(resource_group), checks=[JMESPathCheck("length([?name=='{}' && resourceGroup=='{}'])".format(plan, resource_group), 1)])
    self.cmd('appservice plan show -g {} -n {}'.format(resource_group, plan), checks=[JMESPathCheck('name', plan)])
    self.cmd('webapp create -g {} -n {} --plan {}'.format(resource_group, webapp_name, plan), checks=[JMESPathCheck('state', 'Running'), JMESPathCheck('name', webapp_name), JMESPathCheck('hostNames[0]', (webapp_name + '.azurewebsites.net'))])
    self.cmd('webapp create -g {} -n {} --plan {}'.format(resource_group, webapp_name, plan))
    self.cmd('webapp list -g {}'.format(resource_group), checks=[JMESPathCheck('length(@)', 1), JMESPathCheck('[0].name', webapp_name), JMESPathCheck('[0].hostNames[0]', (webapp_name + '.azurewebsites.net'))])
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('name', webapp_name), JMESPathCheck('hostNames[0]', (webapp_name + '.azurewebsites.net'))])
    result = self.cmd('webapp deployment source config-local-git -g {} -n {}'.format(resource_group, webapp_name)).get_output_in_json()
    self.assertTrue(result['url'].endswith((webapp_name + '.git')))
    self.cmd('webapp deployment source show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('repoUrl', 'https://{}.scm.azurewebsites.net'.format(webapp_name))])
    test_cmd = ('webapp log config -g {} -n {} --level verbose'.format(resource_group, webapp_name) + ' --application-logging true --detailed-error-messages true --failed-request-tracing true --web-server-logging filesystem')
    self.cmd(test_cmd)
    self.cmd('webapp log show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('detailedErrorMessages.enabled', True), JMESPathCheck('failedRequestsTracing.enabled', True)])
    self.cmd('webapp config show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('detailedErrorLoggingEnabled', True), JMESPathCheck('httpLoggingEnabled', True), JMESPathCheck('scmType', 'LocalGit'), JMESPathCheck('requestTracingEnabled', True)])
    result = self.cmd('webapp deployment list-publishing-profiles -g {} -n {}'.format(resource_group, webapp_name)).get_output_in_json()
    self.assertTrue(result[1]['publishUrl'].startswith('ftp://'))
    self.cmd('webapp stop -g {} -n {}'.format(resource_group, webapp_name))
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('state', 'Stopped'), JMESPathCheck('name', webapp_name)])
    self.cmd('webapp start -g {} -n {}'.format(resource_group, webapp_name))
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('state', 'Running'), JMESPathCheck('name', webapp_name)])
    result = self.cmd('webapp deployment list-publishing-credentials -g {} -n {}'.format(resource_group, webapp_name)).get_output_in_json()
    self.assertTrue(('scm' in result['scmUri']))
    self.cmd('webapp show -g {} -n {}'.format(resource_group, webapp_name), checks=[JMESPathCheck('httpsOnly', False)])
    self.cmd('webapp create -g {} -n {} --plan {} -r "php|7.3"'.format(resource_group, webapp_name, plan))