package fs import ( "testing" "github.com/spf13/pflag" "github.com/stretchr/testify/assert" ) // Check it satisfies the interface var _ pflag.Value = (*DumpFlags)(nil) func TestDumpFlagsString(t *testing.T) { assert.Equal(t, "", DumpFlags(0).String()) assert.Equal(t, "headers", (DumpHeaders).String()) assert.Equal(t, "headers,bodies", (DumpHeaders | DumpBodies).String()) assert.Equal(t, "headers,bodies,requests,responses,auth,filters", (DumpHeaders | DumpBodies | DumpRequests | DumpResponses | DumpAuth | DumpFilters).String()) assert.Equal(t, "headers,Unknown-0x8000", (DumpHeaders | DumpFlags(0x8000)).String()) } func TestDumpFlagsSet(t *testing.T) { for _, test := range []struct { in string want DumpFlags wantErr string }{ {"", DumpFlags(0), ""}, {"bodies", DumpBodies, ""}, {"bodies,headers,auth", DumpBodies | DumpHeaders | DumpAuth, ""}, {"bodies,headers,auth", DumpBodies | DumpHeaders | DumpAuth, ""}, {"headers,bodies,requests,responses,auth,filters", DumpHeaders | DumpBodies | DumpRequests | DumpResponses | DumpAuth | DumpFilters, ""}, {"headers,bodies,unknown,auth", 0, "Unknown dump flag \"unknown\""}, } { f := DumpFlags(-1) initial := f err := f.Set(test.in) if err != nil { if test.wantErr == "" { t.Errorf("Got an error when not expecting one on %q: %v", test.in, err) } else { assert.Contains(t, err.Error(), test.wantErr) } assert.Equal(t, initial, f, test.want) } else { if test.wantErr != "" { t.Errorf("Got no error when expecting one on %q", test.in) } else { assert.Equal(t, test.want, f) } } } } func TestDumpFlagsType(t *testing.T) { f := DumpFlags(0) assert.Equal(t, "string", f.Type()) }