1 package bsl
2
3 import (
4 "context"
5 "testing"
6
7 "edge-infra.dev/pkg/edge/api/bsl/types"
8 bsltypes "edge-infra.dev/pkg/edge/api/bsl/types"
9 "edge-infra.dev/pkg/edge/auth-proxy/session"
10
11 "github.com/stretchr/testify/assert"
12 )
13
14 const (
15 nameNoSlash = "testorg"
16 nameWithSlash = "/testorg/"
17 multiLevelOrg = "/customers/testorg/"
18 multiLevelOrgNoSlash = "customers/testorg"
19 superMultiLevelOrg = "/tests/customers/testorg/"
20 superMultiLevelOrgNoSlash = "tests/customers/testorg"
21 superDuperMultiLevelOrg = "/customers/edge-dev1-retail-b526aa/testorg/"
22 fourLevelOrg = "/customers/edge-dev1-retail-b526aa/testorg/hello/"
23 tenantName = "edge-dev1-retail-b526aa"
24 )
25
26 func TestGetOrgShortName(t *testing.T) {
27 assert.Equal(t, nameNoSlash, GetOrgShortName(nameNoSlash))
28
29 assert.Equal(t, nameNoSlash, GetOrgShortName(nameWithSlash))
30
31 assert.Equal(t, nameNoSlash, GetOrgShortName(multiLevelOrg))
32
33 assert.Equal(t, nameNoSlash, GetOrgShortName(multiLevelOrgNoSlash))
34
35 assert.Equal(t, nameNoSlash, GetOrgShortName(superMultiLevelOrg))
36
37 assert.Equal(t, nameNoSlash, GetOrgShortName(superMultiLevelOrgNoSlash))
38
39 assert.Equal(t, nameNoSlash, GetOrgShortName(superDuperMultiLevelOrg))
40 }
41
42 func TestGetFullAccountName(t *testing.T) {
43 testUser := "testuser"
44 expectedAccount := "acct:testorg@testuser"
45 nameNoSlash := "testorg"
46 assert.Equal(t, expectedAccount, CreateFullAccountName(&types.AuthUser{Organization: nameNoSlash, Username: testUser, AuthProvider: session.BSLAuthProvider.String()}))
47
48 nameWithSlash := "/testorg/"
49 assert.Equal(t, expectedAccount, CreateFullAccountName(&types.AuthUser{Organization: nameWithSlash, Username: testUser, AuthProvider: session.BSLAuthProvider.String()}))
50
51 multiLevelOrg := "/customers/testorg/"
52 assert.Equal(t, expectedAccount, CreateFullAccountName(&types.AuthUser{Organization: multiLevelOrg, Username: testUser, AuthProvider: session.BSLAuthProvider.String()}))
53
54 multiLevelOrgNoSlash := "customers/testorg"
55 assert.Equal(t, expectedAccount, CreateFullAccountName(&types.AuthUser{Organization: multiLevelOrgNoSlash, Username: testUser, AuthProvider: session.BSLAuthProvider.String()}))
56
57 superMultiLevelOrg := "/tests/customers/testorg/"
58 assert.Equal(t, expectedAccount, CreateFullAccountName(&types.AuthUser{Organization: superMultiLevelOrg, Username: testUser, AuthProvider: session.BSLAuthProvider.String()}))
59
60 superMultiLevelOrgNoSlash := "tests/customers/testorg"
61 assert.Equal(t, expectedAccount, CreateFullAccountName(&types.AuthUser{Organization: superMultiLevelOrgNoSlash, Username: testUser, AuthProvider: session.BSLAuthProvider.String()}))
62 }
63
64 func TestWithOrganizationPrefix(t *testing.T) {
65 cfg := bsltypes.BSPConfig{OrganizationPrefix: "edge-stage1-"}
66
67 assert.Equal(t, "edge-stage1-testorg", WithOrganizationPrefix(cfg, nameNoSlash))
68
69 assert.Equal(t, "/edge-stage1-testorg/", WithOrganizationPrefix(cfg, nameWithSlash))
70
71 assert.Equal(t, "/customers/edge-stage1-testorg/", WithOrganizationPrefix(cfg, multiLevelOrg))
72
73 assert.Equal(t, "/tests/customers/edge-stage1-testorg/", WithOrganizationPrefix(cfg, superMultiLevelOrg))
74 }
75
76 func TestWithOrganizationPrefixEmpty(t *testing.T) {
77 cfg := bsltypes.BSPConfig{OrganizationPrefix: ""}
78
79 assert.Equal(t, nameNoSlash, WithOrganizationPrefix(cfg, nameNoSlash))
80
81 assert.Equal(t, nameWithSlash, WithOrganizationPrefix(cfg, nameWithSlash))
82
83 assert.Equal(t, multiLevelOrg, WithOrganizationPrefix(cfg, multiLevelOrg))
84
85 assert.Equal(t, superMultiLevelOrg, WithOrganizationPrefix(cfg, superMultiLevelOrg))
86 }
87
88 func TestTrimOrg(t *testing.T) {
89 tenant := GetTenant("/customers/", superDuperMultiLevelOrg)
90 assert.Equal(t, tenant, tenantName)
91 tenant = GetTenant("/customers/", fourLevelOrg)
92 assert.Equal(t, tenant, tenantName)
93 }
94
95 func TestHTTPClient_WithOrg_EmptyRoot(t *testing.T) {
96 cfg := bsltypes.BSPConfig{Root: ""}
97 cl := NewBSLClient(cfg).request(context.Background())
98
99 assertOrgHeader(t, cl, nameWithSlash)
100 }
101
102 func TestHTTPClient_WithOrg(t *testing.T) {
103 cfg := bsltypes.BSPConfig{Root: "/customers/"}
104 cl := NewBSLClient(cfg).request(context.Background())
105
106 assertOrgHeader(t, cl, multiLevelOrg)
107 }
108
109 func assertOrgHeader(t *testing.T, cl *Request, levelOne string) {
110 cl.SetOrg(nameNoSlash)
111 assert.Equal(t, levelOne, cl.Header.Get(NepOrganization))
112
113 cl.SetOrg(nameWithSlash)
114 assert.Equal(t, levelOne, cl.Header.Get(NepOrganization))
115
116 cl.SetOrg(multiLevelOrg)
117 assert.Equal(t, multiLevelOrg, cl.Header.Get(NepOrganization))
118
119 cl.SetOrg(multiLevelOrgNoSlash)
120 assert.Equal(t, multiLevelOrg, cl.Header.Get(NepOrganization))
121
122 cl.SetOrg(superMultiLevelOrg)
123 assert.Equal(t, superMultiLevelOrg, cl.Header.Get(NepOrganization))
124
125 cl.SetOrg(superMultiLevelOrgNoSlash)
126 assert.Equal(t, superMultiLevelOrg, cl.Header.Get(NepOrganization))
127 }
128
View as plain text