...

Source file src/edge-infra.dev/pkg/edge/bsl/utils_test.go

Documentation: edge-infra.dev/pkg/edge/bsl

     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