@@ -3714,5 +3714,185 @@ describe('Bucket', () => {
37143714 bucket . setMetadata ( clearMetadata , assert . ifError ) ;
37153715 } ) ;
37163716 } ) ;
3717+
3718+ describe ( 'ipFilter' , ( ) => {
3719+ it ( 'should pass ipFilter to create' , done => {
3720+ const metadata = {
3721+ ipFilter : {
3722+ mode : 'Disabled' ,
3723+ publicNetworkSource : {
3724+ allowedIpCidrRanges : [ '192.168.0.0/16' ] ,
3725+ } ,
3726+ allowAllServiceAgentAccess : true ,
3727+ } ,
3728+ } ;
3729+
3730+ const storageMock = Object . assign ( { } , bucket . storage , {
3731+ createBucket : (
3732+ name : string ,
3733+ options : unknown ,
3734+ callback : Function
3735+ ) => {
3736+ assert . strictEqual ( name , bucket . name ) ;
3737+ assert . deepStrictEqual ( options , metadata ) ;
3738+ callback ( null , bucket , metadata ) ;
3739+ } ,
3740+ } ) ;
3741+
3742+ const testBucket = new Bucket ( storageMock , bucket . name ) ;
3743+ testBucket . create ( metadata , ( err : Error | null ) => {
3744+ assert . ifError ( err ) ;
3745+ done ( ) ;
3746+ } ) ;
3747+ } ) ;
3748+
3749+ it ( 'should enable ipFilter' , done => {
3750+ const metadata = {
3751+ ipFilter : {
3752+ mode : 'Enabled' ,
3753+ publicNetworkSource : {
3754+ allowedIpCidrRanges : [ '192.168.1.1/32' ] ,
3755+ } ,
3756+ } ,
3757+ } ;
3758+
3759+ bucket . parent . request = (
3760+ reqOpts : DecorateRequestOptions ,
3761+ callback : Function
3762+ ) => {
3763+ assert . strictEqual ( reqOpts . method , 'PATCH' ) ;
3764+ assert . deepStrictEqual ( reqOpts . json . ipFilter , metadata . ipFilter ) ;
3765+ callback ( null , metadata ) ;
3766+ } ;
3767+
3768+ bucket . setMetadata ( metadata , ( err : Error | null ) => {
3769+ assert . ifError ( err ) ;
3770+ done ( ) ;
3771+ } ) ;
3772+ } ) ;
3773+
3774+ it ( 'should update ipFilter' , done => {
3775+ const metadata = {
3776+ ipFilter : {
3777+ mode : 'Enabled' ,
3778+ vpcNetworkSources : [
3779+ {
3780+ network : 'projects/my-project/global/networks/my-vpc' ,
3781+ allowedIpCidrRanges : [ '10.0.0.0/8' ] ,
3782+ } ,
3783+ ] ,
3784+ } ,
3785+ } ;
3786+
3787+ bucket . parent . request = (
3788+ reqOpts : DecorateRequestOptions ,
3789+ callback : Function
3790+ ) => {
3791+ assert . strictEqual ( reqOpts . method , 'PATCH' ) ;
3792+ assert . deepStrictEqual ( reqOpts . json . ipFilter , metadata . ipFilter ) ;
3793+ callback ( null , metadata ) ;
3794+ } ;
3795+
3796+ bucket . setMetadata ( metadata , ( err : Error | null ) => {
3797+ assert . ifError ( err ) ;
3798+ done ( ) ;
3799+ } ) ;
3800+ } ) ;
3801+
3802+ it ( 'should get ipFilter' , async ( ) => {
3803+ const ipFilter = {
3804+ mode : 'Enabled' ,
3805+ publicNetworkSource : {
3806+ allowedIpCidrRanges : [ '192.168.1.1/32' ] ,
3807+ } ,
3808+ vpcNetworkSources : [
3809+ {
3810+ network : 'projects/my-project/global/networks/my-vpc' ,
3811+ allowedIpCidrRanges : [ '10.0.0.0/8' ] ,
3812+ } ,
3813+ ] ,
3814+ allowAllServiceAgentAccess : true ,
3815+ allowCrossOrgVpcs : true ,
3816+ } ;
3817+
3818+ bucket . parent . request = (
3819+ reqOpts : DecorateRequestOptions ,
3820+ callback : Function
3821+ ) => {
3822+ callback ( null , { ipFilter} ) ;
3823+ } ;
3824+
3825+ const [ metadata ] = ( await bucket . getMetadata ( ) ) as [ BucketMetadata ] ;
3826+ assert . deepStrictEqual ( metadata . ipFilter , ipFilter ) ;
3827+ } ) ;
3828+
3829+ it ( 'should clear allowedIpCidrRanges' , done => {
3830+ const initialIpFilter = {
3831+ mode : 'Disabled' ,
3832+ publicNetworkSource : {
3833+ allowedIpCidrRanges : [ '203.0.113.0/24' ] ,
3834+ } ,
3835+ } ;
3836+
3837+ const updatedIpFilter = {
3838+ mode : 'Disabled' ,
3839+ publicNetworkSource : {
3840+ allowedIpCidrRanges : undefined ,
3841+ } ,
3842+ allowAllServiceAgentAccess : false ,
3843+ } ;
3844+
3845+ bucket . parent . request = (
3846+ reqOpts : DecorateRequestOptions ,
3847+ callback : Function
3848+ ) => {
3849+ if ( reqOpts . method === 'PATCH' ) {
3850+ assert . deepStrictEqual (
3851+ reqOpts . json . ipFilter ?. publicNetworkSource ?. allowedIpCidrRanges ,
3852+ [ ]
3853+ ) ;
3854+ callback ( null , { ipFilter : updatedIpFilter } ) ;
3855+ } else {
3856+ callback ( null , { ipFilter : initialIpFilter } ) ;
3857+ }
3858+ } ;
3859+
3860+ bucket . getMetadata ( ( err : Error | null , getMeta ?: BucketMetadata ) => {
3861+ assert . ifError ( err ) ;
3862+ assert . strictEqual ( getMeta ?. ipFilter ?. mode , 'Disabled' ) ;
3863+ assert . deepStrictEqual (
3864+ getMeta ?. ipFilter ?. publicNetworkSource ?. allowedIpCidrRanges ,
3865+ [ '203.0.113.0/24' ]
3866+ ) ;
3867+
3868+ const metadataUpdate = {
3869+ ipFilter : {
3870+ mode : 'Disabled' ,
3871+ publicNetworkSource : {
3872+ allowedIpCidrRanges : [ ] ,
3873+ } ,
3874+ allowAllServiceAgentAccess : false ,
3875+ } ,
3876+ } ;
3877+
3878+ bucket . setMetadata (
3879+ metadataUpdate ,
3880+ ( err : Error | null , meta ?: BucketMetadata ) => {
3881+ assert . ifError ( err ) ;
3882+ assert . strictEqual ( meta ?. ipFilter ?. mode , 'Disabled' ) ;
3883+ assert . strictEqual (
3884+ meta ?. ipFilter ?. publicNetworkSource ?. allowedIpCidrRanges ,
3885+ undefined
3886+ ) ;
3887+ assert . strictEqual (
3888+ meta ?. ipFilter ?. allowAllServiceAgentAccess ,
3889+ false
3890+ ) ;
3891+ done ( ) ;
3892+ }
3893+ ) ;
3894+ } ) ;
3895+ } ) ;
3896+ } ) ;
37173897 } ) ;
37183898} ) ;
0 commit comments