// findStreamForMapping retrieves an ImageStream whose DockerImageRepository matches dockerRepo. func (s *REST) findStreamForMapping(ctx kapi.Context, mapping *api.ImageStreamMapping) (*api.ImageStream, error) { if len(mapping.Name) > 0 { return s.imageStreamRegistry.GetImageStream(ctx, mapping.Name) } if len(mapping.DockerImageRepository) != 0 { list, err := s.imageStreamRegistry.ListImageStreams(ctx, labels.Everything()) if err != nil { return nil, err } for i := range list.Items { if mapping.DockerImageRepository == list.Items[i].Spec.DockerImageRepository { return &list.Items[i], nil } } return nil, errors.NewInvalid("imageStreamMapping", "", fielderrors.ValidationErrorList{ fielderrors.NewFieldNotFound("dockerImageStream", mapping.DockerImageRepository), }) } return nil, errors.NewNotFound("ImageStream", "") }
func TestNewInvalid(t *testing.T) { testCases := []struct { Err *fielderrors.ValidationError Details *api.StatusDetails }{ { fielderrors.NewFieldDuplicate("field[0].name", "bar"), &api.StatusDetails{ Kind: "kind", ID: "name", Causes: []api.StatusCause{{ Type: api.CauseTypeFieldValueDuplicate, Field: "field[0].name", }}, }, }, { fielderrors.NewFieldInvalid("field[0].name", "bar", "detail"), &api.StatusDetails{ Kind: "kind", ID: "name", Causes: []api.StatusCause{{ Type: api.CauseTypeFieldValueInvalid, Field: "field[0].name", }}, }, }, { fielderrors.NewFieldNotFound("field[0].name", "bar"), &api.StatusDetails{ Kind: "kind", ID: "name", Causes: []api.StatusCause{{ Type: api.CauseTypeFieldValueNotFound, Field: "field[0].name", }}, }, }, { fielderrors.NewFieldNotSupported("field[0].name", "bar"), &api.StatusDetails{ Kind: "kind", ID: "name", Causes: []api.StatusCause{{ Type: api.CauseTypeFieldValueNotSupported, Field: "field[0].name", }}, }, }, { fielderrors.NewFieldRequired("field[0].name"), &api.StatusDetails{ Kind: "kind", ID: "name", Causes: []api.StatusCause{{ Type: api.CauseTypeFieldValueRequired, Field: "field[0].name", }}, }, }, } for i, testCase := range testCases { vErr, expected := testCase.Err, testCase.Details expected.Causes[0].Message = vErr.Error() err := NewInvalid("kind", "name", fielderrors.ValidationErrorList{vErr}) status := err.(*StatusError).ErrStatus if status.Code != 422 || status.Reason != api.StatusReasonInvalid { t.Errorf("%d: unexpected status: %#v", i, status) } if !reflect.DeepEqual(expected, status.Details) { t.Errorf("%d: expected %#v, got %#v", i, expected, status.Details) } } }