aboutsummaryrefslogtreecommitdiffstats
path: root/fbench/src/test/authority/authority_test.cpp
blob: 807fe5f3db07702569080b2e0668e2716d7a1c14 (plain) (blame)
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.

#include <util/authority.h>
#include <vespa/vespalib/gtest/gtest.h>

using vespalib::SocketSpec;

//-----------------------------------------------------------------------------

TEST(MakeSNISpecTest, host_port_is_parsed_as_expected) {
    EXPECT_EQ(make_sni_spec("my_host:123", "fallback", 456, false).host(), "my_host");
    EXPECT_EQ(make_sni_spec("my_host:123", "fallback", 456, true).host(), "my_host");
    EXPECT_EQ(make_sni_spec("my_host:123", "fallback", 456, false).port(), 123);
    EXPECT_EQ(make_sni_spec("my_host:123", "fallback", 456, true).port(), 123);
}

TEST(MakeSNISpecTest, user_info_is_stripped) {
    EXPECT_EQ(make_sni_spec("myuser:deprecated@my_host:123", "fallback", 456, false).host(), "my_host");
    EXPECT_EQ(make_sni_spec("myuser:deprecated@my_host:123", "fallback", 456, true).host(), "my_host");
    EXPECT_EQ(make_sni_spec("myuser:deprecated@my_host:123", "fallback", 456, false).port(), 123);
    EXPECT_EQ(make_sni_spec("myuser:deprecated@my_host:123", "fallback", 456, true).port(), 123);
}

TEST(MakeSNISpecTest, port_can_be_skipped) {
    EXPECT_EQ(make_sni_spec("my_host", "fallback", 456, false).host(), "my_host");
    EXPECT_EQ(make_sni_spec("my_host", "fallback", 456, true).host(), "my_host");
    EXPECT_EQ(make_sni_spec("my_host", "fallback", 456, false).port(), 80);
    EXPECT_EQ(make_sni_spec("my_host", "fallback", 456, true).port(), 443);
}

TEST(MakeSNISpecTest, quoted_ip_addresses_work_as_expected) {
    EXPECT_EQ(make_sni_spec("[::1]:123", "fallback", 456, false).host(), "::1");
    EXPECT_EQ(make_sni_spec("[::1]:123", "fallback", 456, true).host(), "::1");
    EXPECT_EQ(make_sni_spec("[::1]:123", "fallback", 456, false).port(), 123);
    EXPECT_EQ(make_sni_spec("[::1]:123", "fallback", 456, true).port(), 123);
    EXPECT_EQ(make_sni_spec("[::1]", "fallback", 456, false).host(), "::1");
    EXPECT_EQ(make_sni_spec("[::1]", "fallback", 456, true).host(), "::1");
    EXPECT_EQ(make_sni_spec("[::1]", "fallback", 456, false).port(), 80);
    EXPECT_EQ(make_sni_spec("[::1]", "fallback", 456, true).port(), 443);
}

TEST(MakeSNISpecTest, supplied_host_port_is_used_as_fallback) {
    EXPECT_EQ(make_sni_spec("", "fallback", 456, false).host(), "fallback");
    EXPECT_EQ(make_sni_spec("", "fallback", 456, true).host(), "fallback");
    EXPECT_EQ(make_sni_spec("", "fallback", 456, false).port(), 456);
    EXPECT_EQ(make_sni_spec("", "fallback", 456, true).port(), 456);
}

//-----------------------------------------------------------------------------

TEST(MakeHostHeaderValueTest, host_port_is_formatted_as_expected) {
    auto my_spec = SocketSpec::from_host_port("myhost", 123);
    EXPECT_EQ(make_host_header_value(my_spec, false), "myhost:123");
    EXPECT_EQ(make_host_header_value(my_spec, true), "myhost:123");
}

TEST(MakeHostHeaderValueTest, inappropriate_spec_gives_empty_host_value) {
    std::vector<SocketSpec> bad_specs = {
        SocketSpec::invalid,
        SocketSpec::from_port(123),
        SocketSpec::from_name("foo"),
        SocketSpec::from_path("bar")
    };
    for (const auto &spec: bad_specs) {
        EXPECT_EQ(make_host_header_value(spec, false), "");
        EXPECT_EQ(make_host_header_value(spec, true), "");
    }
}

TEST(MakeHostHeaderValueTest, default_port_is_omitted) {
    auto spec1 = SocketSpec::from_host_port("myhost", 80);
    auto spec2 = SocketSpec::from_host_port("myhost", 443);
    EXPECT_EQ(make_host_header_value(spec1, false), "myhost");
    EXPECT_EQ(make_host_header_value(spec1, true), "myhost:80");
    EXPECT_EQ(make_host_header_value(spec2, false), "myhost:443");
    EXPECT_EQ(make_host_header_value(spec2, true), "myhost");
}

TEST(MakeHostHeaderValueTest, ipv6_addresses_are_quoted) {
    auto my_spec = SocketSpec::from_host_port("::1", 123);
    EXPECT_EQ(make_host_header_value(my_spec, false), "[::1]:123");
    EXPECT_EQ(make_host_header_value(my_spec, true), "[::1]:123");
}

//-----------------------------------------------------------------------------

GTEST_MAIN_RUN_ALL_TESTS()