public CreateBindingResponse CreateBinding(CreateBindingRequest request)
        {
            var logUrl = configuration.GetAppSetting(LogUrlKey);

            Plan plan = GetPlan(request.PlanId);

            Credentials credentials = databaseBuilder.CreateBinding(request.InstanceId, request.BindingId, plan);

            return new CreateBindingResponse {Credentials = credentials, LogUrl = logUrl};
        }
        public CreateBindingResponse CreateBinding(CreateBindingRequest request)
        {
            var logUrl = configuration.GetAppSetting(LogUrlKey);

            Plan plan = GetPlan(request.PlanId);

            Credentials credentials = databaseBuilder.CreateBinding(request.InstanceId, request.BindingId, plan);

            return(new CreateBindingResponse {
                Credentials = credentials, LogUrl = logUrl
            });
        }
            public void ThrowsArgumentExceptionWhenPlanIdDoesNotExist()
            {
                var configuration = Substitute.For<IConfiguration>();
                var databaseBuilder = Substitute.For<IDatabaseBuilder>();
                configuration.GetAppSetting(Arg.Any<string>()).Returns("logurl");
                var service = new MsSqlCloudFoundryService(configuration, databaseBuilder);
                var request = new CreateBindingRequest { PlanId = Guid.NewGuid().ToString(), InstanceId = Guid.NewGuid().ToString(), BindingId = Guid.NewGuid().ToString() };

                var ex = Assert.Throws<ArgumentException>(() => service.CreateBinding(request));

                Assert.Equal(string.Format("The plan id {0} does not exists", request.PlanId), ex.Message);
            }
            public void CallsDatabaseBuilderWithCorrectPlan()
            {
                var configuration = Substitute.For<IConfiguration>();
                var databaseBuilder = Substitute.For<IDatabaseBuilder>();
                configuration.GetAppSetting(Arg.Any<string>()).Returns("logurl");
                var service = new MsSqlCloudFoundryService(configuration, databaseBuilder);
                var request = new CreateBindingRequest { PlanId = MsSqlService.FreePlanId.ToString(), InstanceId = Guid.NewGuid().ToString(), BindingId = Guid.NewGuid().ToString() };

                service.CreateBinding(request);

                databaseBuilder.Received().CreateBinding(Arg.Is<string>(x => x == request.InstanceId), Arg.Is<string>(x => x == request.BindingId), Arg.Is<Plan>(x => x.Id == request.PlanId));
            }
            public void CallsServiceCreateBindingAfterSettingInstanceIdAndBindingIdOnRequest()
            {
                service.CreateBinding(Arg.Any<CreateBindingRequest>()).ReturnsForAnyArgs(new CreateBindingResponse { LogUrl = "http://foo", Credentials = new Credentials() });
                var request = new CreateBindingRequest { ServiceId = serviceId.ToString() };
                var instanceId = Guid.NewGuid().ToString();
                var bindingId = Guid.NewGuid().ToString();

                IHttpActionResult result = controller.Bind(instanceId, bindingId, request);

                Assert.IsType<OkNegotiatedContentResult<CreateBindingResponse>>(result);
                service.Received().CreateBinding(Arg.Is<CreateBindingRequest>(x => x.BindingId == bindingId && x.InstanceId == instanceId));
            }
            public void ReturnsCredentialsForNewBinding()
            {
                var configuration = Substitute.For<IConfiguration>();
                var databaseBuilder = Substitute.For<IDatabaseBuilder>();
                databaseBuilder.CreateBinding(Arg.Any<string>(), Arg.Any<string>(), Arg.Any<Plan>()).ReturnsForAnyArgs(new Credentials());
                configuration.GetAppSetting(Arg.Any<string>()).Returns("logurl");
                var service = new MsSqlCloudFoundryService(configuration, databaseBuilder);
                var request = new CreateBindingRequest { PlanId = MsSqlService.FreePlanId.ToString(), InstanceId = Guid.NewGuid().ToString(), BindingId = Guid.NewGuid().ToString() };

                CreateBindingResponse response = service.CreateBinding(request);

                Assert.NotNull(response.Credentials);
            }