package lkgateway import ( "context" "net/http" "net/http/httptest" "strings" "testing" ) func TestOneCBase(t *testing.T) { for in, want := range map[string]string{ "http://1c/middle/": "http://1c/middle", "1c-server/middle": "http://1c-server/middle", "https://1c/mid/odata/standard.odata/$metadata": "https://1c/mid", " http://1c/mid/OData/standard.odata ": "http://1c/mid", } { if got := oneCBase(in); got != want { t.Errorf("oneCBase(%q) = %q, want %q", in, got, want) } } } func TestOneCCheck(t *testing.T) { srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { u, p, _ := r.BasicAuth() switch { case !strings.HasPrefix(r.URL.Path, "/mid/odata/standard.odata/$metadata"): http.NotFound(w, r) case u != "bj" || p != "секрет": w.WriteHeader(http.StatusUnauthorized) default: w.Write([]byte(``)) } })) defer srv.Close() ctx := context.Background() if ok, msg := oneCCheck(ctx, OneCSettings{URL: srv.URL + "/mid", User: "bj", Password: "секрет"}); !ok || !strings.Contains(msg, "объектов в OData — 2") { t.Fatalf("рабочее подключение: %v %q", ok, msg) } if ok, msg := oneCCheck(ctx, OneCSettings{URL: srv.URL + "/mid", User: "bj", Password: "не тот"}); ok || !strings.Contains(msg, "не пустила") { t.Fatalf("неверный пароль: %v %q", ok, msg) } if ok, msg := oneCCheck(ctx, OneCSettings{URL: srv.URL + "/other", User: "bj", Password: "секрет"}); ok || !strings.Contains(msg, "Публиковать стандартный интерфейс OData") { t.Fatalf("без OData: %v %q", ok, msg) } } func TestOneCModuleGate(t *testing.T) { if f := moduleForPath("/admin/setup/onec"); f != "onec-back" { t.Fatalf("раздел 1С без модуля лицензии: %q", f) } if moduleTitle("onec-back") == "onec-back" { t.Fatal("нет названия модуля для лицензии") } }