@@ -428,12 +428,22 @@ var _ = Describe("Service Broker API", func() {
428
428
})
429
429
430
430
Describe ("binding lifecycle endpoint" , func () {
431
- makeBindingRequest := func (instanceID string , bindingID string ) * testflight.Response {
431
+ makeBindingRequest := func (instanceID , bindingID string , details * brokerapi. BindDetails ) * testflight.Response {
432
432
response := & testflight.Response {}
433
433
testflight .WithServer (brokerAPI , func (r * testflight.Requester ) {
434
434
path := fmt .Sprintf ("/v2/service_instances/%s/service_bindings/%s" ,
435
435
instanceID , bindingID )
436
- request , _ := http .NewRequest ("PUT" , path , strings .NewReader ("" ))
436
+
437
+ buffer := & bytes.Buffer {}
438
+
439
+ if details != nil {
440
+ json .NewEncoder (buffer ).Encode (details )
441
+ }
442
+
443
+ request , err := http .NewRequest ("PUT" , path , buffer )
444
+
445
+ Expect (err ).NotTo (HaveOccurred ())
446
+
437
447
request .Header .Add ("Content-Type" , "application/json" )
438
448
request .SetBasicAuth ("username" , "password" )
439
449
@@ -443,24 +453,42 @@ var _ = Describe("Service Broker API", func() {
443
453
}
444
454
445
455
Describe ("binding" , func () {
456
+ var details * brokerapi.BindDetails
457
+
458
+ BeforeEach (func () {
459
+ details = & brokerapi.BindDetails {
460
+ AppGUID : "app_guid" ,
461
+ PlanID : "plan_id" ,
462
+ ServiceID : "service_id" ,
463
+ }
464
+ })
465
+
446
466
Context ("when the associated instance exists" , func () {
447
467
It ("calls Bind on the service broker with the instance and binding ids" , func () {
448
468
instanceID := uniqueInstanceID ()
449
469
bindingID := uniqueBindingID ()
450
- makeBindingRequest (instanceID , bindingID )
470
+ makeBindingRequest (instanceID , bindingID , details )
451
471
Expect (fakeServiceBroker .BoundInstanceIDs ).To (ContainElement (instanceID ))
452
472
Expect (fakeServiceBroker .BoundBindingIDs ).To (ContainElement (bindingID ))
473
+ Expect (fakeServiceBroker .BoundBindingDetails ).To (Equal (* details ))
453
474
})
454
475
455
476
It ("returns the credentials returned by Bind" , func () {
456
- response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
477
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
457
478
Expect (response .Body ).To (MatchJSON (fixture ("binding.json" )))
458
479
})
459
480
460
481
It ("returns a 201" , func () {
461
- response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
482
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
462
483
Expect (response .StatusCode ).To (Equal (201 ))
463
484
})
485
+
486
+ Context ("when no bind details are being passed" , func () {
487
+ It ("returns a 422" , func () {
488
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), nil )
489
+ Expect (response .StatusCode ).To (Equal (422 ))
490
+ })
491
+ })
464
492
})
465
493
466
494
Context ("when the associated instance does not exist" , func () {
@@ -471,18 +499,18 @@ var _ = Describe("Service Broker API", func() {
471
499
})
472
500
473
501
It ("returns a 404" , func () {
474
- response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
502
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
475
503
Expect (response .StatusCode ).To (Equal (404 ))
476
504
})
477
505
478
506
It ("returns an error JSON object" , func () {
479
- response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
507
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
480
508
Expect (response .Body ).To (MatchJSON (`{"description":"instance does not exist"}` ))
481
509
})
482
510
483
511
It ("logs an appropriate error" , func () {
484
512
instanceID = uniqueInstanceID ()
485
- makeBindingRequest (instanceID , uniqueBindingID ())
513
+ makeBindingRequest (instanceID , uniqueBindingID (), details )
486
514
Expect (lastLogLine ().Message ).To (ContainSubstring ("bind.instance-missing" ))
487
515
Expect (lastLogLine ().Data ["error" ]).To (ContainSubstring ("instance does not exist" ))
488
516
})
@@ -496,19 +524,19 @@ var _ = Describe("Service Broker API", func() {
496
524
})
497
525
498
526
It ("returns a 409" , func () {
499
- response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
527
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
500
528
Expect (response .StatusCode ).To (Equal (409 ))
501
529
})
502
530
503
531
It ("returns an error JSON object" , func () {
504
- response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
532
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
505
533
Expect (response .Body ).To (MatchJSON (`{"description":"binding already exists"}` ))
506
534
})
507
535
508
536
It ("logs an appropriate error" , func () {
509
537
instanceID = uniqueInstanceID ()
510
- makeBindingRequest (instanceID , uniqueBindingID ())
511
- makeBindingRequest (instanceID , uniqueBindingID ())
538
+ makeBindingRequest (instanceID , uniqueBindingID (), details )
539
+ makeBindingRequest (instanceID , uniqueBindingID (), details )
512
540
513
541
Expect (lastLogLine ().Message ).To (ContainSubstring ("bind.binding-already-exists" ))
514
542
Expect (lastLogLine ().Data ["error" ]).To (ContainSubstring ("binding already exists" ))
@@ -521,13 +549,13 @@ var _ = Describe("Service Broker API", func() {
521
549
})
522
550
523
551
It ("returns a generic 500 error response" , func () {
524
- response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
552
+ response := makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
525
553
Expect (response .StatusCode ).To (Equal (500 ))
526
554
Expect (response .Body ).To (MatchJSON (`{"description":"random error"}` ))
527
555
})
528
556
529
557
It ("logs a detailed error message" , func () {
530
- makeBindingRequest (uniqueInstanceID (), uniqueBindingID ())
558
+ makeBindingRequest (uniqueInstanceID (), uniqueBindingID (), details )
531
559
532
560
Expect (lastLogLine ().Message ).To (ContainSubstring ("bind.unknown-error" ))
533
561
Expect (lastLogLine ().Data ["error" ]).To (ContainSubstring ("random error" ))
@@ -569,7 +597,7 @@ var _ = Describe("Service Broker API", func() {
569
597
570
598
BeforeEach (func () {
571
599
bindingID = uniqueBindingID ()
572
- makeBindingRequest (instanceID , bindingID )
600
+ makeBindingRequest (instanceID , bindingID , & brokerapi. BindDetails {} )
573
601
})
574
602
575
603
It ("returns a 200" , func () {
0 commit comments