1 // Copyright (c) 2012-2016 The Revel Framework Authors, All rights reserved.
2 // Revel Framework source code and usage is governed by a MIT style
3 // license that can be found in the LICENSE file.
9 type FakeController struct{}
11 func (c FakeController) Foo() {}
12 func (c *FakeController) Bar() {}
14 func TestFilterConfiguratorKey(t *testing.T) {
15 conf := FilterController(FakeController{})
16 if conf.key != "FakeController" {
17 t.Errorf("Expected key 'FakeController', was %s", conf.key)
20 conf = FilterController(&FakeController{})
21 if conf.key != "FakeController" {
22 t.Errorf("Expected key 'FakeController', was %s", conf.key)
25 conf = FilterAction(FakeController.Foo)
26 if conf.key != "FakeController.Foo" {
27 t.Errorf("Expected key 'FakeController.Foo', was %s", conf.key)
30 conf = FilterAction((*FakeController).Bar)
31 if conf.key != "FakeController.Bar" {
32 t.Errorf("Expected key 'FakeController.Bar', was %s", conf.key)
36 func TestFilterConfigurator(t *testing.T) {
37 // Filters is global state. Restore it after this test.
38 oldFilters := make([]Filter, len(Filters))
39 copy(oldFilters, Filters)
46 FilterConfiguringFilter,
52 // Do one of each operation.
53 conf := FilterAction(FakeController.Foo).
56 Insert(ValidationFilter, BEFORE, NilFilter).
57 Insert(I18nFilter, AFTER, NilFilter)
65 actual := getOverride("Foo")
66 if len(actual) != len(expected) || !filterSliceEqual(actual, expected) {
67 t.Errorf("Ops failed.\nActual: %#v\nExpect: %#v\nConf:%v", actual, expected, conf)
70 // Action2 should be unchanged
71 if getOverride("Bar") != nil {
72 t.Errorf("Filtering Action should not affect Action2.")
75 // Test that combining overrides on both the Controller and Action works.
76 FilterController(FakeController{}).
86 actual = getOverride("Foo")
87 if len(actual) != len(expected) || !filterSliceEqual(actual, expected) {
88 t.Errorf("Expected PanicFilter added to Foo.\nActual: %#v\nExpect: %#v", actual, expected)
97 actual = getOverride("Bar")
98 if len(actual) != len(expected) || !filterSliceEqual(actual, expected) {
99 t.Errorf("Expected PanicFilter added to Bar.\nActual: %#v\nExpect: %#v", actual, expected)
102 FilterAction((*FakeController).Bar).
112 actual = getOverride("Foo")
113 if len(actual) != len(expected) || !filterSliceEqual(actual, expected) {
114 t.Errorf("Expected no change to Foo.\nActual: %#v\nExpect: %#v", actual, expected)
124 actual = getOverride("Bar")
125 if len(actual) != len(expected) || !filterSliceEqual(actual, expected) {
126 t.Errorf("Expected NilFilter added to Bar.\nActual: %#v\nExpect: %#v", actual, expected)
130 func filterSliceEqual(a, e []Filter) bool {
131 for i, f := range a {
132 if !FilterEq(f, e[i]) {
139 func getOverride(methodName string) []Filter {
140 return getOverrideChain("FakeController", "FakeController."+methodName)