agones.dev/agones@v1.54.0/sdks/nodejs/spec/betaAgonesSDK.spec.js (about)

     1  // Copyright 2020 Google LLC All Rights Reserved.
     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  //     http://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  
    15  const grpc = require('@grpc/grpc-js');
    16  
    17  const messages = require('../lib/beta/beta_pb');
    18  const Beta = require('../src/beta');
    19  
    20  describe('Beta', () => {
    21  	let beta;
    22  
    23  	beforeEach(() => {
    24  		const address = 'localhost:9357';
    25  		const credentials = grpc.credentials.createInsecure();
    26  		beta = new Beta(address, credentials);
    27  	});
    28  
    29  	describe('getCounterCount', () => {
    30  		it('calls the server and handles the response', async () => {
    31  			spyOn(beta.client, 'getCounter').and.callFake((request, callback) => {
    32  				let counter = new messages.Counter();
    33  				counter.setCount(10);
    34  				callback(undefined, counter);
    35  			});
    36  
    37  			let count = await beta.getCounterCount('key');
    38  			expect(beta.client.getCounter).toHaveBeenCalled();
    39  			expect(count).toEqual(10);
    40  			let request = beta.client.getCounter.calls.argsFor(0)[0];
    41  			expect(request.getName()).toEqual('key');
    42  		});
    43  
    44  		it('calls the server and handles failure', async () => {
    45  			spyOn(beta.client, 'getCounter').and.callFake((request, callback) => {
    46  				callback('error', undefined);
    47  			});
    48  			try {
    49  				await beta.getCounterCount('key');
    50  				fail();
    51  			} catch (error) {
    52  				expect(beta.client.getCounter).toHaveBeenCalled();
    53  				expect(error).toEqual('error');
    54  			}
    55  		});
    56  	});
    57  
    58  	describe('incrementCounter', () => {
    59  		it('calls the server and handles the response while under capacity', async () => {
    60  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
    61  				let counter = new messages.Counter();
    62  				callback(undefined, counter);
    63  			});
    64  
    65  			let response = await beta.incrementCounter('key', 5);
    66  			expect(beta.client.updateCounter).toHaveBeenCalled();
    67  			expect(response).toEqual(undefined);
    68  			let request = beta.client.updateCounter.calls.argsFor(0)[0];
    69  			expect(request.getCounterupdaterequest().getName()).toEqual('key');
    70  			expect(request.getCounterupdaterequest().getCountdiff()).toEqual(5);
    71  		});
    72  
    73  		it('calls the server and handles failure', async () => {
    74  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
    75  				callback('error', undefined);
    76  			});
    77  			try {
    78  				await beta.incrementCounter('key', 5);
    79  				fail();
    80  			} catch (error) {
    81  				expect(beta.client.updateCounter).toHaveBeenCalled();
    82  				expect(error).toEqual('error');
    83  			}
    84  		});
    85  	});
    86  
    87  	describe('decrementCounter', () => {
    88  		it('calls the server and handles the response', async () => {
    89  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
    90  				let counter = new messages.Counter();
    91  				callback(undefined, counter);
    92  			});
    93  
    94  			let response = await beta.decrementCounter('key', 5);
    95  			expect(beta.client.updateCounter).toHaveBeenCalled();
    96  			expect(response).toEqual(undefined);
    97  			let request = beta.client.updateCounter.calls.argsFor(0)[0];
    98  			expect(request.getCounterupdaterequest().getName()).toEqual('key');
    99  			expect(request.getCounterupdaterequest().getCountdiff()).toEqual(-5);
   100  		});
   101  
   102  		it('calls the server and handles failure', async () => {
   103  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
   104  				callback('error', undefined);
   105  			});
   106  			try {
   107  				await beta.decrementCounter('key', 5);
   108  				fail();
   109  			} catch (error) {
   110  				expect(beta.client.updateCounter).toHaveBeenCalled();
   111  				expect(error).toEqual('error');
   112  			}
   113  		});
   114  	});
   115  
   116  	describe('setCounterCount', () => {
   117  		it('calls the server and handles the response', async () => {
   118  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
   119  				let counter = new messages.Counter();
   120  				callback(undefined, counter);
   121  			});
   122  
   123  			let response = await beta.setCounterCount('key', 5);
   124  			expect(beta.client.updateCounter).toHaveBeenCalled();
   125  			expect(response).toEqual(undefined);
   126  			let request = beta.client.updateCounter.calls.argsFor(0)[0];
   127  			expect(request.getCounterupdaterequest().getName()).toEqual('key');
   128  			expect(request.getCounterupdaterequest().getCount().getValue()).toEqual(5);
   129  		});
   130  
   131  		it('calls the server and handles failure', async () => {
   132  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
   133  				callback('error', undefined);
   134  			});
   135  			try {
   136  				await beta.setCounterCount('key', 5);
   137  				fail();
   138  			} catch (error) {
   139  				expect(beta.client.updateCounter).toHaveBeenCalled();
   140  				expect(error).toEqual('error');
   141  			}
   142  		});
   143  	});
   144  
   145  	describe('getCounterCapacity', () => {
   146  		it('calls the server and handles the response', async () => {
   147  			spyOn(beta.client, 'getCounter').and.callFake((request, callback) => {
   148  				let counter = new messages.Counter();
   149  				counter.setCapacity(10);
   150  				callback(undefined, counter);
   151  			});
   152  
   153  			let capacity = await beta.getCounterCapacity('key');
   154  			expect(beta.client.getCounter).toHaveBeenCalled();
   155  			expect(capacity).toEqual(10);
   156  			let request = beta.client.getCounter.calls.argsFor(0)[0];
   157  			expect(request.getName()).toEqual('key');
   158  		});
   159  
   160  		it('calls the server and handles failure', async () => {
   161  			spyOn(beta.client, 'getCounter').and.callFake((request, callback) => {
   162  				callback('error', undefined);
   163  			});
   164  			try {
   165  				await beta.getCounterCapacity('key');
   166  				fail();
   167  			} catch (error) {
   168  				expect(beta.client.getCounter).toHaveBeenCalled();
   169  				expect(error).toEqual('error');
   170  			}
   171  		});
   172  	});
   173  
   174  	describe('setCounterCapacity', () => {
   175  		it('calls the server and handles the response', async () => {
   176  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
   177  				let counter = new messages.Counter();
   178  				callback(undefined, counter);
   179  			});
   180  
   181  			let response = await beta.setCounterCapacity('key', 5);
   182  			expect(beta.client.updateCounter).toHaveBeenCalled();
   183  			expect(response).toEqual(undefined);
   184  			let request = beta.client.updateCounter.calls.argsFor(0)[0];
   185  			expect(request.getCounterupdaterequest().getName()).toEqual('key');
   186  			expect(request.getCounterupdaterequest().getCapacity().getValue()).toEqual(5);
   187  		});
   188  
   189  		it('calls the server and handles failure', async () => {
   190  			spyOn(beta.client, 'updateCounter').and.callFake((request, callback) => {
   191  				callback('error', undefined);
   192  			});
   193  			try {
   194  				await beta.setCounterCapacity('key', 5);
   195  				fail();
   196  			} catch (error) {
   197  				expect(beta.client.updateCounter).toHaveBeenCalled();
   198  				expect(error).toEqual('error');
   199  			}
   200  		});
   201  	});
   202  
   203  	describe('getListCapacity', () => {
   204  		it('calls the server and handles the response', async () => {
   205  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   206  				let list = new messages.List();
   207  				list.setCapacity(10);
   208  				callback(undefined, list);
   209  			});
   210  
   211  			let capacity = await beta.getListCapacity('key');
   212  			expect(beta.client.getList).toHaveBeenCalled();
   213  			expect(capacity).toEqual(10);
   214  			let request = beta.client.getList.calls.argsFor(0)[0];
   215  			expect(request.getName()).toEqual('key');
   216  		});
   217  
   218  		it('calls the server and handles failure', async () => {
   219  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   220  				callback('error', undefined);
   221  			});
   222  			try {
   223  				await beta.getListCapacity('key');
   224  				fail();
   225  			} catch (error) {
   226  				expect(beta.client.getList).toHaveBeenCalled();
   227  				expect(error).toEqual('error');
   228  			}
   229  		});
   230  	});
   231  
   232  	describe('setListCapacity', () => {
   233  		it('calls the server and handles the response while in range', async () => {
   234  			spyOn(beta.client, 'updateList').and.callFake((request, callback) => {
   235  				let list = new messages.List();
   236  				callback(undefined, list);
   237  			});
   238  
   239  			let response = await beta.setListCapacity('key', 5);
   240  			expect(beta.client.updateList).toHaveBeenCalled();
   241  			expect(response).toEqual(undefined);
   242  			let request = beta.client.updateList.calls.argsFor(0)[0];
   243  			expect(request.getList().getName()).toEqual('key');
   244  			expect(request.getList().getCapacity()).toEqual(5);
   245  		});
   246  
   247  		it('calls the server and handles failure', async () => {
   248  			spyOn(beta.client, 'updateList').and.callFake((request, callback) => {
   249  				callback('error', undefined);
   250  			});
   251  			try {
   252  				await beta.setListCapacity('key', 5);
   253  				fail();
   254  			} catch (error) {
   255  				expect(beta.client.updateList).toHaveBeenCalled();
   256  				expect(error).toEqual('error');
   257  			}
   258  		});
   259  	});
   260  
   261  	describe('listContains', () => {
   262  		it('calls the server and handles the response when the value is contained', async () => {
   263  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   264  				let list = new messages.List();
   265  				list.setValuesList(['firstValue', 'secondValue']);
   266  				callback(undefined, list);
   267  			});
   268  
   269  			let contains = await beta.listContains('key', 'secondValue');
   270  			expect(beta.client.getList).toHaveBeenCalled();
   271  			expect(contains).toEqual(true);
   272  			let request = beta.client.getList.calls.argsFor(0)[0];
   273  			expect(request.getName()).toEqual('key');
   274  		});
   275  
   276  		it('calls the server and handles the response when the value is not contained', async () => {
   277  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   278  				let list = new messages.List();
   279  				list.setValuesList(['firstValue', 'secondValue']);
   280  				callback(undefined, list);
   281  			});
   282  
   283  			let contains = await beta.listContains('key', 'thirdValue');
   284  			expect(beta.client.getList).toHaveBeenCalled();
   285  			expect(contains).toEqual(false);
   286  			let request = beta.client.getList.calls.argsFor(0)[0];
   287  			expect(request.getName()).toEqual('key');
   288  		});
   289  
   290  		it('calls the server and handles failure', async () => {
   291  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   292  				callback('error', undefined);
   293  			});
   294  			try {
   295  				await beta.listContains('key', 'value');
   296  				fail();
   297  			} catch (error) {
   298  				expect(beta.client.getList).toHaveBeenCalled();
   299  				expect(error).toEqual('error');
   300  			}
   301  		});
   302  	});
   303  
   304  	describe('getListLength', () => {
   305  		it('calls the server and handles the response', async () => {
   306  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   307  				let list = new messages.List();
   308  				list.setValuesList(['firstValue', 'secondValue']);
   309  				callback(undefined, list);
   310  			});
   311  
   312  			let length = await beta.getListLength('key');
   313  			expect(beta.client.getList).toHaveBeenCalled();
   314  			expect(length).toEqual(2);
   315  			let request = beta.client.getList.calls.argsFor(0)[0];
   316  			expect(request.getName()).toEqual('key');
   317  		});
   318  
   319  		it('calls the server and handles failure', async () => {
   320  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   321  				callback('error', undefined);
   322  			});
   323  			try {
   324  				await beta.getListLength('key');
   325  				fail();
   326  			} catch (error) {
   327  				expect(beta.client.getList).toHaveBeenCalled();
   328  				expect(error).toEqual('error');
   329  			}
   330  		});
   331  	});
   332  
   333  	describe('getListValues', () => {
   334  		it('calls the server and handles the response', async () => {
   335  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   336  				let list = new messages.List();
   337  				list.setValuesList(['firstValue', 'secondValue']);
   338  				callback(undefined, list);
   339  			});
   340  
   341  			let values = await beta.getListValues('key');
   342  			expect(beta.client.getList).toHaveBeenCalled();
   343  			expect(values).toEqual(['firstValue', 'secondValue']);
   344  			let request = beta.client.getList.calls.argsFor(0)[0];
   345  			expect(request.getName()).toEqual('key');
   346  		});
   347  
   348  		it('calls the server and handles failure', async () => {
   349  			spyOn(beta.client, 'getList').and.callFake((request, callback) => {
   350  				callback('error', undefined);
   351  			});
   352  			try {
   353  				await beta.getListValues('key');
   354  				fail();
   355  			} catch (error) {
   356  				expect(beta.client.getList).toHaveBeenCalled();
   357  				expect(error).toEqual('error');
   358  			}
   359  		});
   360  	});
   361  
   362  	describe('appendListValue', () => {
   363  		it('calls the server and handles the response', async () => {
   364  			spyOn(beta.client, 'addListValue').and.callFake((request, callback) => {
   365  				let list = new messages.List();
   366  				callback(undefined, list);
   367  			});
   368  
   369  			let response = await beta.appendListValue('key', 'value');
   370  			expect(beta.client.addListValue).toHaveBeenCalled();
   371  			expect(response).toEqual(undefined);
   372  			let request = beta.client.addListValue.calls.argsFor(0)[0];
   373  			expect(request.getName()).toEqual('key');
   374  			expect(request.getValue()).toEqual('value');
   375  		});
   376  
   377  		it('calls the server and handles failure', async () => {
   378  			spyOn(beta.client, 'addListValue').and.callFake((request, callback) => {
   379  				callback('error', undefined);
   380  			});
   381  			try {
   382  				await beta.appendListValue('key', 'value');
   383  				fail();
   384  			} catch (error) {
   385  				expect(beta.client.addListValue).toHaveBeenCalled();
   386  				expect(error).toEqual('error');
   387  			}
   388  		});
   389  	});
   390  
   391  	describe('deleteListValue', () => {
   392  		it('calls the server and handles the response', async () => {
   393  			spyOn(beta.client, 'removeListValue').and.callFake((request, callback) => {
   394  				let list = new messages.List();
   395  				callback(undefined, list);
   396  			});
   397  
   398  			let response = await beta.deleteListValue('key', 'value');
   399  			expect(beta.client.removeListValue).toHaveBeenCalled();
   400  			expect(response).toEqual(undefined);
   401  			let request = beta.client.removeListValue.calls.argsFor(0)[0];
   402  			expect(request.getName()).toEqual('key');
   403  			expect(request.getValue()).toEqual('value');
   404  		});
   405  
   406  		it('calls the server and handles failure', async () => {
   407  			spyOn(beta.client, 'removeListValue').and.callFake((request, callback) => {
   408  				callback('error', undefined);
   409  			});
   410  			try {
   411  				await beta.deleteListValue('key', 'value');
   412  				fail();
   413  			} catch (error) {
   414  				expect(beta.client.removeListValue).toHaveBeenCalled();
   415  				expect(error).toEqual('error');
   416  			}
   417  		});
   418  	});
   419  });