|
| 1 | +package capabilitiesgenerator |
| 2 | + |
| 3 | +import ( |
| 4 | + pdoknlv3 "github.com/pdok/mapserver-operator/api/v3" |
| 5 | + smoothoperatorv1 "github.com/pdok/smooth-operator/api/v1" |
| 6 | + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
| 7 | + |
| 8 | + smoothoperatorutils "github.com/pdok/smooth-operator/pkg/util" |
| 9 | + "testing" |
| 10 | +) |
| 11 | + |
| 12 | +const ( |
| 13 | + WFSInput = `global: |
| 14 | + prefix: prefix |
| 15 | + namespace: http://prefix.geonovum.nl |
| 16 | + onlineResourceUrl: http://localhost |
| 17 | + path: /datasetOwner/dataset/theme/wfs/v1_0 |
| 18 | + version: v1_0 |
| 19 | + additionalSchemaLocations: http://inspire.ec.europa.eu/schemas/inspire_dls/1.0 http://inspire.ec.europa.eu/schemas/inspire_dls/1.0/inspire_dls.xsd |
| 20 | +services: |
| 21 | + wfs200: |
| 22 | + filename: /var/www/config/capabilities_wfs_200.xml |
| 23 | + definition: |
| 24 | + serviceIdentification: |
| 25 | + title: some Service title |
| 26 | + abstract: some \"Service\" abstract |
| 27 | + keywords: |
| 28 | + keyword: |
| 29 | + - service-keyword-1 |
| 30 | + - service-keyword-2 |
| 31 | + - infoFeatureAccessService |
| 32 | + accessConstraints: http://creativecommons.org/publicdomain/zero/1.0/deed.nl |
| 33 | + serviceProvider: |
| 34 | + providerName: PDOK |
| 35 | + capabilities: |
| 36 | + operationsMetadata: |
| 37 | + extendedCapabilities: |
| 38 | + extendedCapabilities: |
| 39 | + metadataUrl: |
| 40 | + url: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=metameta-meta-meta-meta-metametameta |
| 41 | + mediaType: application/vnd.ogc.csw.GetRecordByIdResponse_xml |
| 42 | + supportedLanguages: |
| 43 | + defaultLanguage: |
| 44 | + language: dut |
| 45 | + responseLanguage: |
| 46 | + language: dut |
| 47 | + spatialDataSetIdentifier: |
| 48 | + code: datadata-data-data-data-datadatadata |
| 49 | + featureTypeList: |
| 50 | + featureType: |
| 51 | + - name: prefixfeaturetype-1-name |
| 52 | + title: featuretype-1-title |
| 53 | + abstract: feature \"1\" abstract |
| 54 | + keywords: |
| 55 | + - keyword: |
| 56 | + - featuretype-1-keyword-1 |
| 57 | + - featuretype-1-keyword-2 |
| 58 | + defaultCrs: urn:ogc:def:crs:EPSG::28992 |
| 59 | + otherCrs: |
| 60 | + - urn:ogc:def:crs:EPSG::28992 |
| 61 | + - urn:ogc:def:crs:EPSG::25831 |
| 62 | + - urn:ogc:def:crs:EPSG::25832 |
| 63 | + - urn:ogc:def:crs:EPSG::3034 |
| 64 | + - urn:ogc:def:crs:EPSG::3035 |
| 65 | + - urn:ogc:def:crs:EPSG::3857 |
| 66 | + - urn:ogc:def:crs:EPSG::4258 |
| 67 | + - urn:ogc:def:crs:EPSG::4326 |
| 68 | + metadataUrl: |
| 69 | + href: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=datadata-data-data-data-datadatadata |
| 70 | + - name: prefixfeaturetype-2-name |
| 71 | + title: featuretype-2-title |
| 72 | + abstract: feature \"2\" abstract |
| 73 | + keywords: |
| 74 | + - keyword: |
| 75 | + - featuretype-2-keyword-1 |
| 76 | + - featuretype-2-keyword-2 |
| 77 | + defaultCrs: urn:ogc:def:crs:EPSG::28992 |
| 78 | + otherCrs: |
| 79 | + - urn:ogc:def:crs:EPSG::28992 |
| 80 | + - urn:ogc:def:crs:EPSG::25831 |
| 81 | + - urn:ogc:def:crs:EPSG::25832 |
| 82 | + - urn:ogc:def:crs:EPSG::3034 |
| 83 | + - urn:ogc:def:crs:EPSG::3035 |
| 84 | + - urn:ogc:def:crs:EPSG::3857 |
| 85 | + - urn:ogc:def:crs:EPSG::4258 |
| 86 | + - urn:ogc:def:crs:EPSG::4326 |
| 87 | + metadataUrl: |
| 88 | + href: https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id=datadata-data-data-data-datadatadata |
| 89 | +` |
| 90 | +) |
| 91 | + |
| 92 | +func TestGetInputForWFS(t *testing.T) { |
| 93 | + type args struct { |
| 94 | + WFS *pdoknlv3.WFS |
| 95 | + ownerInfo *smoothoperatorv1.OwnerInfo |
| 96 | + } |
| 97 | + pdoknlv3.SetHost("http://localhost") |
| 98 | + tests := []struct { |
| 99 | + name string |
| 100 | + args args |
| 101 | + wantInput string |
| 102 | + wantErr bool |
| 103 | + }{ |
| 104 | + { |
| 105 | + name: "GetInputForWFS", |
| 106 | + args: args{ |
| 107 | + WFS: &pdoknlv3.WFS{ |
| 108 | + ObjectMeta: metav1.ObjectMeta{ |
| 109 | + Labels: map[string]string{ |
| 110 | + "dataset": "dataset", |
| 111 | + "dataset-owner": "datasetOwner", |
| 112 | + "theme": "theme", |
| 113 | + "service-version": "v1_0", |
| 114 | + }, |
| 115 | + }, |
| 116 | + Spec: pdoknlv3.WFSSpec{ |
| 117 | + Service: pdoknlv3.WFSService{ |
| 118 | + Title: "some Service title", |
| 119 | + Abstract: "some \"Service\" abstract", |
| 120 | + Keywords: []string{"service-keyword-1", "service-keyword-2", "infoFeatureAccessService"}, |
| 121 | + AccessConstraints: "http://creativecommons.org/publicdomain/zero/1.0/deed.nl", |
| 122 | + Inspire: &pdoknlv3.Inspire{ |
| 123 | + ServiceMetadataURL: pdoknlv3.MetadataURL{ |
| 124 | + CSW: &pdoknlv3.Metadata{ |
| 125 | + MetadataIdentifier: "metameta-meta-meta-meta-metametameta", |
| 126 | + }, |
| 127 | + }, |
| 128 | + Language: "dut", |
| 129 | + SpatialDatasetIdentifier: "datadata-data-data-data-datadatadata", |
| 130 | + }, |
| 131 | + DefaultCrs: "EPSG:28992", |
| 132 | + OtherCrs: []string{ |
| 133 | + "EPSG:28992", |
| 134 | + "EPSG:25831", |
| 135 | + "EPSG:25832", |
| 136 | + "EPSG:3034", |
| 137 | + "EPSG:3035", |
| 138 | + "EPSG:3857", |
| 139 | + "EPSG:4258", |
| 140 | + "EPSG:4326", |
| 141 | + }, |
| 142 | + FeatureTypes: []pdoknlv3.FeatureType{ |
| 143 | + { |
| 144 | + Name: "featuretype-1-name", |
| 145 | + Title: "featuretype-1-title", |
| 146 | + Abstract: "feature \"1\" abstract", |
| 147 | + Keywords: []string{"featuretype-1-keyword-1", "featuretype-1-keyword-2"}, |
| 148 | + DatasetMetadataURL: pdoknlv3.MetadataURL{ |
| 149 | + CSW: &pdoknlv3.Metadata{ |
| 150 | + MetadataIdentifier: "datadata-data-data-data-datadatadata", |
| 151 | + }, |
| 152 | + }, |
| 153 | + }, |
| 154 | + { |
| 155 | + Name: "featuretype-2-name", |
| 156 | + Title: "featuretype-2-title", |
| 157 | + Abstract: "feature \"2\" abstract", |
| 158 | + Keywords: []string{"featuretype-2-keyword-1", "featuretype-2-keyword-2"}, |
| 159 | + DatasetMetadataURL: pdoknlv3.MetadataURL{ |
| 160 | + CSW: &pdoknlv3.Metadata{ |
| 161 | + MetadataIdentifier: "datadata-data-data-data-datadatadata", |
| 162 | + }, |
| 163 | + }, |
| 164 | + }, |
| 165 | + }, |
| 166 | + Prefix: "prefix", |
| 167 | + }, |
| 168 | + }, |
| 169 | + }, |
| 170 | + ownerInfo: &smoothoperatorv1.OwnerInfo{ |
| 171 | + Spec: smoothoperatorv1.OwnerInfoSpec{ |
| 172 | + NamespaceTemplate: "http://{{prefix}}.geonovum.nl", |
| 173 | + MetadataUrls: smoothoperatorv1.MetadataUrls{ |
| 174 | + CSW: smoothoperatorv1.MetadataURL{ |
| 175 | + HrefTemplate: "https://www.nationaalgeoregister.nl/geonetwork/srv/dut/csw?service=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&elementsetname=full&id={{identifier}}", |
| 176 | + }, |
| 177 | + }, |
| 178 | + WFS: smoothoperatorv1.WFS{ |
| 179 | + ServiceProvider: smoothoperatorv1.ServiceProvider{ |
| 180 | + ProviderName: smoothoperatorutils.Pointer("PDOK"), |
| 181 | + }, |
| 182 | + }, |
| 183 | + }, |
| 184 | + }, |
| 185 | + }, |
| 186 | + wantInput: WFSInput, |
| 187 | + wantErr: false, |
| 188 | + }, |
| 189 | + } |
| 190 | + for _, tt := range tests { |
| 191 | + t.Run(tt.name, func(t *testing.T) { |
| 192 | + gotInput, err := GetInput(tt.args.WFS, tt.args.ownerInfo) |
| 193 | + if (err != nil) != tt.wantErr { |
| 194 | + t.Errorf("GetInput() error = %v, wantErr %v", err, tt.wantErr) |
| 195 | + return |
| 196 | + } |
| 197 | + if gotInput != tt.wantInput { |
| 198 | + t.Errorf("GetInput() gotInput = %v, want %v", gotInput, tt.wantInput) |
| 199 | + } |
| 200 | + }) |
| 201 | + } |
| 202 | +} |
0 commit comments