public async Task MetadataErrorIsNotCached() { var baseUri = new Uri("ftp://localhost/"); var settings = new ODataClientSettings { BaseUri = baseUri }; var client = new ODataClient(settings); try { await client.GetMetadataAsync(); } catch (ArgumentException) { //only HTTP and HTTPS supported } catch (AggregateException ex) { ex = ex.Flatten(); if (ex.InnerExceptions.Count != 1) { throw; } var arg = ex.InnerException as ArgumentException; if (arg == null) { throw; } //only HTTP and HTTPS supported } var wasCached = true; var cached = EdmMetadataCache.GetOrAdd("ftp://localhost/", x => { wasCached = false; return(null); }); Assert.False(wasCached); Assert.Null(cached); }
public async Task MetadataIsCached() { var settings = new ODataClientSettings { BaseUri = _serviceUri }; var client = new ODataClient(settings); await client.GetMetadataAsync(); EdmMetadataCache.GetOrAdd(_serviceUri.ToString(), x => throw new Exception("metadata was not cached.")); settings.BeforeRequest = x => throw new Exception("metadata cache was not used."); await client.GetMetadataAsync(); settings = new ODataClientSettings { BaseUri = _serviceUri, BeforeRequest = x => throw new Exception("not reusing settings will defeat metadata cache.") }; client = new ODataClient(settings); await client.GetMetadataAsync(); }