// Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 package software.aws.toolkits.jetbrains.services.lambda.dotnet import base.AwsReuseSolutionTestBase import com.jetbrains.rider.test.asserts.shouldBe import com.jetbrains.rider.test.framework.frameworkLogger import org.testng.annotations.DataProvider import org.testng.annotations.Test import software.amazon.awssdk.services.lambda.model.Runtime import software.aws.toolkits.jetbrains.services.lambda.Lambda import software.aws.toolkits.jetbrains.utils.OPEN_SOLUTION_DIR_NAME /** * Tests to verify R# backend PSI element based on handler string */ class DotNetLambdaHandlerResolverTest : AwsReuseSolutionTestBase() { override fun getSolutionDirectoryName(): String = OPEN_SOLUTION_DIR_NAME @Test fun testHandler_SingleValidHandler() { val handler = "HelloWorld::HelloWorld.Function::FunctionHandler" val handlerElements = Lambda.findPsiElementsForHandler( project, Runtime.DOTNET6, handler ) handlerElements.size.shouldBe(1, "Mismatch number of elements found for a specified handler string: $handler") } @DataProvider(name = "invalidHandlerData") fun invalidHandlerNameData() = arrayOf( arrayOf("InvalidMethodName", "HelloWorld::HelloWorld.Function::InvalidFunctionHandler"), arrayOf("MissTypeAndMethodHandler", "HelloWorld"), arrayOf("MissMethodName", "HelloWorld::HelloWorld.Function"), arrayOf("InvalidType", "HelloWorld::HelloWorld::FunctionHandler"), arrayOf("EmptyHandler", "") ) @Test(dataProvider = "invalidHandlerData") fun testHandler_InvalidHandler(name: String, handler: String) { // Note: 'name' variable is used inside RiderTestFramework to generate a correct name from test instance. // Log a name here as a placeholder to avoid linter errors frameworkLogger.info("Test name: $name") val handlerElements = Lambda.findPsiElementsForHandler( project, Runtime.DOTNET6, handler ) handlerElements.size.shouldBe(0, "Mismatch number of elements found for a specified handler string: $handler") } }