Skip to content

Commit eb8d5c1

Browse files
authored
chore(RAIN-93468): Remove use of the queryLanguage query property (#1638)
* chore(RAIN-93468): Remove use of the queryLanguage query property * fix(RAIN-93468): Fix test expectations
1 parent 3cfc4ca commit eb8d5c1

File tree

13 files changed

+27
-200
lines changed

13 files changed

+27
-200
lines changed

api/lql.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,8 @@ import (
2929
)
3030

3131
type NewQuery struct {
32-
QueryID string `json:"queryId" yaml:"queryId"`
33-
QueryLanguage *string `json:"queryLanguage,omitempty" yaml:"queryLanguage,omitempty"`
34-
QueryText string `json:"queryText" yaml:"queryText"`
32+
QueryID string `json:"queryId" yaml:"queryId"`
33+
QueryText string `json:"queryText" yaml:"queryText"`
3534
}
3635

3736
func ParseNewQuery(s string) (NewQuery, error) {
@@ -50,7 +49,6 @@ func ParseNewQuery(s string) (NewQuery, error) {
5049
if err == nil && !reflect.DeepEqual(query, NewQuery{}) { // empty string unmarshals w/o error
5150
return query, nil
5251
}
53-
5452
// invalid query
5553
return query, errors.New("unable to parse query")
5654
}
@@ -61,7 +59,6 @@ type UpdateQuery struct {
6159

6260
type Query struct {
6361
QueryID string `json:"queryId" yaml:"queryId"`
64-
QueryLanguage *string `json:"queryLanguage,omitempty" yaml:"queryLanguage,omitempty"`
6562
QueryText string `json:"queryText" yaml:"queryText"`
6663
Owner string `json:"owner"`
6764
LastUpdateTime string `json:"lastUpdateTime"`
@@ -134,12 +131,3 @@ func (svc *QueryService) Get(id string) (
134131
)
135132
return
136133
}
137-
138-
func (svc *QueryService) RegoQueryEnabled() bool {
139-
response, err := svc.client.V2.FeatureFlags.GetFeatureFlagsMatchingPrefix("PUBLIC.lpp_rego_enabled")
140-
if err != nil {
141-
return false
142-
}
143-
144-
return len(response.Data.Flags) >= 1
145-
}

api/lql_test.go

Lines changed: 5 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,13 @@ import (
2222
"encoding/json"
2323
"fmt"
2424
"net/http"
25-
"strings"
2625
"testing"
2726

2827
"github.com/pkg/errors"
2928
"github.com/stretchr/testify/assert"
3029

3130
"github.com/lacework/go-sdk/api"
3231
"github.com/lacework/go-sdk/internal/lacework"
33-
"github.com/lacework/go-sdk/internal/pointer"
3432
)
3533

3634
var (
@@ -48,23 +46,6 @@ var (
4846
queryId: %s
4947
queryText: %s`, newQuery.QueryID, newQuery.QueryText)
5048
lqlErrorReponse = `{ "message": "This is an error message" }`
51-
52-
regoQueryID = "my_rego"
53-
newRegoQueryText = "package clitest\n" +
54-
"import future.keywords\n" +
55-
"import data.lacework\n" +
56-
"source := lacework.aws.cfg.list(\"s3\", \"list-buckets\")\n" +
57-
"assess := assessment.violation(input, \"just because\")"
58-
newRegoQuery = api.NewQuery{
59-
QueryID: regoQueryID,
60-
QueryLanguage: pointer.Of("Rego"),
61-
QueryText: newRegoQueryText,
62-
}
63-
newRegoQueryJSON = fmt.Sprintf(`{
64-
"queryId": "%s",
65-
"queryLanguage": "Rego",
66-
"queryText": %#v
67-
}`, queryID, newRegoQueryText)
6849
)
6950

7051
func mockQueryDataResponse(data string) string {
@@ -148,8 +129,8 @@ func TestQueryCreateMethod(t *testing.T) {
148129
assert.Nil(t, err)
149130
}
150131

151-
func createQueryOKTestHelper(t *testing.T, expectedResponseData string, testQuery api.NewQuery) {
152-
mockResponse := mockQueryDataResponse(expectedResponseData)
132+
func TestQueryCreateOK(t *testing.T) {
133+
mockResponse := mockQueryDataResponse(newQueryJSON)
153134

154135
fakeServer := lacework.MockServer()
155136
fakeServer.MockAPI(
@@ -170,26 +151,10 @@ func createQueryOKTestHelper(t *testing.T, expectedResponseData string, testQuer
170151
_ = json.Unmarshal([]byte(mockResponse), &createExpected)
171152

172153
var createActual api.QueryResponse
173-
createActual, err = c.V2.Query.Create(testQuery)
154+
createActual, err = c.V2.Query.Create(newQuery)
174155
assert.Nil(t, err)
175156

176157
assert.Equal(t, createExpected, createActual)
177-
178-
if strings.Contains(expectedResponseData, "queryLanguage") {
179-
assert.Equal(t, "Rego", *createActual.Data.QueryLanguage)
180-
} else {
181-
assert.Nil(t, createActual.Data.QueryLanguage)
182-
}
183-
}
184-
185-
func TestLQLQueryCreateOK(t *testing.T) {
186-
// queryLanguage is not available
187-
createQueryOKTestHelper(t, newQueryJSON, newQuery)
188-
}
189-
190-
func TestRegoQueryCreateOK(t *testing.T) {
191-
// queryLanguage is available
192-
createQueryOKTestHelper(t, newRegoQueryJSON, newRegoQuery)
193158
}
194159

195160
func TestQueryCreateError(t *testing.T) {
@@ -233,8 +198,8 @@ func TestQueryListMethod(t *testing.T) {
233198
assert.Nil(t, err)
234199
}
235200

236-
func getQueryByIDTestHelper(t *testing.T, expectedResponseData string, queryId string) {
237-
mockResponse := mockQueryDataResponse(expectedResponseData)
201+
func TestQueryGetQueryByIDOK(t *testing.T) {
202+
mockResponse := mockQueryDataResponse(newQueryJSON)
238203

239204
fakeServer := lacework.MockServer()
240205
fakeServer.MockAPI(
@@ -260,22 +225,6 @@ func getQueryByIDTestHelper(t *testing.T, expectedResponseData string, queryId s
260225
assert.Nil(t, err)
261226

262227
assert.Equal(t, getExpected, getActual)
263-
264-
if strings.Contains(expectedResponseData, "queryLanguage") {
265-
assert.Equal(t, "Rego", *getActual.Data.QueryLanguage)
266-
} else {
267-
assert.Nil(t, getActual.Data.QueryLanguage)
268-
}
269-
}
270-
271-
func TestLQLQueryGetQueryByIDOK(t *testing.T) {
272-
// queryLanguage is not available
273-
getQueryByIDTestHelper(t, newQueryJSON, queryID)
274-
}
275-
276-
func TestRegoQueryGetQueryByIDOK(t *testing.T) {
277-
// queryLanguage is available
278-
getQueryByIDTestHelper(t, newRegoQueryJSON, regoQueryID)
279228
}
280229

281230
func TestQueryGetNotFound(t *testing.T) {

api/lql_validate.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@
1919
package api
2020

2121
type ValidateQuery struct {
22-
QueryText string `json:"queryText"`
23-
QueryLanguage *string `json:"queryLanguage,omitempty" yaml:"queryLanguage,omitempty"`
22+
QueryText string `json:"queryText"`
2423
}
2524

2625
func (svc *QueryService) Validate(vq ValidateQuery) (

api/lql_validate_test.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828

2929
"github.com/lacework/go-sdk/api"
3030
"github.com/lacework/go-sdk/internal/lacework"
31-
"github.com/lacework/go-sdk/internal/pointer"
3231
)
3332

3433
var (
@@ -89,14 +88,6 @@ func TestLQLQueryValidateOK(t *testing.T) {
8988
testQueryValidateOKHelper(t, newQueryJSON, validateQuery)
9089
}
9190

92-
func TestRegoQueryValidateOK(t *testing.T) {
93-
validateRegoQuery := api.ValidateQuery{
94-
QueryText: newRegoQueryText,
95-
QueryLanguage: pointer.Of("Rego"),
96-
}
97-
testQueryValidateOKHelper(t, newRegoQueryJSON, validateRegoQuery)
98-
}
99-
10091
func TestQueryValidateError(t *testing.T) {
10192
fakeServer := lacework.MockServer()
10293
fakeServer.MockAPI(

api/policy.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ import (
2525
"reflect"
2626
"time"
2727

28+
"github.com/lacework/go-sdk/internal/array"
2829
"github.com/pkg/errors"
2930
"gopkg.in/yaml.v3"
30-
31-
"github.com/lacework/go-sdk/internal/array"
3231
)
3332

3433
// PolicyService is a service that interacts with the Custom Policies
@@ -177,7 +176,6 @@ type Policy struct {
177176
PolicyID string `json:"policyId" yaml:"policyId"`
178177
PolicyType string `json:"policyType" yaml:"-"`
179178
QueryID string `json:"queryId" yaml:"queryId"`
180-
QueryLanguage *string `json:"queryLanguage,omitempty" yaml:"queryLanguage,omitempty"`
181179
Title string `json:"title" yaml:"title"`
182180
Enabled bool `json:"enabled" yaml:"enabled"`
183181
Description string `json:"description" yaml:"description"`

api/policy_test.go

Lines changed: 6 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@ import (
2525
"testing"
2626

2727
"github.com/aws/smithy-go/ptr"
28-
"github.com/stretchr/testify/assert"
29-
3028
"github.com/lacework/go-sdk/lwseverity"
29+
"github.com/stretchr/testify/assert"
3130

3231
"github.com/lacework/go-sdk/api"
3332
"github.com/lacework/go-sdk/internal/lacework"
@@ -122,38 +121,6 @@ var (
122121
]
123122
}
124123
`
125-
126-
regoPolicyId = "rego-policy-1"
127-
regoPolicy = api.NewPolicy{
128-
PolicyID: regoPolicyId,
129-
PolicyType: "Violation",
130-
QueryID: "MyRegoQuery",
131-
Title: "My Rego Policy Title",
132-
Enabled: false,
133-
Description: "My Policy Description",
134-
Remediation: "Check yourself...",
135-
Severity: "high",
136-
EvalFrequency: "Hourly",
137-
Limit: 1000,
138-
AlertEnabled: false,
139-
AlertProfile: "LW_CloudTrail_Alerts",
140-
}
141-
regoPolicyCreateData = fmt.Sprintf(`{
142-
"policyId": "%s",
143-
"policyType": "%s",
144-
"queryId": "%s",
145-
"title": "%s",
146-
"enabled": %v,
147-
"description": "%s",
148-
"remediation": "%s",
149-
"severity": "%s",
150-
"evalFrequency": "%s",
151-
"limit": %d,
152-
"alertEnabled": %v,
153-
"alertProfile": "%s"
154-
}`, regoPolicy.PolicyID, regoPolicy.PolicyType, regoPolicy.QueryID, regoPolicy.Title,
155-
regoPolicy.Enabled, regoPolicy.Description, regoPolicy.Remediation, regoPolicy.Severity,
156-
regoPolicy.EvalFrequency, regoPolicy.Limit, regoPolicy.AlertEnabled, regoPolicy.AlertProfile)
157124
)
158125

159126
func mockPolicyDataResponse(data string) string {
@@ -189,7 +156,7 @@ func TestPolicyCreateMethod(t *testing.T) {
189156
assert.Nil(t, err)
190157
}
191158

192-
func TestLqlPolicyCreateOK(t *testing.T) {
159+
func TestPolicyCreateOK(t *testing.T) {
193160
mockResponse := mockPolicyDataResponse(policyCreateData)
194161

195162
fakeServer := lacework.MockServer()
@@ -256,12 +223,12 @@ func TestPolicyGetMethod(t *testing.T) {
256223
assert.Nil(t, err)
257224
}
258225

259-
func testPolicyGetOKHelper(t *testing.T, expectedPolicyData string, testPolicyId string) {
260-
mockResponse := mockPolicyDataResponse(expectedPolicyData)
226+
func TestPolicyGetOK(t *testing.T) {
227+
mockResponse := mockPolicyDataResponse(policyCreateData)
261228

262229
fakeServer := lacework.MockServer()
263230
fakeServer.MockAPI(
264-
fmt.Sprintf("%s/%s", policyURI, testPolicyId),
231+
fmt.Sprintf("%s/%s", policyURI, policyID),
265232
func(w http.ResponseWriter, r *http.Request) {
266233
fmt.Fprint(w, mockResponse)
267234
},
@@ -278,20 +245,12 @@ func testPolicyGetOKHelper(t *testing.T, expectedPolicyData string, testPolicyId
278245
_ = json.Unmarshal([]byte(mockResponse), &getExpected)
279246

280247
var getActual api.PolicyResponse
281-
getActual, err = c.V2.Policy.Get(testPolicyId)
248+
getActual, err = c.V2.Policy.Get(policyID)
282249
assert.Nil(t, err)
283250

284251
assert.Equal(t, getExpected, getActual)
285252
}
286253

287-
func TestLQLPolicyGetOK(t *testing.T) {
288-
testPolicyGetOKHelper(t, policyCreateData, policyID)
289-
}
290-
291-
func TestRegoPolicyGetOK(t *testing.T) {
292-
testPolicyGetOKHelper(t, regoPolicyCreateData, regoPolicyId)
293-
}
294-
295254
func TestPolicyGetNotFound(t *testing.T) {
296255
fakeServer := lacework.MockServer()
297256
fakeServer.MockAPI(

cli/cmd/lql.go

Lines changed: 5 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -297,26 +297,13 @@ func inputQueryFromURL(url string) (query string, err error) {
297297
}
298298

299299
func inputQueryFromEditor(action string) (query string, err error) {
300-
language := "LQL"
301-
regoQueryEnabled := os.Getenv("LW_CLI_INTEGRATION_MODE") != "" || cli.LwApi.V2.Query.RegoQueryEnabled()
302-
if action == "create" && !queryCmdState.EmptyTemplate && regoQueryEnabled {
303-
languageSelect := &survey.Select{
304-
Message: "Choose query language: ",
305-
Options: []string{
306-
"LQL",
307-
"Rego",
308-
},
309-
}
310-
err = survey.AskOne(languageSelect, &language)
311-
if err != nil {
312-
return
313-
}
300+
prompt := &survey.Editor{
301+
Message: fmt.Sprintf("Type a query to %s", action),
302+
FileName: "query*.yaml",
314303
}
315304

316-
var queryTextTemplate string
317-
switch language {
318-
case "LQL":
319-
queryTextTemplate = `queryId: YourQueryID
305+
if (action == "create" || action == "run") && !queryCmdState.EmptyTemplate {
306+
prompt.Default = `queryId: YourQueryID
320307
queryText: |-
321308
{
322309
source {
@@ -329,27 +316,6 @@ queryText: |-
329316
--- List fields to return from the selected source. Use 'lacework query describe <datasource>'.
330317
}
331318
}`
332-
case "Rego":
333-
queryTextTemplate = `queryId: YourQueryID
334-
queryLanguage: Rego
335-
queryText: |-
336-
package your.package
337-
import your.dependency
338-
import data.lacework
339-
source := lacework.your.data.source.provider.function("servce", "apiKey")
340-
assess := your.assess.rule`
341-
default:
342-
err = errors.New("Invalid query language: " + language)
343-
return
344-
}
345-
346-
prompt := &survey.Editor{
347-
Message: fmt.Sprintf("Type a query to %s", action),
348-
FileName: "query*.yaml",
349-
}
350-
351-
if (action == "create" || action == "run") && !queryCmdState.EmptyTemplate {
352-
prompt.Default = queryTextTemplate
353319
prompt.HideDefault = true
354320
prompt.AppendDefault = true
355321
} else if (action == "create" || action == "run") && queryCmdState.EmptyTemplate {

cli/cmd/lql_show.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,8 @@ func showQuery(_ *cobra.Command, args []string) error {
7171

7272
if cli.YAMLOutput() {
7373
return cli.OutputYAML(&api.NewQuery{
74-
QueryID: queryResponse.Data.QueryID,
75-
QueryLanguage: queryResponse.Data.QueryLanguage,
76-
QueryText: queryResponse.Data.QueryText,
74+
QueryID: queryResponse.Data.QueryID,
75+
QueryText: queryResponse.Data.QueryText,
7776
})
7877
}
7978

cli/cmd/lql_validate.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ func validateQuery(cmd *cobra.Command, args []string) error {
8989

9090
func validateQueryAndOutput(nq api.NewQuery) error {
9191
vq := api.ValidateQuery{
92-
QueryText: nq.QueryText,
93-
QueryLanguage: nq.QueryLanguage,
92+
QueryText: nq.QueryText,
9493
}
9594

9695
cli.StartProgress(" Validating query...")

0 commit comments

Comments
 (0)