func init() { middlewareConfigReader = config.NewMockReader( config.WithMockValues(config.MockPV{ config.MockPathScopeDefault(store.PathRedirectToBase): 1, config.MockPathScopeStore(1, store.PathSecureInFrontend): true, config.MockPathScopeStore(1, store.PathUnsecureBaseURL): "http://www.corestore.io/", config.MockPathScopeStore(1, store.PathSecureBaseURL): "https://www.corestore.io/", }), ) middlewareCtxStoreService = storemock.NewContextService( scope.Option{}, func(ms *storemock.Storage) { ms.MockStore = func() (*store.Store, error) { return store.NewStore( &store.TableStore{StoreID: 1, Code: dbr.NewNullString("de"), WebsiteID: 1, GroupID: 1, Name: "Germany", SortOrder: 10, IsActive: true}, &store.TableWebsite{WebsiteID: 1, Code: dbr.NewNullString("euro"), Name: dbr.NewNullString("Europe"), SortOrder: 0, DefaultGroupID: 1, IsDefault: dbr.NewNullBool(true)}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "DACH Group", RootCategoryID: 2, DefaultStoreID: 2}, store.SetStoreConfig(middlewareConfigReader), ) } }, ) }
func TestStoreBaseURLandPath(t *testing.T) { s, err := store.NewStore( &store.TableStore{StoreID: 1, Code: dbr.NewNullString("de"), WebsiteID: 1, GroupID: 1, Name: "Germany", SortOrder: 10, IsActive: true}, &store.TableWebsite{WebsiteID: 1, Code: dbr.NewNullString("admin"), Name: dbr.NewNullString("Admin"), SortOrder: 0, DefaultGroupID: 0, IsDefault: dbr.NewNullBool(false)}, &store.TableGroup{GroupID: 1, WebsiteID: 1, Name: "Default", RootCategoryID: 0, DefaultStoreID: 1}, ) assert.NoError(t, err) if s == nil { t.Fail() } tests := []struct { haveR config.Reader haveUT config.URLType haveIsSecure bool wantBaseUrl string wantPath string }{ { config.NewMockReader(config.WithMockString( func(path string) (string, error) { switch path { case config.MockPathScopeDefault(store.PathSecureBaseURL): return "https://corestore.io", nil case config.MockPathScopeDefault(store.PathUnsecureBaseURL): return "http://corestore.io", nil } return "", config.ErrKeyNotFound }, )), config.URLTypeWeb, true, "https://corestore.io/", "/", }, { config.NewMockReader(config.WithMockString( func(path string) (string, error) { switch path { case config.MockPathScopeDefault(store.PathSecureBaseURL): return "https://myplatform.io/customer1", nil case config.MockPathScopeDefault(store.PathUnsecureBaseURL): return "http://myplatform.io/customer1", nil } return "", config.ErrKeyNotFound }, )), config.URLTypeWeb, false, "http://myplatform.io/customer1/", "/customer1/", }, { config.NewMockReader(config.WithMockString( func(path string) (string, error) { switch path { case config.MockPathScopeDefault(store.PathSecureBaseURL): return store.PlaceholderBaseURL, nil case config.MockPathScopeDefault(store.PathUnsecureBaseURL): return store.PlaceholderBaseURL, nil case config.MockPathScopeDefault(config.PathCSBaseURL): return config.CSBaseURL, nil } return "", config.ErrKeyNotFound }, )), config.URLTypeWeb, false, config.CSBaseURL, "/", }, } for i, test := range tests { s.ApplyOptions(store.SetStoreConfig(test.haveR)) assert.NotNil(t, s.Config, "Index %d", i) baseURL, err := s.BaseURL(test.haveUT, test.haveIsSecure) assert.NoError(t, err) assert.EqualValues(t, test.wantBaseUrl, baseURL.String()) assert.EqualValues(t, test.wantPath, s.Path()) _, err = s.BaseURL(config.URLTypeAbsent, false) assert.EqualError(t, err, config.ErrURLCacheCleared.Error()) } }
func TestStoreBaseUrlandPath(t *testing.T) { s := store.NewStore( &store.TableStore{StoreID: 1, Code: dbr.NullString{NullString: sql.NullString{String: "de", Valid: true}}, WebsiteID: 1, GroupID: 1, Name: "Germany", SortOrder: 10, IsActive: true}, &store.TableWebsite{WebsiteID: 1, Code: dbr.NullString{NullString: sql.NullString{String: "admin", Valid: true}}, Name: dbr.NullString{NullString: sql.NullString{String: "Admin", Valid: true}}, SortOrder: 0, DefaultGroupID: 0, IsDefault: dbr.NullBool{NullBool: sql.NullBool{Bool: false, Valid: true}}}, &store.TableGroup{GroupID: 1, WebsiteID: 0, Name: "Default", RootCategoryID: 0, DefaultStoreID: 0}, ) tests := []struct { haveR config.Reader haveUT config.URLType haveIsSecure bool wantBaseUrl string wantPath string }{ { config.NewMockReader(func(path string) string { switch path { case config.ScopeRangeDefault + "/0/" + store.PathSecureBaseURL: return "https://corestore.io" case config.ScopeRangeDefault + "/0/" + store.PathUnsecureBaseURL: return "http://corestore.io" } return "" }, nil), config.URLTypeWeb, true, "https://corestore.io/", "/", }, { config.NewMockReader(func(path string) string { switch path { case config.ScopeRangeDefault + "/0/" + store.PathSecureBaseURL: return "https://myplatform.io/customer1" case config.ScopeRangeDefault + "/0/" + store.PathUnsecureBaseURL: return "http://myplatform.io/customer1" } return "" }, nil), config.URLTypeWeb, false, "http://myplatform.io/customer1/", "/customer1/", }, { config.NewMockReader(func(path string) string { switch path { case config.ScopeRangeDefault + "/0/" + store.PathSecureBaseURL: return store.PlaceholderBaseURL case config.ScopeRangeDefault + "/0/" + store.PathUnsecureBaseURL: return store.PlaceholderBaseURL case config.ScopeRangeDefault + "/0/" + config.PathCSBaseURL: return config.CSBaseURL } return "" }, nil), config.URLTypeWeb, false, config.CSBaseURL, "/", }, } for _, test := range tests { s.ApplyOptions(store.SetStoreConfig(test.haveR)) assert.EqualValues(t, test.wantBaseUrl, s.BaseURL(test.haveUT, test.haveIsSecure)) assert.EqualValues(t, test.wantPath, s.Path()) } }