mirror of https://github.com/dexidp/dex.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
2.3 KiB
134 lines
2.3 KiB
package flag |
|
|
|
import ( |
|
"encoding/base64" |
|
"strings" |
|
"testing" |
|
|
|
"github.com/kylelemons/godebug/pretty" |
|
) |
|
|
|
func TestBase64(t *testing.T) { |
|
toB64 := func(b []byte) string { |
|
return base64.StdEncoding.EncodeToString(b) |
|
} |
|
|
|
tests := []struct { |
|
s string |
|
l int |
|
b []byte |
|
wantError bool |
|
}{ |
|
{ |
|
s: toB64([]byte("123456")), |
|
l: 6, |
|
b: []byte("123456"), |
|
}, |
|
{ |
|
s: toB64([]byte("123456")), |
|
l: 5, |
|
wantError: true, |
|
}, |
|
{ |
|
s: "not base64", |
|
l: 5, |
|
wantError: true, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
b64 := NewBase64(tt.l) |
|
err := b64.Set(tt.s) |
|
if tt.wantError { |
|
if err == nil { |
|
t.Errorf("case %d: want err, got nil", i) |
|
} |
|
continue |
|
} |
|
|
|
if err != nil { |
|
t.Errorf("case %d: unexpected error %q", i, err) |
|
} |
|
|
|
if diff := pretty.Compare(tt.b, b64.Bytes()); diff != "" { |
|
t.Errorf("case %d: Compare(want, got) = %v", i, |
|
diff) |
|
} |
|
|
|
if b64.String() != tt.s { |
|
t.Errorf("case %d: want=%q, got=%q", i, b64.String(), tt.s) |
|
} |
|
} |
|
} |
|
|
|
func TestBase64List(t *testing.T) { |
|
// toCSB64 == to comma separated base 64 |
|
toCSB64 := func(bb ...[]byte) string { |
|
ss := []string{} |
|
for _, b := range bb { |
|
ss = append(ss, base64.StdEncoding.EncodeToString(b)) |
|
} |
|
return strings.Join(ss, ",") |
|
} |
|
|
|
b123 := []byte("123456") |
|
b567 := []byte("567890") |
|
bShort := []byte("1234") |
|
|
|
tests := []struct { |
|
s string |
|
l int |
|
bb [][]byte |
|
wantError bool |
|
}{ |
|
{ |
|
s: toCSB64(b123, b567), |
|
l: 6, |
|
bb: [][]byte{b123, b567}, |
|
}, |
|
{ |
|
s: toCSB64(b123), |
|
l: 6, |
|
bb: [][]byte{b123}, |
|
}, |
|
{ |
|
s: "", |
|
l: 6, |
|
bb: [][]byte{}, |
|
}, |
|
{ |
|
s: toCSB64(b123, bShort), |
|
l: 6, |
|
wantError: true, |
|
}, |
|
{ |
|
s: toCSB64(bShort, b123), |
|
l: 6, |
|
wantError: true, |
|
}, |
|
} |
|
|
|
for i, tt := range tests { |
|
b64 := NewBase64List(tt.l) |
|
err := b64.Set(tt.s) |
|
if tt.wantError { |
|
if err == nil { |
|
t.Errorf("case %d: want err, got nil", i) |
|
} |
|
continue |
|
} |
|
|
|
if err != nil { |
|
t.Errorf("case %d: unexpected error %q", i, err) |
|
} |
|
|
|
if diff := pretty.Compare(tt.bb, b64.BytesSlice()); diff != "" { |
|
t.Errorf("case %d: Compare(want, got) = %v", i, |
|
diff) |
|
} |
|
|
|
if b64.String() != tt.s { |
|
t.Errorf("case %d: want=%q, got=%q", i, b64.String(), tt.s) |
|
} |
|
} |
|
}
|
|
|