fun happyPathPythonConnectionInjection()

in jetbrains-core/it/software/aws/toolkits/jetbrains/core/execution/PythonAwsConnectionExtensionIntegrationTest.kt [46:90]


    fun happyPathPythonConnectionInjection() {
        val file = projectRule.fixture.addFileToProject(
            "hello.py",
            """ 
            import os
            print(os.environ["AWS_REGION"])
            """.trimIndent()
        )

        val runManager = RunManager.getInstance(projectRule.project)
        val configuration = runManager.createConfiguration("test", PythonConfigurationType::class.java)
        val runConfiguration = configuration.configuration as PythonRunConfiguration

        lateinit var pythonExecutable: String
        Disposer.newDisposable().use { disposable ->
            // Allow us to search system for all pythons
            FileSystems.getDefault().rootDirectories.forEach { root ->
                Files.list(root).forEach {
                    VfsRootAccess.allowRootAccess(disposable, it.toString())
                }
            }
            pythonExecutable = detectSystemWideSdks(null, emptyList()).first().homePath!!
        }

        assertThat(pythonExecutable).isNotEmpty
        runConfiguration.scriptName = file.virtualFile.path
        runConfiguration.sdkHome = pythonExecutable
        val mockRegion = regionProviderRule.createAwsRegion()
        val mockCredential = credentialManagerRule.createCredentialProvider()

        runConfiguration.putCopyableUserData<AwsCredentialInjectionOptions>(
            AWS_CONNECTION_RUN_CONFIGURATION_KEY,
            AwsCredentialInjectionOptions {
                region = mockRegion.id
                credential = mockCredential.id
            }
        )

        VfsRootAccess.allowRootAccess(projectRule.fixture.testRootDisposable, pythonExecutable)

        val executor = ExecutorRegistry.getInstance().getExecutorById(DefaultRunExecutor.EXECUTOR_ID)
        assertNotNull(executor)

        assertThat(executeRunConfigurationAndWait(runConfiguration).stdout).isEqualToIgnoringWhitespace(mockRegion.id)
    }