@@ -25,7 +25,7 @@ import { ambientEgressNamespace, sharedEgressPkgId } from "./istio-resources";
2525const createMockPackage = (
2626 name : string ,
2727 selector : Record < string , string > = { } ,
28- mode : "ambient" | "sidecar" = "ambient" ,
28+ mode : "ambient" | "sidecar" | "unset" = "ambient" ,
2929 sso : Sso [ ] = [
3030 {
3131 clientId : "test-client" ,
@@ -40,11 +40,14 @@ const createMockPackage = (
4040 uid : "test-uid" ,
4141 } ,
4242 spec : {
43- network : {
44- serviceMesh : {
45- mode : mode === "ambient" ? Mode . Ambient : Mode . Sidecar ,
46- } ,
47- } ,
43+ network :
44+ mode === "unset"
45+ ? { }
46+ : {
47+ serviceMesh : {
48+ mode : mode === "ambient" ? Mode . Ambient : Mode . Sidecar ,
49+ } ,
50+ } ,
4851 sso,
4952 } ,
5053} ) ;
@@ -319,6 +322,37 @@ describe("reconcileService and reconcilePod", () => {
319322 }
320323 } ,
321324 ) ;
325+
326+ it . each ( testCases ) (
327+ "$name - defaults to ambient mode when serviceMesh.mode is undefined" ,
328+ async ( { createResource, expectedLabels, name } ) => {
329+ const resource = createResource ( ) ;
330+
331+ const pkg = createMockPackage ( "test-pkg" , { "app.kubernetes.io/name" : "test-app" } , "unset" , [
332+ {
333+ clientId : "test-client" ,
334+ name : "test-sso" ,
335+ enableAuthserviceSelector : { "app.kubernetes.io/name" : "test-app" } ,
336+ } ,
337+ ] ) ;
338+
339+ (
340+ PackageStore . getPackageByNamespace as MockedFunction <
341+ typeof PackageStore . getPackageByNamespace
342+ >
343+ ) . mockImplementation ( namespace => {
344+ return namespace === testNamespace ? pkg : undefined ;
345+ } ) ;
346+
347+ if ( name === "service" ) {
348+ await reconcileService ( resource as a . Service ) ;
349+ } else {
350+ await reconcilePod ( resource as a . Pod ) ;
351+ }
352+
353+ expect ( resource . metadata ?. labels ) . toMatchObject ( expectedLabels ) ;
354+ } ,
355+ ) ;
322356} ) ;
323357
324358describe ( "setupAmbientWaypoint" , ( ) => {
0 commit comments