當前位置: 首頁>>代碼示例>>Golang>>正文


Golang caddy.NewTestController函數代碼示例

本文整理匯總了Golang中github.com/mholt/caddy.NewTestController函數的典型用法代碼示例。如果您正苦於以下問題:Golang NewTestController函數的具體用法?Golang NewTestController怎麽用?Golang NewTestController使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。


在下文中一共展示了NewTestController函數的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。

示例1: TestSetup

func TestSetup(t *testing.T) {
	c := caddy.NewTestController("http", `expvar`)
	err := setup(c)
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}
	mids := httpserver.GetConfig(c).Middleware()
	if len(mids) == 0 {
		t.Fatal("Expected middleware, got 0 instead")
	}

	c = caddy.NewTestController("http", `expvar /d/v`)
	err = setup(c)
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}
	mids = httpserver.GetConfig(c).Middleware()
	if len(mids) == 0 {
		t.Fatal("Expected middleware, got 0 instead")
	}

	handler := mids[0](httpserver.EmptyNext)
	myHandler, ok := handler.(ExpVar)
	if !ok {
		t.Fatalf("Expected handler to be type ExpVar, got: %#v", handler)
	}
	if myHandler.Resource != "/d/v" {
		t.Errorf("Expected /d/v as expvar resource")
	}
	if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) {
		t.Error("'Next' field of handler was not set properly")
	}
}
開發者ID:FiloSottile,項目名稱:caddy,代碼行數:33,代碼來源:setup_test.go

示例2: TestSetupParseWithWrongOptionalParams

func TestSetupParseWithWrongOptionalParams(t *testing.T) {
	// Test protocols wrong params
	params := `tls ` + certFile + ` ` + keyFile + ` {
			protocols ssl tls
		}`
	cfg := new(Config)
	RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
	c := caddy.NewTestController("", params)
	err := setupTLS(c)
	if err == nil {
		t.Errorf("Expected errors, but no error returned")
	}

	// Test ciphers wrong params
	params = `tls ` + certFile + ` ` + keyFile + ` {
			ciphers not-valid-cipher
		}`
	cfg = new(Config)
	RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
	c = caddy.NewTestController("", params)
	err = setupTLS(c)
	if err == nil {
		t.Errorf("Expected errors, but no error returned")
	}

	// Test key_type wrong params
	params = `tls {
			key_type ab123
		}`
	cfg = new(Config)
	RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
	c = caddy.NewTestController("", params)
	err = setupTLS(c)
	if err == nil {
		t.Errorf("Expected errors, but no error returned")
	}

	// Test curves wrong params
	params = `tls {
			curves ab123, cd456, ef789
		}`
	cfg = new(Config)
	RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
	c = caddy.NewTestController("", params)
	err = setupTLS(c)
	if err == nil {
		t.Errorf("Expected errors, but no error returned")
	}
}
開發者ID:Makpoc,項目名稱:caddy,代碼行數:49,代碼來源:setup_test.go

示例3: TestSetup

func TestSetup(t *testing.T) {
	err := setup(caddy.NewTestController(`errors`))
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}
	mids := httpserver.GetConfig("").Middleware()
	if len(mids) == 0 {
		t.Fatal("Expected middlewares, was nil instead")
	}

	handler := mids[0](httpserver.EmptyNext)
	myHandler, ok := handler.(*ErrorHandler)
	if !ok {
		t.Fatalf("Expected handler to be type ErrorHandler, got: %#v", handler)
	}

	if myHandler.LogFile != "" {
		t.Errorf("Expected '%s' as the default LogFile", "")
	}
	if myHandler.LogRoller != nil {
		t.Errorf("Expected LogRoller to be nil, got: %v", *myHandler.LogRoller)
	}
	if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) {
		t.Error("'Next' field of handler was not set properly")
	}

	// Test Startup function -- TODO
	// if len(c.Startup) == 0 {
	// 	t.Fatal("Expected 1 startup function, had 0")
	// }
	// c.Startup[0]()
	// if myHandler.Log == nil {
	// 	t.Error("Expected Log to be non-nil after startup because Debug is not enabled")
	// }
}
開發者ID:anthonybrown,項目名稱:caddy,代碼行數:35,代碼來源:setup_test.go

示例4: TestSetupMaxRequestBody

func TestSetupMaxRequestBody(t *testing.T) {
	cases := []struct {
		input    string
		hasError bool
	}{
		// Format: { <path> <limit> ... }
		{input: "maxrequestbody / 20MB", hasError: false},
		// Format: <limit>
		{input: "maxrequestbody 999KB", hasError: false},
		// Format: { <path> <limit> ... }
		{input: "maxrequestbody { /images 50MB /upload 10MB\n/test 10KB }", hasError: false},

		// Wrong formats
		{input: "maxrequestbody typo { /images 50MB }", hasError: true},
		{input: "maxrequestbody 999MB /home 20KB", hasError: true},
	}
	for caseNum, c := range cases {
		controller := caddy.NewTestController("", c.input)
		err := setupMaxRequestBody(controller)

		if c.hasError && (err == nil) {
			t.Errorf("Expecting error for case %v but none encountered", caseNum)
		}
		if !c.hasError && (err != nil) {
			t.Errorf("Expecting no error for case %v but encountered %v", caseNum, err)
		}
	}
}
開發者ID:ollie314,項目名稱:caddy,代碼行數:28,代碼來源:maxrequestbody_test.go

示例5: TestExtParse

func TestExtParse(t *testing.T) {
	tests := []struct {
		inputExts    string
		shouldErr    bool
		expectedExts []string
	}{
		{`ext .html .htm .php`, false, []string{".html", ".htm", ".php"}},
		{`ext .php .html .xml`, false, []string{".php", ".html", ".xml"}},
		{`ext .txt .php .xml`, false, []string{".txt", ".php", ".xml"}},
	}
	for i, test := range tests {
		actualExts, err := extParse(caddy.NewTestController("http", test.inputExts))

		if err == nil && test.shouldErr {
			t.Errorf("Test %d didn't error, but it should have", i)
		} else if err != nil && !test.shouldErr {
			t.Errorf("Test %d errored, but it shouldn't have; got '%v'", i, err)
		}

		if len(actualExts) != len(test.expectedExts) {
			t.Fatalf("Test %d expected %d rules, but got %d",
				i, len(test.expectedExts), len(actualExts))
		}
		for j, actualExt := range actualExts {
			if actualExt != test.expectedExts[j] {
				t.Fatalf("Test %d expected %dth extension to be  %s  , but got %s",
					i, j, test.expectedExts[j], actualExt)
			}
		}
	}

}
開發者ID:FiloSottile,項目名稱:caddy,代碼行數:32,代碼來源:setup_test.go

示例6: TestSetup

func TestSetup(t *testing.T) {
	c := caddy.NewTestController("http", `fastcgi / 127.0.0.1:9000`)
	err := setup(c)
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}
	mids := httpserver.GetConfig(c).Middleware()
	if len(mids) == 0 {
		t.Fatal("Expected middleware, got 0 instead")
	}

	handler := mids[0](httpserver.EmptyNext)
	myHandler, ok := handler.(Handler)

	if !ok {
		t.Fatalf("Expected handler to be type , got: %#v", handler)
	}

	if myHandler.Rules[0].Path != "/" {
		t.Errorf("Expected / as the Path")
	}
	if myHandler.Rules[0].Address != "127.0.0.1:9000" {
		t.Errorf("Expected 127.0.0.1:9000 as the Address")
	}

}
開發者ID:Makpoc,項目名稱:caddy,代碼行數:26,代碼來源:setup_test.go

示例7: TestSetupParseWithCurves

func TestSetupParseWithCurves(t *testing.T) {
	params := `tls {
            curves p256 p384 p521
        }`
	cfg := new(Config)
	RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
	c := caddy.NewTestController("", params)

	err := setupTLS(c)
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}

	if len(cfg.CurvePreferences) != 3 {
		t.Errorf("Expected 3 curves, got %v", len(cfg.CurvePreferences))
	}

	expectedCurves := []tls.CurveID{tls.CurveP256, tls.CurveP384, tls.CurveP521}

	// Ensure ordering is correct
	for i, actual := range cfg.CurvePreferences {
		if actual != expectedCurves[i] {
			t.Errorf("Expected curve in position %d to be %v, got %v", i, expectedCurves[i], actual)
		}
	}
}
開發者ID:Makpoc,項目名稱:caddy,代碼行數:26,代碼來源:setup_test.go

示例8: TestSetup

func TestSetup(t *testing.T) {
	c := caddy.NewTestController("http", `rewrite /from /to`)
	err := setup(c)
	if err != nil {
		t.Errorf("Expected no errors, but got: %v", err)
	}
	mids := httpserver.GetConfig(c).Middleware()
	if len(mids) == 0 {
		t.Fatal("Expected middleware, had 0 instead")
	}

	handler := mids[0](httpserver.EmptyNext)
	myHandler, ok := handler.(Rewrite)
	if !ok {
		t.Fatalf("Expected handler to be type Rewrite, got: %#v", handler)
	}

	if !httpserver.SameNext(myHandler.Next, httpserver.EmptyNext) {
		t.Error("'Next' field of handler was not set properly")
	}

	if len(myHandler.Rules) != 1 {
		t.Errorf("Expected handler to have %d rule, has %d instead", 1, len(myHandler.Rules))
	}
}
開發者ID:joshix,項目名稱:caddy,代碼行數:25,代碼來源:setup_test.go

示例9: TestConfigLoadPGPKeyHDD

func TestConfigLoadPGPKeyHDD(t *testing.T) {

	tests := []struct {
		config    string
		expectErr error
		keyNil    bool
	}{
		{
			`mailout`,
			nil,
			true,
		},
		{
			`mailout {
				[email protected] testdata/B06469EE_nopw.pub.asc
			}`,
			nil,
			false,
		},
		{
			`mailout {
				[email protected] testdata/B06469EE_nopw.priv.asc
			}`,
			errors.New("Cannot load PGP key for email address \"[email protected]\" with error: PrivateKey found. Not allowed. Please remove it from resouce: \"testdata/B06469EE_nopw.priv.asc\""),
			true,
		},
		{
			`mailout {
				[email protected] xhttp://keybase.io/cyrill/key.asc
			}`,
			errors.New("Cannot load PGP key for email address \"[email protected]\" with error: File \"xhttp://keybase.io/cyrill/key.asc\" not found"),
			true,
		},
	}
	for i, test := range tests {

		c := caddy.NewTestController("http", test.config)
		mc, err := parse(c)
		if err != nil {
			t.Fatal("Index", i, "Error:", err)
		}

		err = mc.loadPGPKeys()
		if test.keyNil && test.expectErr == nil {
			assert.NoError(t, err, "Index %d", i)
			assert.Empty(t, mc.pgpEmailKeyEntities, "Index %d", i)
			continue
		}

		if test.expectErr != nil {
			assert.Empty(t, mc.pgpEmailKeyEntities, "Index %d", i)
			assert.EqualError(t, err, test.expectErr.Error(), "Index %d", i)
			continue
		}
		assert.NoError(t, err, "Index %d", i)
		assert.NotNil(t, mc.pgpEmailKeyEntities, "Index %d", i)
		assert.NotNil(t, mc.pgpEmailKeyEntities["[email protected]"].PrimaryKey, "Index %d", i)
		assert.Nil(t, mc.pgpEmailKeyEntities["[email protected]"].PrivateKey, "Index %d", i)
	}
}
開發者ID:SchumacherFM,項目名稱:mailout,代碼行數:60,代碼來源:config_test.go

示例10: TestSetupParseWithOptionalParams

func TestSetupParseWithOptionalParams(t *testing.T) {
	params := `tls ` + certFile + ` ` + keyFile + ` {
            protocols tls1.0 tls1.2
            ciphers RSA-AES256-CBC-SHA ECDHE-RSA-AES128-GCM-SHA256 ECDHE-ECDSA-AES256-GCM-SHA384
        }`
	cfg := new(Config)
	RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
	c := caddy.NewTestController("", params)

	err := setupTLS(c)
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}

	if cfg.ProtocolMinVersion != tls.VersionTLS10 {
		t.Errorf("Expected 'tls1.0 (0x0301)' as ProtocolMinVersion, got %#v", cfg.ProtocolMinVersion)
	}

	if cfg.ProtocolMaxVersion != tls.VersionTLS12 {
		t.Errorf("Expected 'tls1.2 (0x0303)' as ProtocolMaxVersion, got %#v", cfg.ProtocolMaxVersion)
	}

	if len(cfg.Ciphers)-1 != 3 {
		t.Errorf("Expected 3 Ciphers (not including TLS_FALLBACK_SCSV), got %v", len(cfg.Ciphers)-1)
	}
}
開發者ID:RobbieMcKinstry,項目名稱:caddy,代碼行數:26,代碼來源:setup_test.go

示例11: TestLoadFromEnv

func TestLoadFromEnv(t *testing.T) {

	const testCaddyConfig = `mailout {
	[email protected]		ENV:CADDY_MAILOUT_KEY
	username				ENV:CADDY_MAILOUT_USER
	password				ENV:CADDY_MAILOUT_PW
	host            		ENV:CADDY_MAILOUT_HOST
	port            		1030
}`

	assert.NoError(t, os.Setenv("CADDY_MAILOUT_KEY", "testdata/B06469EE_nopw.pub.asc"))
	assert.NoError(t, os.Setenv("CADDY_MAILOUT_USER", "luser"))
	assert.NoError(t, os.Setenv("CADDY_MAILOUT_PW", "123456"))
	assert.NoError(t, os.Setenv("CADDY_MAILOUT_HOST", "127.0.0.4"))

	wantConfig := newConfig()
	wantConfig.pgpEmailKeys = []string{`[email protected]`, `testdata/B06469EE_nopw.pub.asc`}
	wantConfig.username = "luser"
	wantConfig.password = "123456"
	wantConfig.host = "127.0.0.4"
	wantConfig.portRaw = "1030"
	wantConfig.port = 1030
	wantConfig.messageCount = 0

	c := caddy.NewTestController("http", testCaddyConfig)
	mc, err := parse(c)
	if err != nil {
		t.Fatal(err)
	}
	if err := mc.loadFromEnv(); err != nil {
		t.Fatal(err)
	}
	assert.Exactly(t, wantConfig, mc)
}
開發者ID:SchumacherFM,項目名稱:mailout,代碼行數:34,代碼來源:config_test.go

示例12: TestInternalParse

func TestInternalParse(t *testing.T) {
	tests := []struct {
		inputInternalPaths    string
		shouldErr             bool
		expectedInternalPaths []string
	}{
		{`internal /internal`, false, []string{"/internal"}},

		{`internal /internal1
		  internal /internal2`, false, []string{"/internal1", "/internal2"}},
	}
	for i, test := range tests {
		actualInternalPaths, err := internalParse(caddy.NewTestController("http", test.inputInternalPaths))

		if err == nil && test.shouldErr {
			t.Errorf("Test %d didn't error, but it should have", i)
		} else if err != nil && !test.shouldErr {
			t.Errorf("Test %d errored, but it shouldn't have; got '%v'", i, err)
		}

		if len(actualInternalPaths) != len(test.expectedInternalPaths) {
			t.Fatalf("Test %d expected %d InternalPaths, but got %d",
				i, len(test.expectedInternalPaths), len(actualInternalPaths))
		}
		for j, actualInternalPath := range actualInternalPaths {
			if actualInternalPath != test.expectedInternalPaths[j] {
				t.Fatalf("Test %d expected %dth Internal Path to be  %s  , but got %s",
					i, j, test.expectedInternalPaths[j], actualInternalPath)
			}
		}
	}

}
開發者ID:FiloSottile,項目名稱:caddy,代碼行數:33,代碼來源:setup_test.go

示例13: TestWebSocket

func TestWebSocket(t *testing.T) {
	err := setup(caddy.NewTestController(`websocket cat`))
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}
	mids := httpserver.GetConfig("").Middleware()
	if len(mids) == 0 {
		t.Fatal("Expected middleware, got 0 instead")
	}

	handler := mids[0](httpserver.EmptyNext)
	myHandler, ok := handler.(WebSocket)

	if !ok {
		t.Fatalf("Expected handler to be type WebSocket, got: %#v", handler)
	}

	if myHandler.Sockets[0].Path != "/" {
		t.Errorf("Expected / as the default Path")
	}
	if myHandler.Sockets[0].Command != "cat" {
		t.Errorf("Expected %s as the command", "cat")
	}

}
開發者ID:anthonybrown,項目名稱:caddy,代碼行數:25,代碼來源:setup_test.go

示例14: TestSetupParseIncompleteParams

func TestSetupParseIncompleteParams(t *testing.T) {
	// Using tls without args is an error because it's unnecessary.
	c := caddy.NewTestController("", `tls`)
	err := setupTLS(c)
	if err == nil {
		t.Error("Expected an error, but didn't get one")
	}
}
開發者ID:RobbieMcKinstry,項目名稱:caddy,代碼行數:8,代碼來源:setup_test.go

示例15: TestSetupParseBasic

func TestSetupParseBasic(t *testing.T) {
	cfg := new(Config)
	RegisterConfigGetter("", func(c *caddy.Controller) *Config { return cfg })
	c := caddy.NewTestController("", `tls `+certFile+` `+keyFile+``)

	err := setupTLS(c)
	if err != nil {
		t.Errorf("Expected no errors, got: %v", err)
	}

	// Basic checks
	if !cfg.Manual {
		t.Error("Expected TLS Manual=true, but was false")
	}
	if !cfg.Enabled {
		t.Error("Expected TLS Enabled=true, but was false")
	}

	// Security defaults
	if cfg.ProtocolMinVersion != tls.VersionTLS11 {
		t.Errorf("Expected 'tls1.1 (0x0302)' as ProtocolMinVersion, got %#v", cfg.ProtocolMinVersion)
	}
	if cfg.ProtocolMaxVersion != tls.VersionTLS12 {
		t.Errorf("Expected 'tls1.2 (0x0303)' as ProtocolMaxVersion, got %v", cfg.ProtocolMaxVersion)
	}

	// Cipher checks
	expectedCiphers := []uint16{
		tls.TLS_FALLBACK_SCSV,
		tls.TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
		tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
		tls.TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
		tls.TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,
		tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
		tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
		tls.TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,
		tls.TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,
		tls.TLS_RSA_WITH_AES_256_CBC_SHA,
		tls.TLS_RSA_WITH_AES_128_CBC_SHA,
	}

	// Ensure count is correct (plus one for TLS_FALLBACK_SCSV)
	if len(cfg.Ciphers) != len(expectedCiphers) {
		t.Errorf("Expected %v Ciphers (including TLS_FALLBACK_SCSV), got %v",
			len(expectedCiphers), len(cfg.Ciphers))
	}

	// Ensure ordering is correct
	for i, actual := range cfg.Ciphers {
		if actual != expectedCiphers[i] {
			t.Errorf("Expected cipher in position %d to be %0x, got %0x", i, expectedCiphers[i], actual)
		}
	}

	if !cfg.PreferServerCipherSuites {
		t.Error("Expected PreferServerCipherSuites = true, but was false")
	}
}
開發者ID:RobbieMcKinstry,項目名稱:caddy,代碼行數:58,代碼來源:setup_test.go


注:本文中的github.com/mholt/caddy.NewTestController函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。