@@ -309,6 +309,37 @@ func (s *S) TestParseBodyShouldMapBodyJsonToGivenStruct(c *gocheck.C) {
309
309
c .Assert (p .Name , gocheck .Equals , expected )
310
310
}
311
311
312
+ func (s * S ) TestParseBodyShouldMapBodyEmptyJsonToADict (c * gocheck.C ) {
313
+ dict := make (map [string ]interface {})
314
+ b := bufferCloser {bytes .NewBufferString (`{"name": "Test", "isPublic": false, "users": []}` )}
315
+ err := parseBody (b , & dict )
316
+ c .Assert (err , gocheck .IsNil )
317
+ expected := map [string ]interface {}{
318
+ "name" : "Test" ,
319
+ "isPublic" : false ,
320
+ "users" : []interface {}{},
321
+ }
322
+ c .Assert (dict , gocheck .DeepEquals , expected )
323
+ }
324
+
325
+ func (s * S ) TestParseBodyShouldMapBodyJsonAndUpdateMap (c * gocheck.C ) {
326
+ dict := map [string ]interface {}{
327
+ "isPublic" : false ,
328
+ "users" : []string {"merry" },
329
+ "readonlyusers" : []string {"pippin" },
330
+ }
331
+ b := bufferCloser {bytes .NewBufferString (`{"name": "Test", "users": []}` )}
332
+ err := parseBody (b , & dict )
333
+ c .Assert (err , gocheck .IsNil )
334
+ expected := map [string ]interface {}{
335
+ "name" : "Test" ,
336
+ "isPublic" : false ,
337
+ "users" : []interface {}{},
338
+ "readonlyusers" : []string {"pippin" },
339
+ }
340
+ c .Assert (dict , gocheck .DeepEquals , expected )
341
+ }
342
+
312
343
func (s * S ) TestParseBodyShouldReturnErrorWhenJsonIsInvalid (c * gocheck.C ) {
313
344
var p repository.Repository
314
345
b := bufferCloser {bytes .NewBufferString ("{]ja9aW}" )}
@@ -342,67 +373,6 @@ func (s *S) TestNewRepositoryShouldReturnErrorWhenBodyIsEmpty(c *gocheck.C) {
342
373
c .Assert (recorder .Code , gocheck .Equals , 400 )
343
374
}
344
375
345
- func (s * S ) TestSetAccessShouldReturnErrorWhenBodyIsEmpty (c * gocheck.C ) {
346
- b := strings .NewReader ("" )
347
- recorder , request := put ("/repository/set" , b , c )
348
- s .router .ServeHTTP (recorder , request )
349
- c .Assert (recorder .Code , gocheck .Equals , 400 )
350
- }
351
-
352
- func (s * S ) TestSetAccessUpdatesReposDocument (c * gocheck.C ) {
353
- u , err := user .New ("pippin" , map [string ]string {})
354
- conn , err := db .Conn ()
355
- c .Assert (err , gocheck .IsNil )
356
- defer conn .Close ()
357
- defer conn .User ().Remove (bson.M {"_id" : "pippin" })
358
- c .Assert (err , gocheck .IsNil )
359
- r := repository.Repository {Name : "onerepo" , Users : []string {"oneuser" }}
360
- err = conn .Repository ().Insert (& r )
361
- c .Assert (err , gocheck .IsNil )
362
- defer conn .Repository ().Remove (bson.M {"_id" : r .Name })
363
- r2 := repository.Repository {Name : "otherepo" , Users : []string {"otheruser" }}
364
- err = conn .Repository ().Insert (& r2 )
365
- c .Assert (err , gocheck .IsNil )
366
- defer conn .Repository ().Remove (bson.M {"_id" : r2 .Name })
367
- b := bytes .NewBufferString (fmt .Sprintf (`{"repositories": ["%s", "%s"], "users": ["%s"]}` , r .Name , r2 .Name , u .Name ))
368
- rec , req := put ("/repository/set" , b , c )
369
- s .router .ServeHTTP (rec , req )
370
- var repos []repository.Repository
371
- err = conn .Repository ().Find (bson.M {"_id" : bson.M {"$in" : []string {r .Name , r2 .Name }}}).All (& repos )
372
- c .Assert (err , gocheck .IsNil )
373
- c .Assert (rec .Code , gocheck .Equals , 200 )
374
- for _ , repo := range repos {
375
- c .Assert (repo .Users , gocheck .DeepEquals , []string {u .Name })
376
- }
377
- }
378
-
379
- func (s * S ) TestSetReadonlyAccessUpdatesReposDocument (c * gocheck.C ) {
380
- u , err := user .New ("pippin" , map [string ]string {})
381
- conn , err := db .Conn ()
382
- c .Assert (err , gocheck .IsNil )
383
- defer conn .Close ()
384
- defer conn .User ().Remove (bson.M {"_id" : "pippin" })
385
- c .Assert (err , gocheck .IsNil )
386
- r := repository.Repository {Name : "onerepo" , ReadOnlyUsers : []string {"oneuser" }}
387
- err = conn .Repository ().Insert (& r )
388
- c .Assert (err , gocheck .IsNil )
389
- defer conn .Repository ().Remove (bson.M {"_id" : r .Name })
390
- r2 := repository.Repository {Name : "otherepo" , ReadOnlyUsers : []string {"otheruser" }}
391
- err = conn .Repository ().Insert (& r2 )
392
- c .Assert (err , gocheck .IsNil )
393
- defer conn .Repository ().Remove (bson.M {"_id" : r2 .Name })
394
- b := bytes .NewBufferString (fmt .Sprintf (`{"repositories": ["%s", "%s"], "users": ["%s"]}` , r .Name , r2 .Name , u .Name ))
395
- rec , req := put ("/repository/set?readonly=yes" , b , c )
396
- s .router .ServeHTTP (rec , req )
397
- var repos []repository.Repository
398
- err = conn .Repository ().Find (bson.M {"_id" : bson.M {"$in" : []string {r .Name , r2 .Name }}}).All (& repos )
399
- c .Assert (err , gocheck .IsNil )
400
- c .Assert (rec .Code , gocheck .Equals , 200 )
401
- for _ , repo := range repos {
402
- c .Assert (repo .ReadOnlyUsers , gocheck .DeepEquals , []string {u .Name })
403
- }
404
- }
405
-
406
376
func (s * S ) TestGrantAccessUpdatesReposDocument (c * gocheck.C ) {
407
377
u , err := user .New ("pippin" , map [string ]string {})
408
378
conn , err := db .Conn ()
@@ -949,27 +919,96 @@ func (s *S) TestRemoveRepositoryShouldReturnErrorMsgWhenRepoDoesNotExist(c *goch
949
919
c .Assert (string (b ), gocheck .Equals , "Could not remove repository: not found\n " )
950
920
}
951
921
952
- func (s * S ) TestRenameRepository (c * gocheck.C ) {
953
- r ,
err := repository .
New (
"raising" , []
string {
"[email protected] " }, []
string {
"" },
true )
922
+ func (s * S ) TestUpdateRespositoryShouldReturnErrorWhenBodyIsEmpty (c * gocheck.C ) {
923
+ r ,
err := repository .
New (
"something" , []
string {
"[email protected] " }, []
string {
"" },
true )
924
+ c .Assert (err , gocheck .IsNil )
925
+ conn , err := db .Conn ()
954
926
c .Assert (err , gocheck .IsNil )
927
+ defer conn .Close ()
928
+ defer conn .Repository ().RemoveId (r .Name )
929
+ b := strings .NewReader ("" )
930
+ recorder , request := put ("/repository/something" , b , c )
931
+ s .router .ServeHTTP (recorder , request )
932
+ c .Assert (recorder .Code , gocheck .Equals , 400 )
933
+ }
934
+
935
+ func (s * S ) TestUpdateRepositoryData (c * gocheck.C ) {
936
+ r ,
err := repository .
New (
"something" , []
string {
"[email protected] " }, []
string {
"" },
true )
937
+ c .Assert (err , gocheck .IsNil )
938
+ conn , err := db .Conn ()
939
+ c .Assert (err , gocheck .IsNil )
940
+ defer conn .Close ()
941
+ defer conn .Repository ().RemoveId (r .Name )
955
942
url := fmt .Sprintf ("/repository/%s" , r .Name )
956
- body := strings .NewReader (`{"name":"freedom" }` )
943
+ body := strings .NewReader (`{"users": ["b"], "readonlyusers": ["a"], "ispublic": false }` )
957
944
request , err := http .NewRequest ("PUT" , url , body )
958
945
c .Assert (err , gocheck .IsNil )
959
946
recorder := httptest .NewRecorder ()
960
947
s .router .ServeHTTP (recorder , request )
961
948
c .Assert (recorder .Code , gocheck .Equals , http .StatusOK )
962
- _ , err = repository . Get ( "raising" )
963
- c . Assert ( err , gocheck . NotNil )
964
- r .Name = "freedom"
965
- repo , err := repository .Get ("freedom " )
949
+ r . Users = [] string { "b" }
950
+ r . ReadOnlyUsers = [] string { "a" }
951
+ r .IsPublic = false
952
+ repo , err := repository .Get ("something " )
966
953
c .Assert (err , gocheck .IsNil )
967
954
c .Assert (repo , gocheck .DeepEquals , * r )
968
955
}
969
956
957
+ func (s * S ) TestUpdateRepositoryDataPartial (c * gocheck.C ) {
958
+ r , err := repository .New ("something" , []string {"pippin" }, []string {"merry" }, true )
959
+ c .Assert (err , gocheck .IsNil )
960
+ conn , err := db .Conn ()
961
+ c .Assert (err , gocheck .IsNil )
962
+ defer conn .Close ()
963
+ defer conn .Repository ().RemoveId (r .Name )
964
+ url := fmt .Sprintf ("/repository/%s" , r .Name )
965
+ body := strings .NewReader (`{"readonlyusers": ["a", "b"]}` )
966
+ request , err := http .NewRequest ("PUT" , url , body )
967
+ c .Assert (err , gocheck .IsNil )
968
+ recorder := httptest .NewRecorder ()
969
+ s .router .ServeHTTP (recorder , request )
970
+ c .Assert (recorder .Code , gocheck .Equals , http .StatusOK )
971
+ r .Users = []string {"pippin" }
972
+ r .ReadOnlyUsers = []string {"a" , "b" }
973
+ r .IsPublic = true
974
+ repo , err := repository .Get ("something" )
975
+ c .Assert (err , gocheck .IsNil )
976
+ c .Assert (repo , gocheck .DeepEquals , * r )
977
+ }
978
+
979
+ func (s * S ) TestUpdateRepositoryNotFound (c * gocheck.C ) {
980
+ url := "/repository/foo"
981
+ body := strings .NewReader (`{"ispublic":true}` )
982
+ request , err := http .NewRequest ("PUT" , url , body )
983
+ c .Assert (err , gocheck .IsNil )
984
+ recorder := httptest .NewRecorder ()
985
+ s .router .ServeHTTP (recorder , request )
986
+ c .Assert (recorder .Code , gocheck .Equals , http .StatusNotFound )
987
+ }
988
+
989
+ func (s * S ) TestUpdateRepositoryInvalidJSON (c * gocheck.C ) {
990
+ r ,
err := repository .
New (
"bar" , []
string {
"[email protected] " }, []
string {
"" },
true )
991
+ c .Assert (err , gocheck .IsNil )
992
+ conn , err := db .Conn ()
993
+ c .Assert (err , gocheck .IsNil )
994
+ defer conn .Close ()
995
+ defer conn .Repository ().RemoveId (r .Name )
996
+ url := "/repository/bar"
997
+ body := strings .NewReader (`{"name""` )
998
+ request , err := http .NewRequest ("PUT" , url , body )
999
+ c .Assert (err , gocheck .IsNil )
1000
+ recorder := httptest .NewRecorder ()
1001
+ s .router .ServeHTTP (recorder , request )
1002
+ c .Assert (recorder .Code , gocheck .Equals , http .StatusBadRequest )
1003
+ }
1004
+
970
1005
func (s * S ) TestRenameRepositoryWithNamespace (c * gocheck.C ) {
971
1006
r ,
err := repository .
New (
"lift/raising" , []
string {
"[email protected] " }, []
string {},
true )
972
1007
c .Assert (err , gocheck .IsNil )
1008
+ conn , err := db .Conn ()
1009
+ c .Assert (err , gocheck .IsNil )
1010
+ defer conn .Close ()
1011
+ defer conn .Repository ().RemoveId (r .Name )
973
1012
url := fmt .Sprintf ("/repository/%s/" , r .Name )
974
1013
body := strings .NewReader (`{"name":"norestraint/freedom"}` )
975
1014
request , err := http .NewRequest ("PUT" , url , body )
@@ -986,6 +1025,12 @@ func (s *S) TestRenameRepositoryWithNamespace(c *gocheck.C) {
986
1025
}
987
1026
988
1027
func (s * S ) TestRenameRepositoryInvalidJSON (c * gocheck.C ) {
1028
+ r ,
err := repository .
New (
"foo" , []
string {
"[email protected] " }, []
string {},
true )
1029
+ conn , err := db .Conn ()
1030
+ c .Assert (err , gocheck .IsNil )
1031
+ defer conn .Close ()
1032
+ defer conn .Repository ().RemoveId (r .Name )
1033
+ c .Assert (err , gocheck .IsNil )
989
1034
url := "/repository/foo"
990
1035
body := strings .NewReader (`{"name""` )
991
1036
request , err := http .NewRequest ("PUT" , url , body )
0 commit comments