File size: 2,286 Bytes
7b715bc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

using Google.Apis.Http;
using Google.Apis.Storage.v1;
using IntegrationTests.Utils;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Xunit;

namespace IntegrationTests;

public class HttpClientWithExecuteInterceptorTests
{
    [Fact]
    public async Task NoAuthentication_Fails()
    {
        using var client = new HttpClient();
        var request = CreateListBucketsRequest();
        var response = await client.SendAsync(request);
        Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
    }

    [Fact]
    public async Task InterceptWithCredentials()
    {
        var credential = Helper.GetServiceCredential().CreateScoped(StorageService.Scope.DevstorageFullControl);
        var handler = credential.ToDelegatingHandler(new HttpClientHandler());
        using var client = new HttpClient(handler);
        var request = CreateListBucketsRequest();
        var response = await client.SendAsync(request);
        Assert.Equal(HttpStatusCode.OK, response.StatusCode);

        // Validate that this does look like a listing for buckets...
        var json = await response.Content.ReadAsStringAsync();
        var obj = JObject.Parse(json);
        var kind = (string) obj["kind"];
        Assert.Equal("storage#buckets", kind);
    }

    private static HttpRequestMessage CreateListBucketsRequest()
    {
        var uri = new StorageService().Buckets.List(Helper.GetProjectId()).CreateRequest().RequestUri;

        return new HttpRequestMessage
        {
            RequestUri = uri,
            Method = HttpMethod.Get
        };
    }
}