1
1
package main_test
2
2
3
3
import (
4
+ "bytes"
4
5
"encoding/json"
5
6
"errors"
6
7
"fmt"
8
+ "io"
7
9
"os"
8
10
"strings"
9
11
"testing"
@@ -17,6 +19,8 @@ import (
17
19
"github.com/osbuild/blueprint/pkg/blueprint"
18
20
"github.com/osbuild/images/pkg/arch"
19
21
"github.com/osbuild/images/pkg/bib/osinfo"
22
+ "github.com/osbuild/images/pkg/cloud"
23
+ "github.com/osbuild/images/pkg/cloud/awscloud"
20
24
"github.com/osbuild/images/pkg/container"
21
25
"github.com/osbuild/images/pkg/dnfjson"
22
26
"github.com/osbuild/images/pkg/manifest"
@@ -631,3 +635,68 @@ func TestCobraCmdlineVerbose(t *testing.T) {
631
635
})
632
636
}
633
637
}
638
+
639
+ type fakeAwsUploader struct {
640
+ checkCalls int
641
+
642
+ region , bucket , ami string
643
+ opts * awscloud.UploaderOptions
644
+
645
+ uploadAndRegisterRead bytes.Buffer
646
+ uploadAndRegisterCalls int
647
+ uploadAndRegisterErr error
648
+ }
649
+
650
+ var _ = cloud .Uploader (& fakeAwsUploader {})
651
+
652
+ func (fa * fakeAwsUploader ) Check (status io.Writer ) error {
653
+ fa .checkCalls ++
654
+ return nil
655
+ }
656
+
657
+ func (fa * fakeAwsUploader ) UploadAndRegister (r io.Reader , status io.Writer ) error {
658
+ fa .uploadAndRegisterCalls ++
659
+ _ , err := io .Copy (& fa .uploadAndRegisterRead , r )
660
+ if err != nil {
661
+ panic (err )
662
+ }
663
+ return fa .uploadAndRegisterErr
664
+ }
665
+
666
+ func TestHandleAWSFlags (t * testing.T ) {
667
+
668
+ for _ , tc := range []struct {
669
+ extraArgs []string
670
+ expectedOpts * awscloud.UploaderOptions
671
+ }{
672
+ {nil , & awscloud.UploaderOptions {TargetArch : arch .Current ()}},
673
+ {[]string {"--target-arch=aarch64" }, & awscloud.UploaderOptions {TargetArch : arch .ARCH_AARCH64 }},
674
+ } {
675
+ var fau fakeAwsUploader
676
+ t .Cleanup (main .MockAwscloudNewUploader (func (region string , bucket string , ami string , opts * awscloud.UploaderOptions ) (cloud.Uploader , error ) {
677
+ fau .region = region
678
+ fau .bucket = bucket
679
+ fau .ami = ami
680
+ fau .opts = opts
681
+ return & fau , nil
682
+ }))
683
+
684
+ rootCmd , err := main .BuildCobraCmdline ()
685
+ assert .NoError (t , err )
686
+ // Commands() returns commandsordered by name
687
+ buildCmd := rootCmd .Commands ()[0 ]
688
+ assert .Equal (t , "build" , buildCmd .Name ())
689
+ buildCmd .ParseFlags (append ([]string {
690
+ "--aws-bucket=aws-bucket" ,
691
+ "--aws-ami-name=aws-ami-name" ,
692
+ "--aws-region=aws-region" ,
693
+ "--type=ami" ,
694
+ }, tc .extraArgs ... ))
695
+
696
+ uploader , err := main .HandleAWSFlags (buildCmd )
697
+ assert .NoError (t , err )
698
+ assert .NotNil (t , uploader )
699
+ assert .Equal (t , 1 , fau .checkCalls )
700
+ assert .Equal (t , tc .expectedOpts , fau .opts )
701
+ }
702
+ }
0 commit comments