1515import { PreciseDate } from '@google-cloud/precise-date' ;
1616import * as promisify from '@google-cloud/promisify' ;
1717import * as assert from 'assert' ;
18- import { before , beforeEach , describe , it } from 'mocha' ;
18+ import { before , beforeEach , describe , it , afterEach } from 'mocha' ;
1919import * as proxyquire from 'proxyquire' ;
2020import * as pumpify from 'pumpify' ;
2121import { ServiceError } from 'google-gax' ;
2222
2323import * as clusterTypes from '../src/cluster' ;
2424import * as backupTypes from '../src/backup' ;
25+ import * as instanceTypes from '../src/instance' ;
26+ import * as sinon from 'sinon' ;
2527
2628import { Bigtable } from '../src' ;
29+ import { Table } from '../src/table' ;
2730
2831let promisified = false ;
2932const fakePromisify = Object . assign ( { } , promisify , {
@@ -40,6 +43,14 @@ const fakePromisify = Object.assign({}, promisify, {
4043 } ,
4144} ) ;
4245
46+ class FakeTable extends Table {
47+ calledWith_ : Array < { } > ;
48+ constructor ( ...args : [ instanceTypes . Instance , string ] ) {
49+ super ( args [ 0 ] , args [ 1 ] ) ;
50+ this . calledWith_ = args ;
51+ }
52+ }
53+
4354describe ( 'Bigtable/Backup' , ( ) => {
4455 const BACKUP_ID = 'my-backup' ;
4556 let CLUSTER : clusterTypes . Cluster ;
@@ -52,6 +63,7 @@ describe('Bigtable/Backup', () => {
5263 before ( ( ) => {
5364 Backup = proxyquire ( '../src/backup.js' , {
5465 '@google-cloud/promisify' : fakePromisify ,
66+ './table.js' : { Table : FakeTable } ,
5567 pumpify,
5668 } ) . Backup ;
5769 } ) ;
@@ -328,6 +340,30 @@ describe('Bigtable/Backup', () => {
328340 } ) ;
329341 } ) ;
330342
343+ describe ( 'getIamPolicy' , ( ) => {
344+ afterEach ( ( ) => {
345+ sinon . restore ( ) ;
346+ } ) ;
347+
348+ it ( 'should correctly call Table#getIamPolicy()' , done => {
349+ sinon . stub ( Table . prototype , 'getIamPolicy' ) . callsFake ( ( opt , callback ) => {
350+ assert . deepStrictEqual ( opt , { } ) ;
351+ callback ( ) ; // done()
352+ } ) ;
353+ backup . getIamPolicy ( done ) ;
354+ } ) ;
355+
356+ it ( 'should accept options' , done => {
357+ const options = { gaxOptions : { } , requestedPolicyVersion : 1 } ;
358+
359+ sinon . stub ( Table . prototype , 'getIamPolicy' ) . callsFake ( ( opt , callback ) => {
360+ assert . strictEqual ( opt , options ) ;
361+ callback ( ) ; // done()
362+ } ) ;
363+ backup . getIamPolicy ( options , done ) ;
364+ } ) ;
365+ } ) ;
366+
331367 describe ( 'getMetadata' , ( ) => {
332368 it ( 'should make the correct request' , done => {
333369 // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -529,4 +565,81 @@ describe('Bigtable/Backup', () => {
529565 ) ;
530566 } ) ;
531567 } ) ;
568+
569+ describe ( 'setIamPolicy' , ( ) => {
570+ afterEach ( ( ) => {
571+ sinon . restore ( ) ;
572+ } ) ;
573+ const policy = { } ;
574+ it ( 'should correctly call Table#setIamPolicy()' , done => {
575+ sinon
576+ . stub ( Table . prototype , 'setIamPolicy' )
577+ . callsFake ( ( _policy , gaxOpts , callback ) => {
578+ assert . strictEqual ( _policy , policy ) ;
579+ assert . deepStrictEqual ( gaxOpts , { } ) ;
580+ callback ( ) ; // done()
581+ } ) ;
582+ backup . setIamPolicy ( policy , done ) ;
583+ } ) ;
584+
585+ it ( 'should accept gaxOptions' , done => {
586+ const gaxOptions = { } ;
587+
588+ sinon
589+ . stub ( Table . prototype , 'setIamPolicy' )
590+ . callsFake ( ( _policy , gaxOpts , callback ) => {
591+ assert . strictEqual ( _policy , policy ) ;
592+ assert . strictEqual ( gaxOpts , gaxOptions ) ;
593+ callback ( ) ; // done()
594+ } ) ;
595+ backup . setIamPolicy ( policy , gaxOptions , done ) ;
596+ } ) ;
597+ } ) ;
598+
599+ describe ( 'testIamPermissions' , ( ) => {
600+ afterEach ( ( ) => {
601+ sinon . restore ( ) ;
602+ } ) ;
603+
604+ const permissions = 'bigtable.backups.get' ;
605+ it ( 'should properly call Table#testIamPermissions' , done => {
606+ sinon
607+ . stub ( Table . prototype , 'testIamPermissions' )
608+ . callsFake ( ( _permissions , gaxOpts , callback ) => {
609+ assert . strictEqual ( _permissions , permissions ) ;
610+ assert . deepStrictEqual ( gaxOpts , { } ) ;
611+ callback ( ) ; // done()
612+ } ) ;
613+ backup . testIamPermissions ( permissions , done ) ;
614+ } ) ;
615+
616+ it ( 'should accept permissions as array' , done => {
617+ const permissions = [
618+ 'bigtable.backups.get' ,
619+ 'bigtable.backups.delete' ,
620+ 'bigtable.backups.update' ,
621+ 'bigtable.backups.restore' ,
622+ ] ;
623+ sinon
624+ . stub ( Table . prototype , 'testIamPermissions' )
625+ . callsFake ( ( _permissions , gaxOpts , callback ) => {
626+ assert . strictEqual ( _permissions , permissions ) ;
627+ assert . deepStrictEqual ( gaxOpts , { } ) ;
628+ callback ( ) ; // done()
629+ } ) ;
630+ backup . testIamPermissions ( permissions , done ) ;
631+ } ) ;
632+
633+ it ( 'should accept gaxOptions' , done => {
634+ const gaxOptions = { } ;
635+ sinon
636+ . stub ( Table . prototype , 'testIamPermissions' )
637+ . callsFake ( ( _permissions , gaxOpts , callback ) => {
638+ assert . strictEqual ( _permissions , permissions ) ;
639+ assert . strictEqual ( gaxOpts , gaxOptions ) ;
640+ callback ( ) ; // done()
641+ } ) ;
642+ backup . testIamPermissions ( permissions , gaxOptions , done ) ;
643+ } ) ;
644+ } ) ;
532645} ) ;
0 commit comments