github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/gopkg.in/mgo.v2/internal/scram/scram_test.go (about) 1 package scram_test 2 3 import ( 4 "crypto/sha1" 5 "testing" 6 7 . "gopkg.in/check.v1" 8 "gopkg.in/mgo.v2/internal/scram" 9 "strings" 10 ) 11 12 var _ = Suite(&S{}) 13 14 func Test(t *testing.T) { TestingT(t) } 15 16 type S struct{} 17 18 var tests = [][]string{{ 19 "U: user pencil", 20 "N: fyko+d2lbbFgONRv9qkxdawL", 21 "C: n,,n=user,r=fyko+d2lbbFgONRv9qkxdawL", 22 "S: r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,s=QSXCR+Q6sek8bf92,i=4096", 23 "C: c=biws,r=fyko+d2lbbFgONRv9qkxdawL3rfcNHYJY1ZVvWVs7j,p=v0X8v3Bz2T0CJGbJQyF0X+HI4Ts=", 24 "S: v=rmF9pqV8S7suAoZWja4dJRkFsKQ=", 25 }, { 26 "U: root fe8c89e308ec08763df36333cbf5d3a2", 27 "N: OTcxNDk5NjM2MzE5", 28 "C: n,,n=root,r=OTcxNDk5NjM2MzE5", 29 "S: r=OTcxNDk5NjM2MzE581Ra3provgG0iDsMkDiIAlrh4532dDLp,s=XRDkVrFC9JuL7/F4tG0acQ==,i=10000", 30 "C: c=biws,r=OTcxNDk5NjM2MzE581Ra3provgG0iDsMkDiIAlrh4532dDLp,p=6y1jp9R7ETyouTXS9fW9k5UHdBc=", 31 "S: v=LBnd9dUJRxdqZiEq91NKP3z/bHA=", 32 }} 33 34 func (s *S) TestExamples(c *C) { 35 for _, steps := range tests { 36 if len(steps) < 2 || len(steps[0]) < 3 || !strings.HasPrefix(steps[0], "U: ") { 37 c.Fatalf("Invalid test: %#v", steps) 38 } 39 auth := strings.Fields(steps[0][3:]) 40 client := scram.NewClient(sha1.New, auth[0], auth[1]) 41 first, done := true, false 42 c.Logf("-----") 43 c.Logf("%s", steps[0]) 44 for _, step := range steps[1:] { 45 c.Logf("%s", step) 46 switch step[:3] { 47 case "N: ": 48 client.SetNonce([]byte(step[3:])) 49 case "C: ": 50 if first { 51 first = false 52 done = client.Step(nil) 53 } 54 c.Assert(done, Equals, false) 55 c.Assert(client.Err(), IsNil) 56 c.Assert(string(client.Out()), Equals, step[3:]) 57 case "S: ": 58 first = false 59 done = client.Step([]byte(step[3:])) 60 default: 61 panic("invalid test line: " + step) 62 } 63 } 64 c.Assert(done, Equals, true) 65 c.Assert(client.Err(), IsNil) 66 } 67 }