Esempio n. 1
0
    def test_kubernetes_mysql_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'cluster': 'servicelinker-mysql-cluster',
            'server': 'servicelinker-mysql',
            'database': 'mysqlDB'
        })

        # prepare password
        user = '******'
        password = self.cmd('keyvault secret show --vault-name cupertino-kv-test -n TestDbPassword')\
            .get_output_in_json().get('value')

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.KubernetesCluster).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(RESOURCE.Mysql).format(**self.kwargs)

        # create connection, test clientType=None
        self.cmd(
            'aks connection create mysql --connection {} --source-id {} --target-id {} '
            '--secret name={} secret={} --client-type none'.format(
                name, source_id, target_id, user, password))

        # list connection
        connections = self.cmd(
            'aks connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'secret'),
                self.check('[0].clientType', 'none')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # update connection
        self.cmd('aks connection update mysql --id {} --client-type dotnet '
                 '--secret name={} secret={}'.format(connection_id, user,
                                                     password),
                 checks=[self.check('clientType', 'dotnet')])

        # list configuration
        self.cmd(
            'aks connection list-configuration --id {}'.format(connection_id))

        # validate connection
        self.cmd('aks connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('aks connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('aks connection delete --id {} --yes'.format(connection_id))
Esempio n. 2
0
    def test_kubernetes_keyvault_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'cluster': 'servicelinker-keyvault-cluster',
            'vault': 'servicelinker-test-kv'
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.KubernetesCluster).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.KeyVault).format(**self.kwargs)

        # create connection, test csi feature
        self.cmd(
            'aks connection create keyvault --connection {} --source-id {} --target-id {} '
            '--client-type python --enable-csi'.format(name, source_id,
                                                       target_id))

        # list connection
        connections = self.cmd(
            'aks connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'userAssignedIdentity'),
                self.check('[0].clientType', 'python'),
                self.check('[0].targetService.resourceProperties.type',
                           'KeyVault'),
                self.check(
                    '[0].targetService.resourceProperties.connectAsKubernetesCsiDriver',
                    True)
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # update connection
        self.cmd(
            'aks connection update keyvault --id {} --client-type dotnet --enable-csi'
            .format(connection_id),
            checks=[self.check('clientType', 'dotnet')])

        # list configuration
        self.cmd(
            'aks connection list-configuration --id {}'.format(connection_id))

        # validate connection
        self.cmd('aks connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('aks connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('aks connection delete --id {} --yes'.format(connection_id))
    def test_springcloud_postgres_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'spring': 'servicelinker-springcloud',
            'app': 'postgresql',
            'deployment': 'default',
            'server': 'servicelinker-postgresql',
            'database': 'postgres'
        })

        # prepare password
        user = '******'
        password = self.cmd('keyvault secret show --vault-name cupertino-kv-test -n TestDbPassword')\
            .get_output_in_json().get('value')

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.SpringCloud).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.Postgres).format(**self.kwargs)

        # create connection
        self.cmd(
            'spring-cloud connection create postgres --connection {} --source-id {} --target-id {} '
            '--secret name={} secret={} --client-type java'.format(
                name, source_id, target_id, user, password))

        # list connection
        connections = self.cmd(
            'spring-cloud connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'secret'),
                self.check('[0].clientType', 'java')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # list configuration
        self.cmd('spring-cloud connection list-configuration --id {}'.format(
            connection_id))

        # validate connection
        self.cmd(
            'spring-cloud connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('spring-cloud connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('spring-cloud connection delete --id {} --yes'.format(
            connection_id))
    def test_webapp_confluentkafka_keyvault_ref(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'site': 'servicelinker-kafka-ref-app',
            'vault': 'servicelinker-kv-ref',
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs)
        keyvault_id = TARGET_RESOURCES.get(
            RESOURCE.KeyVault).format(**self.kwargs)

        # create connection
        self.cmd(
            'webapp connection create confluent-cloud --connection {} --source-id {} '
            '--bootstrap-server xxx.eastus.azure.confluent.cloud:9092 --kafka-key Name --kafka-secret Secret '
            '--schema-registry https://xxx.eastus.azure.confluent.cloud --schema-key Name --schema-secret Secret '
            '--client-type python --vault-id {}'.format(
                name, source_id, keyvault_id))

        id = f'{source_id}/providers/Microsoft.ServiceLinker/linkers/{name}'

        self.cmd('webapp connection list --source-id {}'.format(source_id),
                 checks=[
                     self.check('length(@)', 3),
                 ])

        self.cmd('webapp connection show --id {}'.format(id),
                 checks=[
                     self.check('secretStore.keyVaultId', keyvault_id),
                 ])

        self.cmd('webapp connection show --id {}_schema'.format(id),
                 checks=[
                     self.check('secretStore.keyVaultId', keyvault_id),
                 ])

        # update connection
        self.cmd(
            'webapp connection update confluent-cloud --connection {} --source-id {} '
            '--kafka-secret Secret'.format(name, source_id))

        self.cmd('webapp connection show --id {}'.format(id),
                 checks=[
                     self.check('secretStore.keyVaultId', keyvault_id),
                 ])

        for conn in self.cmd('webapp connection list --source-id {}'.format(
                source_id)).get_output_in_json():
            self.cmd('webapp connection delete --id {} --yes'.format(
                conn.get('id')))
    def test_springcloud_cosmosgremlin_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-win-group',
            'spring': 'servicelinker-springcloud',
            'app': 'cosmosgremlin',
            'deployment': 'default',
            'account': 'servicelinker-gremlin-cosmos',
            'database': 'coreDB',
            'graph': 'MyItem'
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.SpringCloud).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.CosmosGremlin).format(**self.kwargs)

        # create connection
        self.cmd(
            'spring-cloud connection create cosmos-gremlin --connection {} --source-id {} --target-id {} '
            '--system-identity --client-type java'.format(
                name, source_id, target_id))

        # list connection
        connections = self.cmd(
            'spring-cloud connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'systemAssignedIdentity'),
                self.check('[0].clientType', 'java')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # list configuration
        self.cmd('spring-cloud connection list-configuration --id {}'.format(
            connection_id))

        # validate connection
        self.cmd(
            'spring-cloud connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('spring-cloud connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('spring-cloud connection delete --id {} --yes'.format(
            connection_id))
    def test_webapp_mysqlflexible_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'site': 'servicelinker-flexiblemysql-app2',
            'server': 'servicelinker-flexible-mysql2',
            'database': 'mysqlDB'
        })

        # prepare password
        user = '******'
        password = self.cmd('keyvault secret show --vault-name cupertino-kv-test -n TestDbPassword')\
            .get_output_in_json().get('value')

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.MysqlFlexible).format(**self.kwargs)

        # create connection
        self.cmd(
            'webapp connection create mysql-flexible --connection {} --source-id {} --target-id {} '
            '--secret name={} secret={} --client-type python'.format(
                name, source_id, target_id, user, password))

        # list connection
        connections = self.cmd(
            'webapp connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'secret'),
                self.check('[0].clientType', 'python')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # list configuration
        self.cmd('webapp connection list-configuration --id {}'.format(
            connection_id))

        # validate connection
        self.cmd('webapp connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('webapp connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd(
            'webapp connection delete --id {} --yes'.format(connection_id))
Esempio n. 7
0
    def test_kubernetes_servicebus_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'cluster': 'servicelinker-servicebus-cluster',
            'namespace': 'servicelinkertestservicebus'
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.KubernetesCluster).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.ServiceBus).format(**self.kwargs)

        # create connection
        self.cmd(
            'aks connection create servicebus --connection {} --source-id {} --target-id {} '
            '--secret --client-type python'.format(name, source_id, target_id))

        # list connection
        connections = self.cmd(
            'aks connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'secret'),
                self.check('[0].clientType', 'python')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # update connection
        self.cmd(
            'aks connection update servicebus --id {} --client-type dotnet'.
            format(connection_id),
            checks=[self.check('clientType', 'dotnet')])

        # list configuration
        self.cmd(
            'aks connection list-configuration --id {}'.format(connection_id))

        # validate connection
        self.cmd('aks connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('aks connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('aks connection delete --id {} --yes'.format(connection_id))
Esempio n. 8
0
    def test_kubernetes_confluentkafka_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'cluster': 'servicelinker-kafka-cluster',
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.KubernetesCluster).format(**self.kwargs)

        # create connection
        self.cmd(
            'aks connection create confluent-cloud --connection {} --source-id {} '
            '--bootstrap-server xxx.eastus.azure.confluent.cloud:9092 --kafka-key Name --kafka-secret Secret '
            '--schema-registry https://xxx.eastus.azure.confluent.cloud --schema-key Name --schema-secret Secret '
            '--client-type python'.format(name, source_id))

        # list connection
        connections = self.cmd(
            'aks connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 2),
                self.check('[0].clientType', 'python')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # update connection
        self.cmd(
            'aks connection update confluent-cloud --connection {} '
            '--source-id {} --client-type dotnet --kafka-secret Secret'.format(
                name, source_id),
            checks=[self.check('clientType', 'dotnet')])

        # list configuration
        self.cmd(
            'aks connection list-configuration --id {}'.format(connection_id))

        # validate connection
        self.cmd('aks connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('aks connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('aks connection delete --id {} --yes'.format(connection_id))
    def test_springcloud_redisenterprise_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'spring': 'servicelinker-springcloud',
            'app': 'redisenterprise',
            'deployment': 'default',
            'server': 'servicelinker-redis-enterprise',
            'database': 'default'
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.SpringCloud).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.RedisEnterprise).format(**self.kwargs)

        # create connection
        self.cmd(
            'spring-cloud connection create redis-enterprise --connection {} --source-id {} --target-id {} '
            '--secret --client-type java'.format(name, source_id, target_id))

        # list connection
        connections = self.cmd(
            'spring-cloud connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'secret'),
                self.check('[0].clientType', 'java')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # list configuration
        self.cmd('spring-cloud connection list-configuration --id {}'.format(
            connection_id))

        # validate connection
        self.cmd(
            'spring-cloud connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('spring-cloud connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('spring-cloud connection delete --id {} --yes'.format(
            connection_id))
    def test_webapp_storageblob_keyvault_ref(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'site': 'servicelinker-storageblob-ref-app',
            'account': 'servicelinkerstorage',
            'vault': 'servicelinker-kv-ref',
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.StorageBlob).format(**self.kwargs)
        keyvault_id = TARGET_RESOURCES.get(
            RESOURCE.KeyVault).format(**self.kwargs)

        # create connection
        id = self.cmd(
            'webapp connection create storage-blob --connection {} --source-id {} --target-id {} '
            '--secret --client-type python --vault-id {}'.format(
                name, source_id, target_id,
                keyvault_id)).get_output_in_json().get('id')

        self.cmd('webapp connection list --source-id {}'.format(source_id),
                 checks=[
                     self.check('length(@)', 2),
                 ])

        self.cmd('webapp connection show --id {}'.format(id),
                 checks=[
                     self.check('secretStore.keyVaultId', keyvault_id),
                 ])

        # update connection
        self.cmd('webapp connection update storage-blob --id {} '
                 '--secret'.format(id))

        self.cmd('webapp connection show --id {}'.format(id),
                 checks=[
                     self.check('secretStore.keyVaultId', keyvault_id),
                 ])

        for conn in self.cmd('webapp connection list --source-id {}'.format(
                source_id)).get_output_in_json():
            self.cmd('webapp connection delete --id {} --yes'.format(
                conn.get('id')))
    def test_springcloud_storageblob_keyvault_ref(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'spring': 'servicelinker-springcloud',
            'app': 'storageblob',
            'deployment': 'default',
            'account': 'servicelinkerteststorage',
            'vault': 'servicelinker-kv-ref',
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.SpringCloud).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.StorageBlob).format(**self.kwargs)
        keyvault_id = TARGET_RESOURCES.get(
            RESOURCE.KeyVault).format(**self.kwargs)

        # create connection
        id = self.cmd(
            'spring-cloud connection create storage-blob --connection {} --source-id {} --target-id {} '
            '--secret --client-type java --vault-id {}'.format(
                name, source_id, target_id,
                keyvault_id)).get_output_in_json().get('id')

        self.cmd(
            'spring-cloud connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 2),
            ])

        self.cmd('spring-cloud connection show --id {}'.format(id),
                 checks=[
                     self.check('secretStore.keyVaultId', keyvault_id),
                 ])

        # update connection
        self.cmd('spring-cloud connection update storage-blob --id {} '
                 '--secret'.format(id))

        self.cmd('spring-cloud connection show --id {}'.format(id),
                 checks=[
                     self.check('secretStore.keyVaultId', keyvault_id),
                 ])
    def test_springcloud_confluentkafka_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'spring': 'servicelinker-springcloud',
            'app': 'kafka',
            'deployment': 'default',
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.SpringCloud).format(**self.kwargs)

        # create connection
        self.cmd(
            'spring-cloud connection create confluent-cloud --connection {} --source-id {} '
            '--bootstrap-server xxx.eastus.azure.confluent.cloud:9092 --kafka-key Name --kafka-secret Secret '
            '--schema-registry https://xxx.eastus.azure.confluent.cloud --schema-key Name --schema-secret Secret '
            '--client-type java'.format(name, source_id))

        # list connection
        connections = self.cmd(
            'spring-cloud connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 2),
                self.check('[0].clientType', 'java')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # list configuration
        self.cmd('spring-cloud connection list-configuration --id {}'.format(
            connection_id))

        # validate connection
        self.cmd(
            'spring-cloud connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('spring-cloud connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('spring-cloud connection delete --id {} --yes'.format(
            connection_id))
    def test_webapp_cosmostable_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-win-group',
            'target_resource_group': 'servicelinker-test-win-group',
            'site': 'servicelinker-table-cosmos-asp-app2',
            'account': 'servicelinker-table-cosmos2',
            'table': 'MyItem'
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.CosmosTable).format(**self.kwargs)

        # create connection
        self.cmd(
            'webapp connection create cosmos-table --connection {} --source-id {} --target-id {} '
            '--system-identity --client-type python'.format(
                name, source_id, target_id))

        # list connection
        connections = self.cmd(
            'webapp connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'systemAssignedIdentity'),
                self.check('[0].clientType', 'python')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # list configuration
        self.cmd('webapp connection list-configuration --id {}'.format(
            connection_id))

        # validate connection
        self.cmd('webapp connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('webapp connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd(
            'webapp connection delete --id {} --yes'.format(connection_id))
    def test_containerapp_storageblob_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'app': 'servicelinker-storage-aca',
            'account': 'servicelinkerstorage'
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(RESOURCE.ContainerApp).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(RESOURCE.StorageBlob).format(**self.kwargs)

        # create connection
        self.cmd('containerapp connection create storage-blob --connection {} --source-id {} --target-id {} '
                 '--system-identity --client-type python -c {}'.format(name, source_id, target_id, self.default_container_name))

        # list connection
        connections = self.cmd(
            'containerapp connection list --source-id {}'.format(source_id),
            checks = [
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'systemAssignedIdentity'),
                self.check('[0].clientType', 'python')
            ]
        ).get_output_in_json()
        connection_id = connections[0].get('id')

        # update connection
        self.cmd('containerapp connection update storage-blob --id {} --client-type dotnet'.format(connection_id),
                 checks = [ self.check('clientType', 'dotnet') ])

        # list configuration
        self.cmd('containerapp connection list-configuration --id {}'.format(connection_id))

        # validate connection
        self.cmd('containerapp connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('containerapp connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd('containerapp connection delete --id {} --yes'.format(connection_id))
    def test_webapp_storagequeue_e2e(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'site': 'servicelinker-storagequeue-app2',
            'account': 'servicelinkerstorage2'
        })

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(RESOURCE.WebApp).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(
            RESOURCE.StorageQueue).format(**self.kwargs)

        # create connection
        self.cmd(
            'webapp connection create storage-queue --connection {} --source-id {} --target-id {} '
            '--secret --client-type python'.format(name, source_id, target_id))

        # list connection
        connections = self.cmd(
            'webapp connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'secret'),
                self.check('[0].clientType', 'python')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # list configuration
        self.cmd('webapp connection list-configuration --id {}'.format(
            connection_id))

        # validate connection
        self.cmd('webapp connection validate --id {}'.format(connection_id))

        # show connection
        self.cmd('webapp connection show --id {}'.format(connection_id))

        # delete connection
        self.cmd(
            'webapp connection delete --id {} --yes'.format(connection_id))
    def test_springcloud_mysql_e2e_kvsecret(self):
        self.kwargs.update({
            'subscription': get_subscription_id(self.cli_ctx),
            'source_resource_group': 'servicelinker-test-linux-group',
            'target_resource_group': 'servicelinker-test-linux-group',
            'spring': 'servicelinker-springcloud',
            'app': 'mysql',
            'deployment': 'default',
            'server': 'servicelinker-mysql',
            'database': 'mysqlDB'
        })

        # prepare password
        user = '******'
        keyvaultUri = "https://cupertino-kv-test.vault.azure.net/secrets/TestDbPassword"

        # prepare params
        name = 'testconn'
        source_id = SOURCE_RESOURCES.get(
            RESOURCE.SpringCloud).format(**self.kwargs)
        target_id = TARGET_RESOURCES.get(RESOURCE.Mysql).format(**self.kwargs)

        # create connection
        self.cmd(
            'spring-cloud connection create mysql --connection {} --source-id {} --target-id {} '
            '--secret name={} secret-uri={} --client-type java'.format(
                name, source_id, target_id, user, keyvaultUri))

        # list connection
        connections = self.cmd(
            'spring-cloud connection list --source-id {}'.format(source_id),
            checks=[
                self.check('length(@)', 1),
                self.check('[0].authInfo.authType', 'secret'),
                self.check('[0].clientType', 'java')
            ]).get_output_in_json()
        connection_id = connections[0].get('id')

        # delete connection
        self.cmd('spring-cloud connection delete --id {} --yes'.format(
            connection_id))