From 9a32d08e9f226bd8739807a5e545dc610e3dcb27 Mon Sep 17 00:00:00 2001 From: Karthic Rao Date: Wed, 17 Jun 2015 11:59:24 +0530 Subject: [PATCH 1/3] test for function exParse under config/setup/ext.go --- config/setup/ext_test.go | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 config/setup/ext_test.go diff --git a/config/setup/ext_test.go b/config/setup/ext_test.go new file mode 100644 index 000000000..876183d38 --- /dev/null +++ b/config/setup/ext_test.go @@ -0,0 +1,74 @@ +package setup + +import ( + "testing" + + "github.com/mholt/caddy/middleware/extensions" +) + +func TestExt(t *testing.T) { + c := newTestController(`ext .html .htm .php`) + + mid, err := Ext(c) + + if err != nil { + t.Errorf("Expected no errors, got: %v", err) + } + + if mid == nil { + t.Fatal("Expected middleware, was nil instead") + } + + handler := mid(emptyNext) + myHandler, ok := handler.(extensions.Ext) + + if !ok { + t.Fatalf("Expected handler to be type Ext, got: %#v", handler) + } + + if myHandler.Extensions[0] != ".html" { + t.Errorf("Expected .html in the list of Extensions") + } + if myHandler.Extensions[1] != ".htm" { + t.Errorf("Expected .htm in the list of Extensions") + } + if myHandler.Extensions[2] != ".php" { + t.Errorf("Expected .php in the list of Extensions") + } + if !sameNext(myHandler.Next, emptyNext) { + t.Error("'Next' field of handler was not set properly") + } + +} + +func TestExtParse(t *testing.T) { + tests := []struct { + inputExts string + shouldErr bool + expectedExts []string + }{ + {`ext .html .htm .php`, false, []string{".html", ".htm", ".php"}}, + } + for i, test := range tests { + c := newTestController(test.inputExts) + actualExts, err := extParse(c) + + 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) + } + } + } + +} From a5a5c0671634bf4e408adda9a38aac14c747feee Mon Sep 17 00:00:00 2001 From: Karthic Rao Date: Wed, 17 Jun 2015 12:48:52 +0530 Subject: [PATCH 2/3] test for function extParse written for config/setup/ext_go --- config/setup/ext_test.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/config/setup/ext_test.go b/config/setup/ext_test.go index d7eb32855..876183d38 100644 --- a/config/setup/ext_test.go +++ b/config/setup/ext_test.go @@ -40,3 +40,35 @@ func TestExt(t *testing.T) { } } + +func TestExtParse(t *testing.T) { + tests := []struct { + inputExts string + shouldErr bool + expectedExts []string + }{ + {`ext .html .htm .php`, false, []string{".html", ".htm", ".php"}}, + } + for i, test := range tests { + c := newTestController(test.inputExts) + actualExts, err := extParse(c) + + 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) + } + } + } + +} From 65f7190030499ec479ffb33a0b8afb110f574e12 Mon Sep 17 00:00:00 2001 From: Karthic Rao Date: Wed, 17 Jun 2015 14:07:26 +0530 Subject: [PATCH 3/3] more cases added to test struct in extParse test --- config/setup/ext_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/setup/ext_test.go b/config/setup/ext_test.go index 876183d38..2054b56ae 100644 --- a/config/setup/ext_test.go +++ b/config/setup/ext_test.go @@ -48,6 +48,8 @@ func TestExtParse(t *testing.T) { 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 { c := newTestController(test.inputExts)