github.com/snyk/vervet/v6@v6.2.4/remove_elements_test.go (about)

     1  package vervet_test
     2  
     3  import (
     4  	"testing"
     5  
     6  	qt "github.com/frankban/quicktest"
     7  
     8  	"github.com/snyk/vervet/v6"
     9  	"github.com/snyk/vervet/v6/testdata"
    10  )
    11  
    12  func TestRemoveElementsExact(t *testing.T) {
    13  	c := qt.New(t)
    14  	doc, err := vervet.NewDocumentFile(testdata.Path("output/2021-08-20~experimental/spec.yaml"))
    15  	c.Assert(err, qt.IsNil)
    16  
    17  	// Establish that the OpenAPI document has these expected features
    18  
    19  	c.Assert(doc.Paths["/examples/hello-world"], qt.Not(qt.IsNil))
    20  	c.Assert(doc.Paths["/examples/hello-world/{id}"], qt.Not(qt.IsNil))
    21  	c.Assert(
    22  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-request-id"],
    23  		qt.Not(qt.IsNil),
    24  	)
    25  	c.Assert(
    26  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-version-served"],
    27  		qt.Not(qt.IsNil),
    28  	)
    29  	c.Assert(doc.Paths["/orgs/{org_id}/projects/{project_id}"].Delete.Parameters, qt.HasLen, 4)
    30  	c.Assert(
    31  		doc.Paths["/orgs/{org_id}/projects/{project_id}"].Delete.Parameters[3].Value.Name,
    32  		qt.Equals,
    33  		"x-private-matter",
    34  	)
    35  
    36  	c.Assert(doc.Paths["/orgs/{orgId}/projects"].Extensions["x-snyk-api-resource"], qt.Not(qt.IsNil))
    37  	c.Assert(doc.Extensions["x-snyk-api-lifecycle"], qt.Not(qt.IsNil))
    38  
    39  	// Remove some of them
    40  
    41  	err = vervet.RemoveElements(doc.T, vervet.ExcludePatterns{
    42  		ExtensionPatterns: []string{"x-snyk-api-releases", "x-snyk-api-resource"},
    43  		HeaderPatterns:    []string{"snyk-request-id", "x-private-matter"},
    44  		Paths:             []string{"/examples/hello-world", "/examples/hello-world/{id}"},
    45  	})
    46  	c.Assert(err, qt.IsNil)
    47  
    48  	// Assert their removal
    49  
    50  	c.Assert(doc.Paths["/examples/hello-world"], qt.IsNil)
    51  	c.Assert(doc.Paths["/examples/hello-world/{id}"], qt.IsNil)
    52  	c.Assert(
    53  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-request-id"],
    54  		qt.IsNil,
    55  	) // now removed
    56  	c.Assert(
    57  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-version-served"],
    58  		qt.Not(qt.IsNil),
    59  	) // still there
    60  	c.Assert(doc.Paths["/orgs/{org_id}/projects/{project_id}"].Delete.Parameters, qt.HasLen, 3) // x-private-matter removed
    61  
    62  	c.Assert(doc.Paths["/orgs/{orgId}/projects"].Extensions["x-snyk-api-resource"], qt.IsNil) // now removed
    63  	c.Assert(doc.Extensions["x-snyk-api-lifecycle"], qt.Not(qt.IsNil))                        // still there
    64  }
    65  
    66  func TestRemoveElementsRegex(t *testing.T) {
    67  	c := qt.New(t)
    68  	doc, err := vervet.NewDocumentFile(testdata.Path("output/2021-08-20~experimental/spec.yaml"))
    69  	c.Assert(err, qt.IsNil)
    70  
    71  	// Establish that the OpenAPI document has these expected features
    72  
    73  	c.Assert(
    74  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-request-id"],
    75  		qt.Not(qt.IsNil),
    76  	)
    77  	c.Assert(
    78  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-version-served"],
    79  		qt.Not(qt.IsNil),
    80  	)
    81  	c.Assert(
    82  		doc.Paths["/orgs/{org_id}/projects/{project_id}"].Delete.Parameters,
    83  		qt.HasLen,
    84  		4,
    85  	)
    86  	c.Assert(
    87  		doc.Paths["/orgs/{org_id}/projects/{project_id}"].Delete.Parameters[3].Value.Name,
    88  		qt.Equals,
    89  		"x-private-matter",
    90  	)
    91  
    92  	c.Assert(doc.Paths["/orgs/{orgId}/projects"].Extensions["x-snyk-api-resource"], qt.Not(qt.IsNil))
    93  	c.Assert(doc.Extensions["x-snyk-api-lifecycle"], qt.Not(qt.IsNil))
    94  
    95  	// Remove some of them
    96  
    97  	err = vervet.RemoveElements(doc.T, vervet.ExcludePatterns{
    98  		ExtensionPatterns: []string{"x-snyk-api-r.*"},
    99  		HeaderPatterns:    []string{"snyk-version-.*", "x-private-.*"},
   100  	})
   101  	c.Assert(err, qt.IsNil)
   102  
   103  	// Assert their removal
   104  
   105  	c.Assert(
   106  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-request-id"],
   107  		qt.Not(qt.IsNil),
   108  	) // still there
   109  	c.Assert(
   110  		doc.Paths["/orgs/{orgId}/projects"].Get.Responses["200"].Value.Headers["snyk-version-served"],
   111  		qt.IsNil,
   112  	) // now removed
   113  	c.Assert(
   114  		doc.Paths["/orgs/{org_id}/projects/{project_id}"].Delete.Parameters,
   115  		qt.HasLen,
   116  		3,
   117  	) // x-private-matter removed
   118  
   119  	c.Assert(doc.Paths["/orgs/{orgId}/projects"].Extensions["x-snyk-api-resource"], qt.IsNil) // now removed
   120  	c.Assert(doc.Extensions["x-snyk-api-lifecycle"], qt.Not(qt.IsNil))                        // still there
   121  }