@@ -45,7 +45,8 @@ public void run(TestContext ctx) {
4545 ctx .check ("Lambda CreateFunction" ,
4646 functionName .equals (createResp .functionName ())
4747 && functionArn != null && functionArn .contains (functionName )
48- && "Active" .equals (createResp .stateAsString ()));
48+ && "Active" .equals (createResp .stateAsString ())
49+ && "$LATEST" .equals (createResp .version ()));
4950 } catch (Exception e ) {
5051 ctx .check ("Lambda CreateFunction" , false , e );
5152 return ;
@@ -120,7 +121,32 @@ public void run(TestContext ctx) {
120121 ctx .check ("Lambda UpdateFunctionCode" , false , e );
121122 }
122123
123- // 8. CreateFunction duplicate → ResourceConflictException
124+ // 8. PublishVersion & ListVersionsByFunction
125+ try {
126+ PublishVersionResponse v1 = lambda .publishVersion (PublishVersionRequest .builder ()
127+ .functionName (functionName )
128+ .description ("v1" )
129+ .build ());
130+ ctx .check ("Lambda PublishVersion (1)" , "1" .equals (v1 .version ()) && "v1" .equals (v1 .description ()));
131+
132+ PublishVersionResponse v2 = lambda .publishVersion (PublishVersionRequest .builder ()
133+ .functionName (functionName )
134+ .description ("v2" )
135+ .build ());
136+ ctx .check ("Lambda PublishVersion (2)" , "2" .equals (v2 .version ()) && "v2" .equals (v2 .description ()));
137+
138+ ListVersionsByFunctionResponse listVersions = lambda .listVersionsByFunction (ListVersionsByFunctionRequest .builder ()
139+ .functionName (functionName )
140+ .build ());
141+ boolean hasLatest = listVersions .versions ().stream ().anyMatch (v -> "$LATEST" .equals (v .version ()));
142+ boolean hasV1 = listVersions .versions ().stream ().anyMatch (v -> "1" .equals (v .version ()));
143+ boolean hasV2 = listVersions .versions ().stream ().anyMatch (v -> "2" .equals (v .version ()));
144+ ctx .check ("Lambda ListVersionsByFunction" , hasLatest && hasV1 && hasV2 && listVersions .versions ().size () >= 3 );
145+ } catch (Exception e ) {
146+ ctx .check ("Lambda ListVersionsByFunction" , false , e );
147+ }
148+
149+ // 9. CreateFunction duplicate → ResourceConflictException
124150 try {
125151 lambda .createFunction (CreateFunctionRequest .builder ()
126152 .functionName (functionName )
@@ -138,7 +164,7 @@ public void run(TestContext ctx) {
138164 ctx .check ("Lambda CreateFunction duplicate → 409" , false , e );
139165 }
140166
141- // 9 . GetFunction non-existent → ResourceNotFoundException
167+ // 10 . GetFunction non-existent → ResourceNotFoundException
142168 try {
143169 lambda .getFunction (GetFunctionRequest .builder ()
144170 .functionName ("does-not-exist" ).build ());
@@ -149,7 +175,7 @@ public void run(TestContext ctx) {
149175 ctx .check ("Lambda GetFunction non-existent → 404" , false , e );
150176 }
151177
152- // 10 . DeleteFunction
178+ // 11 . DeleteFunction
153179 try {
154180 lambda .deleteFunction (DeleteFunctionRequest .builder ()
155181 .functionName (functionName ).build ());
@@ -160,11 +186,20 @@ public void run(TestContext ctx) {
160186 } catch (ResourceNotFoundException e ) {
161187 ctx .check ("Lambda DeleteFunction" , true );
162188 }
189+
190+ // Verify versions are also gone
191+ try {
192+ lambda .listVersionsByFunction (ListVersionsByFunctionRequest .builder ()
193+ .functionName (functionName ).build ());
194+ ctx .check ("Lambda DeleteFunction (versions deleted)" , false );
195+ } catch (ResourceNotFoundException e ) {
196+ ctx .check ("Lambda DeleteFunction (versions deleted)" , true );
197+ }
163198 } catch (Exception e ) {
164199 ctx .check ("Lambda DeleteFunction" , false , e );
165200 }
166201
167- // 11 . Ruby runtime support
202+ // 12 . Ruby runtime support
168203 String rubyFn = "sdk-test-ruby-fn" ;
169204 try {
170205 CreateFunctionResponse rubyResp = lambda .createFunction (CreateFunctionRequest .builder ()
0 commit comments