@@ -15,7 +15,7 @@ public void CanParseImageGalleryReference() {
1515            subId . ToString ( ) ,  "resource-group" ,  "gallery" ,  "imageName" ) ; 
1616
1717        var  result  =  ImageReference . MustParse ( fakeId . ToString ( ) ) ; 
18-         var  galleryImage  =  Assert . IsType < ImageReference . GalleryImage > ( result ) ; 
18+         var  galleryImage  =  Assert . IsType < ImageReference . LatestGalleryImage > ( result ) ; 
1919        Assert . Equal ( "imageName" ,  galleryImage . Identifier . Name ) ; 
2020        Assert . Equal ( "gallery" ,  galleryImage . Identifier . Parent ? . Name ) ; 
2121        Assert . Equal ( "resource-group" ,  galleryImage . Identifier . ResourceGroupName ) ; 
@@ -45,6 +45,47 @@ public void CanParseMarketplaceReference() {
4545        Assert . Equal ( "latest" ,  marketplace . Version ) ; 
4646    } 
4747
48+     [ Fact ] 
49+     public  void  CanParseSpecificVersionGalleryImage ( )  { 
50+         var  subId  =  Guid . NewGuid ( ) ; 
51+         var  fakeId  =  GalleryImageVersionResource . CreateResourceIdentifier ( 
52+             subId . ToString ( ) ,  "resource-group" ,  "gallery" ,  "imageName" ,  "latest" ) ; 
53+ 
54+         var  result  =  ImageReference . MustParse ( fakeId . ToString ( ) ) ; 
55+         var  galleryImage  =  Assert . IsType < ImageReference . GalleryImage > ( result ) ; 
56+         Assert . Equal ( "latest" ,  galleryImage . Identifier . Name ) ; 
57+         Assert . Equal ( "imageName" ,  galleryImage . Identifier . Parent ? . Name ) ; 
58+         Assert . Equal ( "gallery" ,  galleryImage . Identifier . Parent ? . Parent ? . Name ) ; 
59+         Assert . Equal ( "resource-group" ,  galleryImage . Identifier . ResourceGroupName ) ; 
60+     } 
61+ 
62+     [ Fact ] 
63+     public  void  CanParseSharedGalleryImage ( )  { 
64+         var  subId  =  Guid . NewGuid ( ) ; 
65+         var  fakeId  =  SharedGalleryImageResource . CreateResourceIdentifier ( 
66+             subId . ToString ( ) ,  "location" ,  "gallery" ,  "imageName" ) ; 
67+ 
68+         var  result  =  ImageReference . MustParse ( fakeId . ToString ( ) ) ; 
69+         var  galleryImage  =  Assert . IsType < ImageReference . LatestSharedGalleryImage > ( result ) ; 
70+         Assert . Equal ( "imageName" ,  galleryImage . Identifier . Name ) ; 
71+         Assert . Equal ( "gallery" ,  galleryImage . Identifier . Parent ? . Name ) ; 
72+         Assert . Null ( galleryImage . Identifier . ResourceGroupName ) ; 
73+     } 
74+ 
75+     [ Fact ] 
76+     public  void  CanParseSpecificVersionSharedGalleryImage ( )  { 
77+         var  subId  =  Guid . NewGuid ( ) ; 
78+         var  fakeId  =  SharedGalleryImageVersionResource . CreateResourceIdentifier ( 
79+             subId . ToString ( ) ,  "location" ,  "gallery" ,  "imageName" ,  "latest" ) ; 
80+ 
81+         var  result  =  ImageReference . MustParse ( fakeId . ToString ( ) ) ; 
82+         var  galleryImage  =  Assert . IsType < ImageReference . SharedGalleryImage > ( result ) ; 
83+         Assert . Equal ( "latest" ,  galleryImage . Identifier . Name ) ; 
84+         Assert . Equal ( "imageName" ,  galleryImage . Identifier . Parent ? . Name ) ; 
85+         Assert . Equal ( "gallery" ,  galleryImage . Identifier . Parent ? . Parent ? . Name ) ; 
86+         Assert . Null ( galleryImage . Identifier . ResourceGroupName ) ; 
87+     } 
88+ 
4889    [ Fact ] 
4990    public  void  UnknownResourceTypeGeneratesError ( )  { 
5091        var  subId  =  Guid . NewGuid ( ) ; 
@@ -56,21 +97,31 @@ public void UnknownResourceTypeGeneratesError() {
5697    } 
5798
5899    static readonly  string  _expected  =  @$ "{{
59-   ""galleryImageId "": ""/subscriptions/{ Guid . Empty } /resourceGroups/resource-group/providers/Microsoft.Compute/galleries/gallery/images/imageName"", 
100+   ""latestGalleryId "": ""/subscriptions/{ Guid . Empty } /resourceGroups/resource-group/providers/Microsoft.Compute/galleries/gallery/images/imageName"", 
60101  ""imageId"": ""/subscriptions/{ Guid . Empty } /resourceGroups/resource-group/providers/Microsoft.Compute/images/imageName"", 
61-   ""marketplaceId"": ""Canonical:UbuntuServer:18.04-LTS:latest"" 
102+   ""marketplaceId"": ""Canonical:UbuntuServer:18.04-LTS:latest"", 
103+   ""galleryId"": ""/subscriptions/{ Guid . Empty } /resourceGroups/resource-group/providers/Microsoft.Compute/galleries/gallery/images/imageName/versions/latest"", 
104+   ""latestSharedGalleryId"": ""/subscriptions/{ Guid . Empty } /providers/Microsoft.Compute/locations/location/sharedGalleries/gallery/images/imageName"", 
105+   ""sharedGalleryId"": ""/subscriptions/{ Guid . Empty } /providers/Microsoft.Compute/locations/location/sharedGalleries/gallery/images/imageName/versions/latest"" 
62106}}" ; 
63107
64108    private  record  Holder ( 
65-         ImageReference  galleryImageId , 
109+         ImageReference  latestGalleryId , 
66110        ImageReference  imageId , 
67-         ImageReference  marketplaceId ) ; 
111+         ImageReference  marketplaceId , 
112+         ImageReference  galleryId , 
113+         ImageReference . LatestSharedGalleryImage  latestSharedGalleryId , 
114+         ImageReference . SharedGalleryImage  sharedGalleryId ) ; 
68115
69116    [ Fact ] 
70117    public  void  SerializesToStringAndDeserializesFromString ( )  { 
71118        var  subId  =  Guid . Empty ; 
72119
73-         var  galleryImageId  =  new  ImageReference . GalleryImage ( 
120+         var  galleryId  =  new  ImageReference . GalleryImage ( 
121+             GalleryImageVersionResource . CreateResourceIdentifier ( 
122+                 subId . ToString ( ) ,  "resource-group" ,  "gallery" ,  "imageName" ,  "latest" ) ) ; 
123+ 
124+         var  latestGalleryId  =  new  ImageReference . LatestGalleryImage ( 
74125            GalleryImageResource . CreateResourceIdentifier ( 
75126                subId . ToString ( ) ,  "resource-group" ,  "gallery" ,  "imageName" ) ) ; 
76127
@@ -81,16 +132,33 @@ public void SerializesToStringAndDeserializesFromString() {
81132        var  marketplaceId  =  new  ImageReference . Marketplace ( 
82133            "Canonical" ,  "UbuntuServer" ,  "18.04-LTS" ,  "latest" ) ; 
83134
135+         var  latestSharedGalleryId  =  new  ImageReference . LatestSharedGalleryImage ( 
136+             SharedGalleryImageResource . CreateResourceIdentifier ( 
137+                 subId . ToString ( ) ,  "location" ,  "gallery" ,  "imageName" ) ) ; 
138+ 
139+         var  sharedGalleryId  =  new  ImageReference . SharedGalleryImage ( 
140+             SharedGalleryImageVersionResource . CreateResourceIdentifier ( 
141+                 subId . ToString ( ) ,  "location" ,  "gallery" ,  "imageName" ,  "latest" ) ) ; 
142+ 
84143        var  result  =  JsonSerializer . Serialize ( 
85-             new  Holder ( galleryImageId ,  imageId ,  marketplaceId ) , 
144+             new  Holder ( 
145+                 latestGalleryId , 
146+                 imageId , 
147+                 marketplaceId , 
148+                 galleryId , 
149+                 latestSharedGalleryId , 
150+                 sharedGalleryId ) , 
86151            new  JsonSerializerOptions  {  WriteIndented  =  true  } ) ; 
87152
88153        Assert . Equal ( _expected ,  result ) ; 
89154
90155        var  deserialized  =  JsonSerializer . Deserialize < Holder > ( result ) ; 
91156        Assert . NotNull ( deserialized ) ; 
92-         Assert . Equal ( galleryImageId ,  deserialized ! . galleryImageId ) ; 
157+         Assert . Equal ( latestGalleryId ,  deserialized ! . latestGalleryId ) ; 
158+         Assert . Equal ( galleryId ,  deserialized . galleryId ) ; 
93159        Assert . Equal ( imageId ,  deserialized . imageId ) ; 
94160        Assert . Equal ( marketplaceId ,  deserialized . marketplaceId ) ; 
161+         Assert . Equal ( latestSharedGalleryId ,  deserialized . latestSharedGalleryId ) ; 
162+         Assert . Equal ( sharedGalleryId ,  deserialized . sharedGalleryId ) ; 
95163    } 
96164} 
0 commit comments