@@ -22,13 +22,15 @@ import (
2222 "encoding/json"
2323 "fmt"
2424 "net/http"
25+ "strings"
2526 "testing"
2627
2728 "github.com/pkg/errors"
2829 "github.com/stretchr/testify/assert"
2930
3031 "github.com/lacework/go-sdk/api"
3132 "github.com/lacework/go-sdk/internal/lacework"
33+ "github.com/lacework/go-sdk/internal/pointer"
3234)
3335
3436var (
4648queryId: %s
4749queryText: %s` , newQuery .QueryID , newQuery .QueryText )
4850 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 )
4968)
5069
5170func mockQueryDataResponse (data string ) string {
@@ -129,8 +148,8 @@ func TestQueryCreateMethod(t *testing.T) {
129148 assert .Nil (t , err )
130149}
131150
132- func TestQueryCreateOK (t * testing.T ) {
133- mockResponse := mockQueryDataResponse (newQueryJSON )
151+ func createQueryOKTestHelper (t * testing.T , expectedResponseData string , testQuery api. NewQuery ) {
152+ mockResponse := mockQueryDataResponse (expectedResponseData )
134153
135154 fakeServer := lacework .MockServer ()
136155 fakeServer .MockAPI (
@@ -151,10 +170,26 @@ func TestQueryCreateOK(t *testing.T) {
151170 _ = json .Unmarshal ([]byte (mockResponse ), & createExpected )
152171
153172 var createActual api.QueryResponse
154- createActual , err = c .V2 .Query .Create (newQuery )
173+ createActual , err = c .V2 .Query .Create (testQuery )
155174 assert .Nil (t , err )
156175
157176 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 )
158193}
159194
160195func TestQueryCreateError (t * testing.T ) {
@@ -198,8 +233,8 @@ func TestQueryListMethod(t *testing.T) {
198233 assert .Nil (t , err )
199234}
200235
201- func TestQueryGetQueryByIDOK (t * testing.T ) {
202- mockResponse := mockQueryDataResponse (newQueryJSON )
236+ func getQueryByIDTestHelper (t * testing.T , expectedResponseData string , queryId string ) {
237+ mockResponse := mockQueryDataResponse (expectedResponseData )
203238
204239 fakeServer := lacework .MockServer ()
205240 fakeServer .MockAPI (
@@ -225,6 +260,22 @@ func TestQueryGetQueryByIDOK(t *testing.T) {
225260 assert .Nil (t , err )
226261
227262 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 )
228279}
229280
230281func TestQueryGetNotFound (t * testing.T ) {
0 commit comments