@@ -10,6 +10,7 @@ import (
1010
1111 "github.com/Arubacloud/sdk-go/pkg/aruba"
1212 "github.com/Arubacloud/sdk-go/pkg/types"
13+ "github.com/spf13/cobra"
1314)
1415
1516func TestDBBackupListCmd (t * testing.T ) {
@@ -207,6 +208,29 @@ func TestDBBackupCreateCmd(t *testing.T) {
207208 wantErr : true ,
208209 errContains : "dbaas-id" ,
209210 },
211+ {
212+ name : "success with --zone" ,
213+ args : []string {
214+ "database" , "backup" , "create" ,
215+ "--project-id" , "proj-123" ,
216+ "--name" , "my-backup" ,
217+ "--region" , "ITBG-Bergamo" ,
218+ "--zone" , "ITBG-1" ,
219+ "--dbaas-id" , "dbaas-001" ,
220+ "--database-name" , "mydb" ,
221+ },
222+ setupSrv : func (srv * arubaTestServer ) {
223+ id , name := "bkp-zone" , "my-backup"
224+ srv .OnPost ("/projects/proj-123/providers/Aruba.Database/backups" , jsonResponse (200 , types.BackupResponse {
225+ Metadata : types.ResourceMetadataResponse {ID : & id , Name : & name },
226+ }))
227+ },
228+ assertOut : func (t * testing.T , out string ) {
229+ if ! strings .Contains (out , "my-backup" ) {
230+ t .Errorf ("expected name in output, got: %s" , out )
231+ }
232+ },
233+ },
210234 {
211235 name : "server error propagates" ,
212236 args : createArgs ,
@@ -730,6 +754,27 @@ func TestDatabaseDBaaSBackupDelete_APIError(t *testing.T) {
730754 }
731755}
732756
757+ // TestDatabaseDBaaSBackupCreateArgs_ParseZoneFlagError covers the GetString("zone") error
758+ // branch in ParseFromCobraCommand by using a command where "zone" is not registered.
759+ func TestDatabaseDBaaSBackupCreateArgs_ParseZoneFlagError (t * testing.T ) {
760+ cmd := & cobra.Command {}
761+ cmd .Flags ().String ("project-id" , "proj-123" , "" )
762+ cmd .Flags ().String ("name" , "my-backup" , "" )
763+ cmd .Flags ().String ("region" , "ITBG-Bergamo" , "" )
764+ // "zone" intentionally omitted so GetString("zone") returns an error
765+ cmd .Flags ().String ("dbaas-id" , "dbaas-001" , "" )
766+ cmd .Flags ().String ("database-name" , "mydb" , "" )
767+ cmd .Flags ().String ("billing-period" , "Hour" , "" )
768+ cmd .Flags ().StringSlice ("tags" , []string {}, "" )
769+ _ = cmd .Flags ().Set ("project-id" , "proj-123" )
770+
771+ args := & DatabaseDBaaSBackupCreateArgs {}
772+ err := args .ParseFromCobraCommand (cmd )
773+ if err == nil {
774+ t .Fatal ("expected error when zone flag is not registered" )
775+ }
776+ }
777+
733778// TestDatabaseDBaaSBackupCreateArgs_ConstructorWrapsErrors verifies that the constructor
734779// wraps validation failures with ErrValidationFailed.
735780func TestDatabaseDBaaSBackupCreateArgs_ConstructorWrapsErrors (t * testing.T ) {
@@ -778,6 +823,27 @@ func TestDatabaseDBaaSBackupCreate_WithTagsAndRegion(t *testing.T) {
778823 }
779824}
780825
826+ // TestDatabaseDBaaSBackupCreate_WithZone verifies that an explicit --zone value is forwarded to the builder.
827+ func TestDatabaseDBaaSBackupCreate_WithZone (t * testing.T ) {
828+ srv := newArubaTestServer (t )
829+ id , name := "bkp-zone" , "my-backup"
830+ srv .OnPost ("/projects/proj-123/providers/Aruba.Database/backups" , jsonResponse (200 , types.BackupResponse {
831+ Metadata : types.ResourceMetadataResponse {ID : & id , Name : & name },
832+ }))
833+
834+ out := captureStdout (func () {
835+ args := validDatabaseDBaaSBackupCreateArgs ()
836+ args .Zone = "ITBG-1"
837+ err := DatabaseDBaaSBackupCreate (context .Background (), srv .Client (), args )
838+ if err != nil {
839+ t .Fatalf ("unexpected error: %v" , err )
840+ }
841+ })
842+ if ! strings .Contains (out , "bkp-zone" ) {
843+ t .Errorf ("expected ID in output, got: %s" , out )
844+ }
845+ }
846+
781847// TestDatabaseDBaaSBackupList_WithCallOpts verifies that CallOpts are threaded through.
782848func TestDatabaseDBaaSBackupList_WithCallOpts (t * testing.T ) {
783849 srv := newArubaTestServer (t )
0 commit comments