You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

505 lines
13 KiB

  1. // Copyright 2019 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // https://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. // Code generated by gapic-generator. DO NOT EDIT.
  15. package expr
  16. import (
  17. exprpb "google.golang.org/genproto/googleapis/api/expr/v1alpha1"
  18. )
  19. import (
  20. "context"
  21. "flag"
  22. "fmt"
  23. "io"
  24. "log"
  25. "net"
  26. "os"
  27. "strings"
  28. "testing"
  29. "github.com/golang/protobuf/proto"
  30. "github.com/golang/protobuf/ptypes"
  31. "google.golang.org/api/option"
  32. status "google.golang.org/genproto/googleapis/rpc/status"
  33. "google.golang.org/grpc"
  34. "google.golang.org/grpc/codes"
  35. "google.golang.org/grpc/metadata"
  36. gstatus "google.golang.org/grpc/status"
  37. )
  38. var _ = io.EOF
  39. var _ = ptypes.MarshalAny
  40. var _ status.Status
  41. type mockConformanceServer struct {
  42. // Embed for forward compatibility.
  43. // Tests will keep working if more methods are added
  44. // in the future.
  45. exprpb.ConformanceServiceServer
  46. reqs []proto.Message
  47. // If set, all calls return this error.
  48. err error
  49. // responses to return if err == nil
  50. resps []proto.Message
  51. }
  52. func (s *mockConformanceServer) Parse(ctx context.Context, req *exprpb.ParseRequest) (*exprpb.ParseResponse, error) {
  53. md, _ := metadata.FromIncomingContext(ctx)
  54. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  55. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  56. }
  57. s.reqs = append(s.reqs, req)
  58. if s.err != nil {
  59. return nil, s.err
  60. }
  61. return s.resps[0].(*exprpb.ParseResponse), nil
  62. }
  63. func (s *mockConformanceServer) Check(ctx context.Context, req *exprpb.CheckRequest) (*exprpb.CheckResponse, error) {
  64. md, _ := metadata.FromIncomingContext(ctx)
  65. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  66. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  67. }
  68. s.reqs = append(s.reqs, req)
  69. if s.err != nil {
  70. return nil, s.err
  71. }
  72. return s.resps[0].(*exprpb.CheckResponse), nil
  73. }
  74. func (s *mockConformanceServer) Eval(ctx context.Context, req *exprpb.EvalRequest) (*exprpb.EvalResponse, error) {
  75. md, _ := metadata.FromIncomingContext(ctx)
  76. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  77. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  78. }
  79. s.reqs = append(s.reqs, req)
  80. if s.err != nil {
  81. return nil, s.err
  82. }
  83. return s.resps[0].(*exprpb.EvalResponse), nil
  84. }
  85. type mockCelServer struct {
  86. // Embed for forward compatibility.
  87. // Tests will keep working if more methods are added
  88. // in the future.
  89. exprpb.CelServiceServer
  90. reqs []proto.Message
  91. // If set, all calls return this error.
  92. err error
  93. // responses to return if err == nil
  94. resps []proto.Message
  95. }
  96. func (s *mockCelServer) Parse(ctx context.Context, req *exprpb.ParseRequest) (*exprpb.ParseResponse, error) {
  97. md, _ := metadata.FromIncomingContext(ctx)
  98. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  99. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  100. }
  101. s.reqs = append(s.reqs, req)
  102. if s.err != nil {
  103. return nil, s.err
  104. }
  105. return s.resps[0].(*exprpb.ParseResponse), nil
  106. }
  107. func (s *mockCelServer) Check(ctx context.Context, req *exprpb.CheckRequest) (*exprpb.CheckResponse, error) {
  108. md, _ := metadata.FromIncomingContext(ctx)
  109. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  110. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  111. }
  112. s.reqs = append(s.reqs, req)
  113. if s.err != nil {
  114. return nil, s.err
  115. }
  116. return s.resps[0].(*exprpb.CheckResponse), nil
  117. }
  118. func (s *mockCelServer) Eval(ctx context.Context, req *exprpb.EvalRequest) (*exprpb.EvalResponse, error) {
  119. md, _ := metadata.FromIncomingContext(ctx)
  120. if xg := md["x-goog-api-client"]; len(xg) == 0 || !strings.Contains(xg[0], "gl-go/") {
  121. return nil, fmt.Errorf("x-goog-api-client = %v, expected gl-go key", xg)
  122. }
  123. s.reqs = append(s.reqs, req)
  124. if s.err != nil {
  125. return nil, s.err
  126. }
  127. return s.resps[0].(*exprpb.EvalResponse), nil
  128. }
  129. // clientOpt is the option tests should use to connect to the test server.
  130. // It is initialized by TestMain.
  131. var clientOpt option.ClientOption
  132. var (
  133. mockConformance mockConformanceServer
  134. mockCel mockCelServer
  135. )
  136. func TestMain(m *testing.M) {
  137. flag.Parse()
  138. serv := grpc.NewServer()
  139. exprpb.RegisterConformanceServiceServer(serv, &mockConformance)
  140. exprpb.RegisterCelServiceServer(serv, &mockCel)
  141. lis, err := net.Listen("tcp", "localhost:0")
  142. if err != nil {
  143. log.Fatal(err)
  144. }
  145. go serv.Serve(lis)
  146. conn, err := grpc.Dial(lis.Addr().String(), grpc.WithInsecure())
  147. if err != nil {
  148. log.Fatal(err)
  149. }
  150. clientOpt = option.WithGRPCConn(conn)
  151. os.Exit(m.Run())
  152. }
  153. func TestConformanceServiceParse(t *testing.T) {
  154. var expectedResponse *exprpb.ParseResponse = &exprpb.ParseResponse{}
  155. mockConformance.err = nil
  156. mockConformance.reqs = nil
  157. mockConformance.resps = append(mockConformance.resps[:0], expectedResponse)
  158. var celSource string = "celSource912645552"
  159. var request = &exprpb.ParseRequest{
  160. CelSource: celSource,
  161. }
  162. c, err := NewConformanceClient(context.Background(), clientOpt)
  163. if err != nil {
  164. t.Fatal(err)
  165. }
  166. resp, err := c.Parse(context.Background(), request)
  167. if err != nil {
  168. t.Fatal(err)
  169. }
  170. if want, got := request, mockConformance.reqs[0]; !proto.Equal(want, got) {
  171. t.Errorf("wrong request %q, want %q", got, want)
  172. }
  173. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  174. t.Errorf("wrong response %q, want %q)", got, want)
  175. }
  176. }
  177. func TestConformanceServiceParseError(t *testing.T) {
  178. errCode := codes.PermissionDenied
  179. mockConformance.err = gstatus.Error(errCode, "test error")
  180. var celSource string = "celSource912645552"
  181. var request = &exprpb.ParseRequest{
  182. CelSource: celSource,
  183. }
  184. c, err := NewConformanceClient(context.Background(), clientOpt)
  185. if err != nil {
  186. t.Fatal(err)
  187. }
  188. resp, err := c.Parse(context.Background(), request)
  189. if st, ok := gstatus.FromError(err); !ok {
  190. t.Errorf("got error %v, expected grpc error", err)
  191. } else if c := st.Code(); c != errCode {
  192. t.Errorf("got error code %q, want %q", c, errCode)
  193. }
  194. _ = resp
  195. }
  196. func TestConformanceServiceCheck(t *testing.T) {
  197. var expectedResponse *exprpb.CheckResponse = &exprpb.CheckResponse{}
  198. mockConformance.err = nil
  199. mockConformance.reqs = nil
  200. mockConformance.resps = append(mockConformance.resps[:0], expectedResponse)
  201. var parsedExpr *exprpb.ParsedExpr = &exprpb.ParsedExpr{}
  202. var request = &exprpb.CheckRequest{
  203. ParsedExpr: parsedExpr,
  204. }
  205. c, err := NewConformanceClient(context.Background(), clientOpt)
  206. if err != nil {
  207. t.Fatal(err)
  208. }
  209. resp, err := c.Check(context.Background(), request)
  210. if err != nil {
  211. t.Fatal(err)
  212. }
  213. if want, got := request, mockConformance.reqs[0]; !proto.Equal(want, got) {
  214. t.Errorf("wrong request %q, want %q", got, want)
  215. }
  216. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  217. t.Errorf("wrong response %q, want %q)", got, want)
  218. }
  219. }
  220. func TestConformanceServiceCheckError(t *testing.T) {
  221. errCode := codes.PermissionDenied
  222. mockConformance.err = gstatus.Error(errCode, "test error")
  223. var parsedExpr *exprpb.ParsedExpr = &exprpb.ParsedExpr{}
  224. var request = &exprpb.CheckRequest{
  225. ParsedExpr: parsedExpr,
  226. }
  227. c, err := NewConformanceClient(context.Background(), clientOpt)
  228. if err != nil {
  229. t.Fatal(err)
  230. }
  231. resp, err := c.Check(context.Background(), request)
  232. if st, ok := gstatus.FromError(err); !ok {
  233. t.Errorf("got error %v, expected grpc error", err)
  234. } else if c := st.Code(); c != errCode {
  235. t.Errorf("got error code %q, want %q", c, errCode)
  236. }
  237. _ = resp
  238. }
  239. func TestConformanceServiceEval(t *testing.T) {
  240. var expectedResponse *exprpb.EvalResponse = &exprpb.EvalResponse{}
  241. mockConformance.err = nil
  242. mockConformance.reqs = nil
  243. mockConformance.resps = append(mockConformance.resps[:0], expectedResponse)
  244. var request *exprpb.EvalRequest = &exprpb.EvalRequest{}
  245. c, err := NewConformanceClient(context.Background(), clientOpt)
  246. if err != nil {
  247. t.Fatal(err)
  248. }
  249. resp, err := c.Eval(context.Background(), request)
  250. if err != nil {
  251. t.Fatal(err)
  252. }
  253. if want, got := request, mockConformance.reqs[0]; !proto.Equal(want, got) {
  254. t.Errorf("wrong request %q, want %q", got, want)
  255. }
  256. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  257. t.Errorf("wrong response %q, want %q)", got, want)
  258. }
  259. }
  260. func TestConformanceServiceEvalError(t *testing.T) {
  261. errCode := codes.PermissionDenied
  262. mockConformance.err = gstatus.Error(errCode, "test error")
  263. var request *exprpb.EvalRequest = &exprpb.EvalRequest{}
  264. c, err := NewConformanceClient(context.Background(), clientOpt)
  265. if err != nil {
  266. t.Fatal(err)
  267. }
  268. resp, err := c.Eval(context.Background(), request)
  269. if st, ok := gstatus.FromError(err); !ok {
  270. t.Errorf("got error %v, expected grpc error", err)
  271. } else if c := st.Code(); c != errCode {
  272. t.Errorf("got error code %q, want %q", c, errCode)
  273. }
  274. _ = resp
  275. }
  276. func TestCelServiceParse(t *testing.T) {
  277. var expectedResponse *exprpb.ParseResponse = &exprpb.ParseResponse{}
  278. mockCel.err = nil
  279. mockCel.reqs = nil
  280. mockCel.resps = append(mockCel.resps[:0], expectedResponse)
  281. var celSource string = "celSource912645552"
  282. var request = &exprpb.ParseRequest{
  283. CelSource: celSource,
  284. }
  285. c, err := NewCelClient(context.Background(), clientOpt)
  286. if err != nil {
  287. t.Fatal(err)
  288. }
  289. resp, err := c.Parse(context.Background(), request)
  290. if err != nil {
  291. t.Fatal(err)
  292. }
  293. if want, got := request, mockCel.reqs[0]; !proto.Equal(want, got) {
  294. t.Errorf("wrong request %q, want %q", got, want)
  295. }
  296. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  297. t.Errorf("wrong response %q, want %q)", got, want)
  298. }
  299. }
  300. func TestCelServiceParseError(t *testing.T) {
  301. errCode := codes.PermissionDenied
  302. mockCel.err = gstatus.Error(errCode, "test error")
  303. var celSource string = "celSource912645552"
  304. var request = &exprpb.ParseRequest{
  305. CelSource: celSource,
  306. }
  307. c, err := NewCelClient(context.Background(), clientOpt)
  308. if err != nil {
  309. t.Fatal(err)
  310. }
  311. resp, err := c.Parse(context.Background(), request)
  312. if st, ok := gstatus.FromError(err); !ok {
  313. t.Errorf("got error %v, expected grpc error", err)
  314. } else if c := st.Code(); c != errCode {
  315. t.Errorf("got error code %q, want %q", c, errCode)
  316. }
  317. _ = resp
  318. }
  319. func TestCelServiceCheck(t *testing.T) {
  320. var expectedResponse *exprpb.CheckResponse = &exprpb.CheckResponse{}
  321. mockCel.err = nil
  322. mockCel.reqs = nil
  323. mockCel.resps = append(mockCel.resps[:0], expectedResponse)
  324. var parsedExpr *exprpb.ParsedExpr = &exprpb.ParsedExpr{}
  325. var request = &exprpb.CheckRequest{
  326. ParsedExpr: parsedExpr,
  327. }
  328. c, err := NewCelClient(context.Background(), clientOpt)
  329. if err != nil {
  330. t.Fatal(err)
  331. }
  332. resp, err := c.Check(context.Background(), request)
  333. if err != nil {
  334. t.Fatal(err)
  335. }
  336. if want, got := request, mockCel.reqs[0]; !proto.Equal(want, got) {
  337. t.Errorf("wrong request %q, want %q", got, want)
  338. }
  339. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  340. t.Errorf("wrong response %q, want %q)", got, want)
  341. }
  342. }
  343. func TestCelServiceCheckError(t *testing.T) {
  344. errCode := codes.PermissionDenied
  345. mockCel.err = gstatus.Error(errCode, "test error")
  346. var parsedExpr *exprpb.ParsedExpr = &exprpb.ParsedExpr{}
  347. var request = &exprpb.CheckRequest{
  348. ParsedExpr: parsedExpr,
  349. }
  350. c, err := NewCelClient(context.Background(), clientOpt)
  351. if err != nil {
  352. t.Fatal(err)
  353. }
  354. resp, err := c.Check(context.Background(), request)
  355. if st, ok := gstatus.FromError(err); !ok {
  356. t.Errorf("got error %v, expected grpc error", err)
  357. } else if c := st.Code(); c != errCode {
  358. t.Errorf("got error code %q, want %q", c, errCode)
  359. }
  360. _ = resp
  361. }
  362. func TestCelServiceEval(t *testing.T) {
  363. var expectedResponse *exprpb.EvalResponse = &exprpb.EvalResponse{}
  364. mockCel.err = nil
  365. mockCel.reqs = nil
  366. mockCel.resps = append(mockCel.resps[:0], expectedResponse)
  367. var request *exprpb.EvalRequest = &exprpb.EvalRequest{}
  368. c, err := NewCelClient(context.Background(), clientOpt)
  369. if err != nil {
  370. t.Fatal(err)
  371. }
  372. resp, err := c.Eval(context.Background(), request)
  373. if err != nil {
  374. t.Fatal(err)
  375. }
  376. if want, got := request, mockCel.reqs[0]; !proto.Equal(want, got) {
  377. t.Errorf("wrong request %q, want %q", got, want)
  378. }
  379. if want, got := expectedResponse, resp; !proto.Equal(want, got) {
  380. t.Errorf("wrong response %q, want %q)", got, want)
  381. }
  382. }
  383. func TestCelServiceEvalError(t *testing.T) {
  384. errCode := codes.PermissionDenied
  385. mockCel.err = gstatus.Error(errCode, "test error")
  386. var request *exprpb.EvalRequest = &exprpb.EvalRequest{}
  387. c, err := NewCelClient(context.Background(), clientOpt)
  388. if err != nil {
  389. t.Fatal(err)
  390. }
  391. resp, err := c.Eval(context.Background(), request)
  392. if st, ok := gstatus.FromError(err); !ok {
  393. t.Errorf("got error %v, expected grpc error", err)
  394. } else if c := st.Code(); c != errCode {
  395. t.Errorf("got error code %q, want %q", c, errCode)
  396. }
  397. _ = resp
  398. }