georust/ogcapi

Tests not completing due to `client::tests::collections` encountering malformed response

metasim opened this issue · 2 comments

Running

cargo test --lib client::tests::collections -- --nocapture --exact

Results in the test looping over the same request, calling this URL over and over again:

https://data.geo.admin.ch/api/stac/v0.9/collections?cursor=cD1JbnRlcnZlbnRpb24rcmVnaW9ucytmb3IrZW1lcmdlbmN5K2NhbGwrbnVtYmVyKzE0Mytvbittb2JpbGUrbmV0d29yaw%3D%3D

After adding some additional debugging output (including printing the collection id) the following error is extracted

error decoding response body: data did not match any variant of untagged enum Bbox at line 1 column 87085'
Error details
...
Fetching https://data.geo.admin.ch/api/stac/v0.9/
Fetching https://data.geo.admin.ch/api/stac/v0.9/collections
ch.bfe.energiestaedte-2000watt-areale
ch.bakom.mobilnetz-2g
ch.swisstopo.swissbuildings3d_3_0
ch.bakom.mobilnetz-3g
ch.bakom.mobilnetz-4g
ch.bakom.mobilnetz-5g
ch.are.erreichbarkeit-oev
ch.are.erreichbarkeit-miv
ch.bazl.luftfahrtkarten-icao
ch.are.alpenkonvention
ch.blw.alpprodukte
ch.bafu.wald-vegetationshoehenstufen_2085_weniger_trocken
ch.bafu.wald-tannenareale
ch.bafu.waldschadenflaechen-vivian
ch.bakom.anschlussart-koaxialkabel
ch.bakom.anschlussart-kupferdraht
ch.bakom.anschlussart-glasfaser
ch.astra.nationalstrassenachsen
ch.bafu.gewaesserschutz-badewasserqualitaet
ch.bfe.biogasanlagen
ch.blw.landwirtschaftliche-zonengrenzen
ch.bfs.volkszaehlung-gebaeudestatistik_gebaeude
ch.bfs.volkszaehlung-gebaeudestatistik_wohnungen
ch.bfs.betriebszaehlungen-beschaeftigte_vollzeitaequivalente
ch.bfs.betriebszaehlungen-arbeitsstaetten
ch.bav.seilbahnen-bundeskonzession
ch.are.agglomerationsverkehr
ch.meteoschweiz.klimaszenarien-raumklima
ch.blw.klimaeignung-getreidebau
ch.blw.klimaeignung-kulturland
ch.blw.klimaeignung-futterbau
ch.blw.klimaeignung-koernermais
ch.blw.klimaeignung-typ
ch.blw.klimaeignung-kartoffeln
ch.blw.niederschlagshaushalt
ch.blw.klimaeignung-spezialkulturen
ch.blw.klimaeignung-zwischenfruchtbau
ch.bfe.abgeltung-wasserkraftnutzung
ch.baspo.nationales-sportanlagenkonzept
ch.astra.ivs-nat-verlaeufe
ch.bfe.energieforschung
ch.bfe.stauanlagen-bundesaufsicht
ch.bafu.gewaesserschutz-klaeranlagen
ch.blw.bewaesserungsbeduerftigkeit
ch.bafu.wald-obere_waldgrenze
ch.bafu.gewaesserschutz-diffuse_eintraege_stickstoff
ch.bafu.gewaesserschutz-diffuse_eintraege_phosphor
ch.blw.bodeneignung-kulturtyp
ch.blw.bodeneignung-kulturland
ch.blw.bodeneignung-naehrstoffspeichervermoegen
ch.blw.bodeneignung-wasserdurchlaessigkeit
ch.blw.bodeneignung-gruendigkeit
ch.blw.bodeneignung-skelettgehalt
ch.blw.bodeneignung-vernaessung
ch.blw.bodeneignung-wasserspeichervermoegen
ch.bafu.oekomorphologie-f
ch.bafu.landesforstinventar-wirtschaftsregionen
ch.bfe.elektrizitaetsproduktionsanlagen
ch.bfe.sachplan-uebertragungsleitungen_kraft
ch.bakom.notruf
ch.bfe.energiestaedte
ch.blw.erosion
ch.blw.erosion-quantitativ
ch.bav.anlagen-schienengueterverkehr
ch.astra.ivs-nat_abgrenzungen
ch.astra.ivs-nat_wegbegleiter
ch.astra.ivs-nat
ch.astra.ivs-gelaendekarte
ch.blw.feldblockkarte
ch.blw.erosion-fliesswegkarte
ch.bafu.wald-standortsregionen
ch.bafu.wald-foehnhaeufigkeit_jahr
ch.bfs.generalisierte-grenzen_agglomerationen_g1
ch.bfs.generalisierte-grenzen_agglomerationen_g2
ch.swisstopo.geoidmodell-etrs89
ch.swisstopo.geoidmodell-ch1903
ch.bazl.segelflugkarte
ch.bfe.erneuerbarheizen-mehrfamilienhaeuser
ch.bfe.erneuerbarheizen
ch.blw.hang_steillagen
ch.are.wohnungsinventar-zweitwohnungsanteil
ch.bakom.downlink1000
ch.bakom.downlink100
ch.bakom.downlink10
ch.bakom.downlink300
ch.bakom.downlink30
ch.bakom.downlink500
ch.bakom.uplink1000
ch.bakom.uplink100
ch.bakom.uplink10
ch.bakom.uplink1
ch.bakom.notruf-112_festnetz
ch.bakom.notruf-112_mobilnetz
ch.bakom.notruf-112_satellit
ch.bakom.notruf-117_festnetz
ch.bakom.notruf-117_mobilnetz
ch.bakom.notruf-118_festnetz
ch.bakom.notruf-118_mobilnetz
ch.bakom.notruf-143_festnetz
ch.bakom.notruf-143_mobilnetz
Fetching https://data.geo.admin.ch/api/stac/v0.9/collections?cursor=cD1JbnRlcnZlbnRpb24rcmVnaW9ucytmb3IrZW1lcmdlbmN5K2NhbGwrbnVtYmVyKzE0Mytvbittb2JpbGUrbmV0d29yaw%3D%3D
thread 'client::tests::collections' panicked at 'Error reading collection: Encountered a request error: error decoding response body: data did not match any variant of untagged enum Bbox at line 1 column 87085', ogcapi-client/src/client.rs:470:21

Using curl on the above URL generates this response.

response.json.zip

My guess as to what's happening is that the next cursor isn't loaded in the case when a parsing error occurs. The previous cursor key is used repeatedly.

...
[
  {
    "rel":"next",
    "href":"https://data.geo.admin.ch/api/stac/v0.9/collections?cursor=cD1TZWN0b3JhbCtwbGFuK29uK3RyYW5zcG9ydCUyQythdmlhdGlvbitpbmZyYXN0cnVjdHVyZStzZWN0aW9uKyUyOFNJTCUyOSstK2NvbnN1bHRhdGlvbnM%3D"
  },
  {
    "rel":"previous",
    "href":"https://data.geo.admin.ch/api/stac/v0.9/collections?cursor=cj0xJnA9SW50ZXJ2ZW50aW9uK3JlZ2lvbnMrZm9yK2VtZXJnZW5jeStjYWxsK251bWJlcisxNDQrb24rZml4ZWQrbmV0d29yaw%3D%3D"
  }
]
...