func (s *ConsumptionSuite) TestServiceAndServiceInstancesByTeamsShouldReturnServiceInstancesByTeam(c *gocheck.C) { srv := service.Service{Name: "mongodb"} srv.Create() defer srv.Delete() si := service.ServiceInstance{Name: "my_nosql", ServiceName: srv.Name, Teams: []string{s.team.Name}} si.Create() defer si.Delete() si2 := service.ServiceInstance{Name: "some_nosql", ServiceName: srv.Name} si2.Create() defer si2.Delete() obtained := serviceAndServiceInstancesByTeams(s.user) expected := []service.ServiceModel{ {Service: "mongodb", Instances: []string{"my_nosql"}}, } c.Assert(obtained, gocheck.DeepEquals, expected) }
func (s *ProvisionSuite) TestServicesHandlerShoudGetAllServicesFromUsersTeam(c *gocheck.C) { srv := service.Service{Name: "mongodb", OwnerTeams: []string{s.team.Name}} srv.Create() defer s.conn.Services().Remove(bson.M{"_id": srv.Name}) si := service.ServiceInstance{Name: "my_nosql", ServiceName: srv.Name, Teams: []string{s.team.Name}} si.Create() defer si.Delete() recorder, request := s.makeRequestToServicesHandler(c) err := ServicesHandler(recorder, request, s.user) c.Assert(err, gocheck.IsNil) b, err := ioutil.ReadAll(recorder.Body) c.Assert(err, gocheck.IsNil) services := make([]service.ServiceModel, 1) err = json.Unmarshal(b, &services) expected := []service.ServiceModel{ {Service: "mongodb", Instances: []string{"my_nosql"}}, } c.Assert(services, gocheck.DeepEquals, expected) }
func (s *ProvisionSuite) TestDeleteHandlerReturns403WhenTheServiceHasInstance(c *gocheck.C) { se := service.Service{Name: "mysql", OwnerTeams: []string{s.team.Name}} err := se.Create() c.Assert(err, gocheck.IsNil) defer s.conn.Services().Remove(bson.M{"_id": se.Name}) instance := service.ServiceInstance{Name: "my-mysql", ServiceName: se.Name} err = instance.Create() c.Assert(err, gocheck.IsNil) defer instance.Delete() request, err := http.NewRequest("DELETE", fmt.Sprintf("/services/%s?:name=%s", se.Name, se.Name), nil) c.Assert(err, gocheck.IsNil) recorder := httptest.NewRecorder() err = DeleteHandler(recorder, request, s.user) c.Assert(err, gocheck.NotNil) e, ok := err.(*errors.Http) c.Assert(ok, gocheck.Equals, true) c.Assert(e.Code, gocheck.Equals, http.StatusForbidden) c.Assert(e, gocheck.ErrorMatches, "^This service cannot be removed because it has instances.\nPlease remove these instances before removing the service.$") }
func (s *ConsumptionSuite) TestServiceInstanceStatusHandler(c *gocheck.C) { ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusNoContent) w.Write([]byte(`Service instance "my_nosql" is up`)) })) defer ts.Close() srv := service.Service{Name: "mongodb", OwnerTeams: []string{s.team.Name}, Endpoint: map[string]string{"production": ts.URL}} err := srv.Create() c.Assert(err, gocheck.IsNil) defer srv.Delete() si := service.ServiceInstance{Name: "my_nosql", ServiceName: srv.Name} err = si.Create() c.Assert(err, gocheck.IsNil) defer si.Delete() recorder, request := makeRequestToStatusHandler("my_nosql", c) err = ServiceInstanceStatusHandler(recorder, request, s.user) c.Assert(err, gocheck.IsNil) b, err := ioutil.ReadAll(recorder.Body) c.Assert(string(b), gocheck.Equals, "Service instance \"my_nosql\" is up") }
func (s *ProvisionSuite) TestServicesAndInstancesByOwnerTeams(c *gocheck.C) { srvc := service.Service{Name: "mysql", OwnerTeams: []string{s.team.Name}} err := srvc.Create() c.Assert(err, gocheck.IsNil) defer srvc.Delete() srvc2 := service.Service{Name: "mongodb"} err = srvc2.Create() c.Assert(err, gocheck.IsNil) defer srvc2.Delete() sInstance := service.ServiceInstance{Name: "foo", ServiceName: "mysql"} err = sInstance.Create() c.Assert(err, gocheck.IsNil) defer sInstance.Delete() sInstance2 := service.ServiceInstance{Name: "bar", ServiceName: "mongodb"} err = sInstance2.Create() defer sInstance2.Delete() results := servicesAndInstancesByOwner(s.user) expected := []service.ServiceModel{ {Service: "mysql", Instances: []string{"foo"}}, } c.Assert(results, gocheck.DeepEquals, expected) }
func (s *ConsumptionSuite) TestServiceInfoHandlerShouldReturnOnlyInstancesOfTheSameTeamOfTheUser(c *gocheck.C) { srv := service.Service{Name: "mongodb", Teams: []string{s.team.Name}} err := srv.Create() c.Assert(err, gocheck.IsNil) defer srv.Delete() si1 := service.ServiceInstance{ Name: "my_nosql", ServiceName: srv.Name, Apps: []string{}, Teams: []string{s.team.Name}, } err = si1.Create() c.Assert(err, gocheck.IsNil) defer si1.Delete() si2 := service.ServiceInstance{ Name: "your_nosql", ServiceName: srv.Name, Apps: []string{"wordpress"}, Teams: []string{}, } err = si2.Create() c.Assert(err, gocheck.IsNil) defer si2.Delete() request, err := http.NewRequest("GET", fmt.Sprintf("/services/%s?:name=%s", "mongodb", "mongodb"), nil) c.Assert(err, gocheck.IsNil) recorder := httptest.NewRecorder() err = ServiceInfoHandler(recorder, request, s.user) c.Assert(err, gocheck.IsNil) body, err := ioutil.ReadAll(recorder.Body) c.Assert(err, gocheck.IsNil) var instances []service.ServiceInstance err = json.Unmarshal(body, &instances) c.Assert(err, gocheck.IsNil) expected := []service.ServiceInstance{si1} c.Assert(instances, gocheck.DeepEquals, expected) }