@@ -12,10 +12,10 @@ import (
1212)
1313
1414var expectedMachines = []* Machine {
15- & Machine {"mail.google.com" , "joe@gmail.com" , "somethingSecret" , "gmail" },
16- & Machine {"ray" , "demo" , "mypassword" , "" },
17- & Machine {"weirdlogin" , "uname" , "pass#pass" , "" },
18- & Machine {"" , "anonymous" , "joe@example.com" , "" },
15+ & Machine {Name : "mail.google.com" , Login : "joe@gmail.com" , Password : "somethingSecret" , Account : "gmail" },
16+ & Machine {Name : "ray" , Login : "demo" , Password : "mypassword" , Account : "" },
17+ & Machine {Name : "weirdlogin" , Login : "uname" , Password : "pass#pass" , Account : "" },
18+ & Machine {Name : "" , Login : "anonymous" , Password : "joe@example.com" , Account : "" },
1919}
2020var expectedMacros = Macros {
2121 "allput" : "put src/*" ,
@@ -121,21 +121,45 @@ func TestParseFile(t *testing.T) {
121121}
122122
123123func TestFindMachine (t * testing.T ) {
124- m , err := FindMachine ("examples/good.netrc" , "ray" )
124+ m , def , err := FindMachine ("examples/good.netrc" , "ray" )
125125 if err != nil {
126126 t .Fatal (err )
127127 }
128128 if ! eqMachine (m , expectedMachines [1 ]) {
129129 t .Errorf ("bad machine; expected %v, got %v\n " , expectedMachines [1 ], m )
130130 }
131+ if def {
132+ t .Errorf ("expected def to be false" )
133+ }
131134
132- m , err = FindMachine ("examples/good.netrc" , "non.existent" )
135+ m , def , err = FindMachine ("examples/good.netrc" , "non.existent" )
133136 if err != nil {
134137 t .Fatal (err )
135138 }
136139 if ! eqMachine (m , expectedMachines [3 ]) {
137140 t .Errorf ("bad machine; expected %v, got %v\n " , expectedMachines [3 ], m )
138141 }
142+ if ! def {
143+ t .Errorf ("expected def to be true" )
144+ }
145+ }
146+
147+ func TestNetrcFindMachine (t * testing.T ) {
148+ n , err := ParseFile ("examples/good.netrc" )
149+ if err != nil {
150+ t .Fatal (err )
151+ }
152+
153+ m , def , err := n .FindMachine ("ray" )
154+ if err != nil {
155+ t .Fatal (err )
156+ }
157+ if ! eqMachine (m , expectedMachines [1 ]) {
158+ t .Errorf ("bad machine; expected %v, got %v\n " , expectedMachines [1 ], m )
159+ }
160+ if def {
161+ t .Errorf ("expected def to be false" )
162+ }
139163}
140164
141165func TestMarshalText (t * testing.T ) {
@@ -159,6 +183,112 @@ func TestMarshalText(t *testing.T) {
159183 }
160184}
161185
186+ func TestNewMachine (t * testing.T ) {
187+ n , err := ParseFile ("examples/good.netrc" )
188+ if err != nil {
189+ t .Fatal (err )
190+ }
191+ nameVal := "heroku.com"
192+ loginVal := "dodging-samurai-42@heroku.com"
193+ passwordVal := "octocatdodgeballchampions"
194+ accountVal := "someacct"
195+ m := n .NewMachine (nameVal , loginVal , passwordVal , accountVal )
196+ if m == nil {
197+ t .Fatalf ("NewMachine() returned nil" )
198+ }
199+ // check values
200+ if m .Name != nameVal {
201+ t .Errorf ("m.Name expected %q, got %q" , nameVal , m .Name )
202+ }
203+ if m .Login != loginVal {
204+ t .Errorf ("m.Login expected %q, got %q" , loginVal , m .Login )
205+ }
206+ if m .Password != passwordVal {
207+ t .Errorf ("m.Password expected %q, got %q" , passwordVal , m .Password )
208+ }
209+ if m .Account != accountVal {
210+ t .Errorf ("m.Account expected %q, got %q" , accountVal , m .Account )
211+ }
212+ // check tokens
213+ checkToken (t , "nametoken" , m .nametoken , tkMachine , "\n machine" , nameVal )
214+ checkToken (t , "logintoken" , m .logintoken , tkLogin , "\n \t login" , loginVal )
215+ checkToken (t , "passtoken" , m .passtoken , tkPassword , "\n \t password" , passwordVal )
216+ checkToken (t , "accounttoken" , m .accounttoken , tkAccount , "\n \t account" , accountVal )
217+ }
218+
219+ func checkToken (t * testing.T , name string , tok * token , kind tkType , rawkind , value string ) {
220+ if tok == nil {
221+ t .Errorf ("%s not defined" , name )
222+ return
223+ }
224+ if tok .kind != kind {
225+ t .Errorf ("%s expected kind %d, got %d" , name , kind , tok .kind )
226+ }
227+ if string (tok .rawkind ) != rawkind {
228+ t .Errorf ("%s expected rawkind %q, got %q" , name , rawkind , string (tok .rawkind ))
229+ }
230+ if tok .value != value {
231+ t .Errorf ("%s expected value %q, got %q" , name , value , tok .value )
232+ }
233+ if tok .value != value {
234+ t .Errorf ("%s expected value %q, got %q" , name , value , tok .value )
235+ }
236+ }
237+
238+ type tokenss struct {
239+ kind tkType
240+ macroName string
241+ value string
242+ rawkind []byte
243+ rawvalue []byte
244+ }
245+
246+ func TestUpdatePassword (t * testing.T ) {
247+ n , err := ParseFile ("examples/good.netrc" )
248+ if err != nil {
249+ t .Fatal (err )
250+ }
251+
252+ tests := []struct {
253+ exists bool
254+ name string
255+ newlogin string
256+ newpassword string
257+ }{
258+ {true , "ray" , "joe2@gmail.com" , "supernewpass" },
259+ {false , "heroku.com" , "dodging-samurai-42@heroku.com" , "octocatdodgeballchampions" },
260+ }
261+
262+ for _ , test := range tests {
263+ m , def , err := n .FindMachine (test .name )
264+ if err != nil {
265+ t .Fatal (err )
266+ }
267+ if def == test .exists {
268+ t .Errorf ("expected machine %s to not exist, but it did" , test .name )
269+ } else {
270+ if ! test .exists {
271+ m = n .NewMachine (test .name , test .newlogin , test .newpassword , "" )
272+ }
273+ if m == nil {
274+ t .Errorf ("machine %s was nil" , test .name )
275+ continue
276+ }
277+ m .UpdatePassword (test .newpassword )
278+ m , _ , err := n .FindMachine (test .name )
279+ if err != nil {
280+ t .Fatal (err )
281+ }
282+ if m .Password != test .newpassword {
283+ t .Errorf ("expected new password %q, got %q" , test .newpassword , m .Password )
284+ }
285+ if m .passtoken .value != test .newpassword {
286+ t .Errorf ("expected m.passtoken %q, got %q" , test .newpassword , m .passtoken .value )
287+ }
288+ }
289+ }
290+ }
291+
162292func netrcReader (filename string , t * testing.T ) io.Reader {
163293 b , err := ioutil .ReadFile (filename )
164294 if err != nil {
0 commit comments