add service level tests

pull/8423/head
ys.achinta 5 years ago
parent d2e3ac6c04
commit 0dbd397759

@ -13,11 +13,11 @@ type ListRequest struct {
type ListResponse struct {
Error string `json:"error,omitempty"`
Data []Releases
Releases []Release
}
type Releases struct {
Release string `json:"release"`
type Release struct {
Name string `json:"release"`
Namespace string `json:"namespace"`
}

@ -79,7 +79,7 @@ func (s *ListTestSuite) TestShouldReturnReleasesWhenSuccessfulAPICall() {
assert.Equal(s.T(), 200, resp.StatusCode)
expectedResponse := `{"Data":[{"release":"test-release","namespace":"test-namespace"}]}`
expectedResponse := `{"Releases":[{"release":"test-release","namespace":"test-namespace"}]}`
respBody, _ := ioutil.ReadAll(resp.Body)
assert.Equal(s.T(), expectedResponse, string(respBody))
@ -96,7 +96,7 @@ func (s *ListTestSuite) TestShouldReturnBadRequestErrorIfItHasInvalidCharacter()
assert.Equal(s.T(), 400, resp.StatusCode)
expectedResponse := `{"error":"invalid character '\"' after object key:value pair","Data":null}`
expectedResponse := `{"error":"invalid character '\"' after object key:value pair","Releases":null}`
respBody, _ := ioutil.ReadAll(resp.Body)
assert.Equal(s.T(), expectedResponse, string(respBody))
require.NoError(s.T(), err)

@ -2,6 +2,7 @@ package api
import (
"context"
"errors"
"fmt"
"helm.sh/helm/v3/pkg/action"
@ -77,18 +78,28 @@ func (s Service) installChart(icfg InstallConfig, ch *chart.Chart, vals ChartVal
return result, nil
}
func (s Service) List(releaseStatus string) ([]Releases, error) {
func (s Service) List(releaseStatus string) ([]Release, error) {
listStates := new(action.ListStates)
s.lister.SetState(listStates.FromName(releaseStatus))
state := action.ListAll
if releaseStatus != "" {
state = listStates.FromName(releaseStatus)
}
if state == action.ListUnknown {
return nil, errors.New("invalid release status")
}
s.lister.SetState(state)
s.lister.SetStateMask()
releases, err := s.lister.Run()
if err != nil {
return nil, err
}
var helmReleases []Releases
var helmReleases []Release
for _, eachRes := range releases {
r := Releases{Release: eachRes.Name, Namespace: eachRes.Namespace}
r := Release{Name: eachRes.Name, Namespace: eachRes.Namespace}
helmReleases = append(helmReleases, r)
}

@ -3,6 +3,7 @@ package api_test
import (
"context"
"errors"
"helm.sh/helm/v3/pkg/action"
"helm.sh/helm/v3/pkg/api"
"testing"
@ -55,7 +56,7 @@ func (s *ServiceTestSuite) TestInstallShouldReturnErrorOnInvalidChart() {
s.installer.AssertNotCalled(t, "Run")
}
func (s *ServiceTestSuite) TestInstallShouldReturnErrorOnFailedIntallRun() {
func (s *ServiceTestSuite) TestInstallShouldReturnErrorOnFailedInstallRun() {
chartName := "stable/valid-chart"
cfg := api.InstallConfig{
Name: "some-component",
@ -100,6 +101,77 @@ func (s *ServiceTestSuite) TestInstallShouldReturnResultOnSuccess() {
s.installer.AssertExpectations(t)
}
func (s *ServiceTestSuite) TestListShouldReturnErrorOnFailureOfListRun() {
s.lister.On("SetState", action.ListDeployed)
s.lister.On("SetStateMask")
var releases []*release.Release
s.lister.On("Run").Return(releases, errors.New("cluster issue"))
releaseStatus := "deployed"
res, err := s.svc.List(releaseStatus)
t := s.T()
assert.Error(t, err, "cluster issue")
assert.Nil(t, res)
s.lister.AssertExpectations(t)
}
func (s *ServiceTestSuite) TestListShouldReturnAllReleasesIfNoFilterIsPassed() {
s.lister.On("SetState", action.ListAll)
s.lister.On("SetStateMask")
var releases []*release.Release
releases = append(releases,
&release.Release{Name: "test-release",
Namespace: "test-namespace",
Info: &release.Info{Status: release.StatusDeployed}})
s.lister.On("Run").Return(releases, nil)
releaseStatus := ""
res, err := s.svc.List(releaseStatus)
t := s.T()
assert.NoError(t, err)
require.NotNil(t, res)
var response []api.Release
response = append(response, api.Release{"test-release", "test-namespace"})
assert.Equal(t, len(res), 1)
assert.Equal(t, "test-release", response[0].Name)
assert.Equal(t, "test-namespace", response[0].Namespace)
s.lister.AssertExpectations(t)
}
func (s *ServiceTestSuite) TestListShouldReturnDeployedReleasesIfDeployedIsPassedAsFilter() {
s.lister.On("SetState", action.ListDeployed)
s.lister.On("SetStateMask")
var releases []*release.Release
s.lister.On("Run").Return(releases, nil)
releaseStatus := "deployed"
_, err := s.svc.List(releaseStatus)
t := s.T()
assert.NoError(t, err)
s.lister.AssertExpectations(t)
}
func (s *ServiceTestSuite) TestListShouldReturnErrorIfInvalidStatusIsPassedAsFilter() {
releaseStatus := "invalid"
_, err := s.svc.List(releaseStatus)
t := s.T()
assert.Error(t, err, "invalid release status")
}
func TestServiceSuite(t *testing.T) {
suite.Run(t, new(ServiceTestSuite))
}
Loading…
Cancel
Save