github.com/wata727/tflint@v0.12.2-0.20191013070026-96dd0d36f385/rules/rule_test.go.tmpl (about)

     1  package awsrules
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/golang/mock/gomock"
     8  	hcl "github.com/hashicorp/hcl/v2"
     9  	"github.com/wata727/tflint/client"
    10  	"github.com/wata727/tflint/tflint"
    11  )
    12  
    13  func Test_{{ .RuleNameCC }}(t *testing.T) {
    14  	cases := []struct {
    15  		Name     string
    16  		Content  string
    17  		Response service.Response
    18  		Expected tflint.Issues
    19  	}{
    20  		{
    21  			Name: "basic",
    22  			Content: `
    23  resource "null_resource" "null" {
    24  }
    25  `,
    26  			Response: service.Reponse{},
    27  			Expected: tflint.Issues{
    28  				{
    29  					Rule:     New{{ .RuleNameCC }}Rule(),
    30  					Message:  "TODO",
    31  					Range:    hcl.Range{
    32  						Filename: "resource.tf",
    33  						Start:    hcl.Pos{Line: 0, Column: 0},
    34  						End:      hcl.Pos{Line: 0, Column: 0},
    35  					},
    36  				},
    37  			},
    38  		},
    39  	}
    40  
    41  	ctrl := gomock.NewController(t)
    42  	defer ctrl.Finish()
    43  
    44  	for _, tc := range cases {
    45  		runner := tflint.TestRunner(t, map[string]string{"resource.tf": tc.Content})
    46  
    47  		mock := client.NewMockAPI(ctrl)
    48  		mock.EXPECT().CallAPI().Return(tc.Response, nil)
    49  		runner.AwsClient.Service = mock
    50  
    51  		rule := New{{ .RuleNameCC }}Rule()
    52  		if err := rule.Check(runner); err != nil {
    53  			t.Fatalf("Unexpected error occurred: %s", err)
    54  		}
    55  
    56  		tflint.AssertIssues(t, tc.Expected, runner.Issues)
    57  	}
    58  }
    59  
    60  func Test_{{ .RuleNameCC }}_error(t *testing.T) {
    61  	cases := []struct {
    62  		Name     string
    63  		Content  string
    64  		Response error
    65  		Error    tflint.Error
    66  	}{
    67  		{
    68  			Name: "API error",
    69  			Content: `
    70  resource "null_resource" "null" {
    71  }`,
    72  			Response: errors.New("Some error"),
    73  			Error: tflint.Error{
    74  				Code:    tflint.ExternalAPIError,
    75  				Level:   tflint.ErrorLevel,
    76  				Message: "Some error",
    77  			},
    78  		},
    79  	}
    80  
    81  	ctrl := gomock.NewController(t)
    82  	defer ctrl.Finish()
    83  
    84  	for _, tc := range cases {
    85  		runner := tflint.TestRunner(t, map[string]string{"resource.tf": tc.Content})
    86  
    87  		mock := mock.NewMockAPI(ctrl)
    88  		mock.EXPECT().CallAPI().Return(nil, tc.Response)
    89  		runner.AwsClient.Service = mock
    90  
    91  		rule := New{{ .RuleNameCC }}Rule()
    92  		err := rule.Check(runner)
    93  		tflint.AssertAppError(t, tc.Error, err)
    94  	}
    95  }