@@ -746,6 +746,144 @@ await executeExportArg.ExportJob.DoRunAsync(
746746 } ) ;
747747 }
748748
749+ [ Fact ]
750+ public async Task GetContainers_InvalidParamsTest ( )
751+ {
752+ var azureDataLakeConstantsMock = CreateConstantsMock ( ) ;
753+
754+ var providerDefinitionId = Guid . Parse ( "c444cda8-d9b5-45cc-a82d-fef28e08d55c" ) ;
755+
756+ var connectorConnectionMock = new Mock < IConnectorConnectionV2 > ( ) ;
757+
758+ var accountName = Environment . GetEnvironmentVariable ( "ADL2_ACCOUNTNAME" ) ;
759+ Assert . NotNull ( accountName ) ;
760+ var accountKey = Environment . GetEnvironmentVariable ( "ADL2_ACCOUNTKEY" ) ;
761+ Assert . NotNull ( accountKey ) ;
762+
763+ var fileSystemName = $ "xunit-fs-{ DateTime . Now . Ticks } ";
764+ var directoryName = $ "xunit-{ DateTime . Now . Ticks } ";
765+
766+ var streamCacheConnectionStringEncoded = Environment . GetEnvironmentVariable ( "ADL2_STREAMCACHE" ) ;
767+ var streamCacheConnectionString = Encoding . UTF8 . GetString ( Convert . FromBase64String ( streamCacheConnectionStringEncoded ) ) ;
768+
769+ var authenticationValues = new Dictionary < string , object > ( )
770+ {
771+ { nameof ( AzureDataLakeConstants . AccountName ) , accountName } ,
772+ { nameof ( AzureDataLakeConstants . AccountKey ) , accountKey } ,
773+ { nameof ( AzureDataLakeConstants . FileSystemName ) , fileSystemName } ,
774+ { nameof ( AzureDataLakeConstants . DirectoryName ) , directoryName } ,
775+ { nameof ( DataLakeConstants . IsStreamCacheEnabled ) , true } ,
776+ { nameof ( DataLakeConstants . StreamCacheConnectionString ) , streamCacheConnectionString } ,
777+ { nameof ( DataLakeConstants . OutputFormat ) , "JSON" } ,
778+ { nameof ( DataLakeConstants . UseCurrentTimeForExport ) , true } ,
779+ } ;
780+ connectorConnectionMock . Setup ( x => x . Authentication ) . Returns ( authenticationValues ) ;
781+
782+ var jobDataFactory = new Mock < AzureDataLakeJobDataFactory > ( ) ;
783+ jobDataFactory . Setup ( x => x . GetConfiguration ( It . IsAny < ExecutionContext > ( ) , providerDefinitionId , It . IsAny < string > ( ) ) )
784+ . ReturnsAsync ( new AzureDataLakeConnectorJobData ( connectorConnectionMock . Object . Authentication . ToDictionary ( x => x . Key , x => x . Value ) ) ) ;
785+
786+ var connector = new AzureDataLakeConnector (
787+ Mock . Of < ILogger < AzureDataLakeConnector > > ( ) ,
788+ new AzureDataLakeClient ( ) ,
789+ azureDataLakeConstantsMock . Object ,
790+ jobDataFactory . Object ,
791+ Mock . Of < IDateTimeOffsetProvider > ( ) ) ;
792+
793+ var container = new WindsorContainer ( ) ;
794+ container . Register ( Component . For < ILogger < OrganizationDataStores > > ( )
795+ . Instance ( new Mock < ILogger < OrganizationDataStores > > ( ) . Object ) ) ;
796+ var applicationContext = new ApplicationContext ( container ) ;
797+ var organizationId = Guid . NewGuid ( ) ;
798+ var organization = new Organization ( applicationContext , organizationId ) ;
799+ var context = new ExecutionContext ( applicationContext , organization , Mock . Of < ILogger > ( ) ) ;
800+
801+ var containers = await connector . GetContainers ( context , providerDefinitionId ) ;
802+ Assert . Null ( containers ) ;
803+
804+ //This is an existing container in the Azure Data Lake account
805+ //This is an existing directory in the Azure Data Lake account
806+ //There are existing files in the directory
807+ //Changing this or removing the files will cause the test to fail
808+ authenticationValues [ AzureDataLakeConstants . FileSystemName ] = "apac-container" ;
809+ authenticationValues [ AzureDataLakeConstants . DirectoryName ] = "TestExport01" ;
810+
811+ connectorConnectionMock . Setup ( x => x . Authentication ) . Returns ( authenticationValues ) ;
812+ jobDataFactory . Setup ( x => x . GetConfiguration ( It . IsAny < ExecutionContext > ( ) , providerDefinitionId , It . IsAny < string > ( ) ) )
813+ . ReturnsAsync ( new AzureDataLakeConnectorJobData ( connectorConnectionMock . Object . Authentication . ToDictionary ( x => x . Key , x => x . Value ) ) ) ;
814+
815+ connector = new AzureDataLakeConnector (
816+ Mock . Of < ILogger < AzureDataLakeConnector > > ( ) ,
817+ new AzureDataLakeClient ( ) ,
818+ azureDataLakeConstantsMock . Object ,
819+ jobDataFactory . Object ,
820+ Mock . Of < IDateTimeOffsetProvider > ( ) ) ;
821+
822+ containers = await connector . GetContainers ( context , providerDefinitionId ) ;
823+ Assert . NotNull ( containers ) ;
824+ }
825+
826+ [ Fact ]
827+ public async Task GetContainers_HasValuesTest ( )
828+ {
829+ var azureDataLakeConstantsMock = CreateConstantsMock ( ) ;
830+
831+ var providerDefinitionId = Guid . Parse ( "c444cda8-d9b5-45cc-a82d-fef28e08d55c" ) ;
832+
833+ var connectorConnectionMock = new Mock < IConnectorConnectionV2 > ( ) ;
834+
835+ var accountName = Environment . GetEnvironmentVariable ( "ADL2_ACCOUNTNAME" ) ;
836+ Assert . NotNull ( accountName ) ;
837+ var accountKey = Environment . GetEnvironmentVariable ( "ADL2_ACCOUNTKEY" ) ;
838+ Assert . NotNull ( accountKey ) ;
839+
840+ //This is an existing container in the Azure Data Lake account
841+ //This is an existing directory in the Azure Data Lake account
842+ //There are existing files in the directory
843+ //Changing this or removing the files will cause the test to fail
844+ var fileSystemName = $ "apac-container";
845+ var directoryName = $ "TestExport01";
846+
847+ var streamCacheConnectionStringEncoded = Environment . GetEnvironmentVariable ( "ADL2_STREAMCACHE" ) ;
848+ var streamCacheConnectionString = Encoding . UTF8 . GetString ( Convert . FromBase64String ( streamCacheConnectionStringEncoded ) ) ;
849+
850+ var authenticationValues = new Dictionary < string , object > ( )
851+ {
852+ { nameof ( AzureDataLakeConstants . AccountName ) , accountName } ,
853+ { nameof ( AzureDataLakeConstants . AccountKey ) , accountKey } ,
854+ { nameof ( AzureDataLakeConstants . FileSystemName ) , fileSystemName } ,
855+ { nameof ( AzureDataLakeConstants . DirectoryName ) , directoryName } ,
856+ { nameof ( DataLakeConstants . IsStreamCacheEnabled ) , true } ,
857+ { nameof ( DataLakeConstants . StreamCacheConnectionString ) , streamCacheConnectionString } ,
858+ { nameof ( DataLakeConstants . OutputFormat ) , "JSON" } ,
859+ { nameof ( DataLakeConstants . UseCurrentTimeForExport ) , true } ,
860+ } ;
861+ connectorConnectionMock . Setup ( x => x . Authentication ) . Returns ( authenticationValues ) ;
862+
863+ var jobDataFactory = new Mock < AzureDataLakeJobDataFactory > ( ) ;
864+ jobDataFactory . Setup ( x => x . GetConfiguration ( It . IsAny < ExecutionContext > ( ) , providerDefinitionId , It . IsAny < string > ( ) ) )
865+ . ReturnsAsync ( new AzureDataLakeConnectorJobData ( connectorConnectionMock . Object . Authentication . ToDictionary ( x => x . Key , x => x . Value ) ) ) ;
866+
867+ var connector = new AzureDataLakeConnector (
868+ Mock . Of < ILogger < AzureDataLakeConnector > > ( ) ,
869+ new AzureDataLakeClient ( ) ,
870+ azureDataLakeConstantsMock . Object ,
871+ jobDataFactory . Object ,
872+ Mock . Of < IDateTimeOffsetProvider > ( ) ) ;
873+
874+ var container = new WindsorContainer ( ) ;
875+ container . Register ( Component . For < ILogger < OrganizationDataStores > > ( )
876+ . Instance ( new Mock < ILogger < OrganizationDataStores > > ( ) . Object ) ) ;
877+ var applicationContext = new ApplicationContext ( container ) ;
878+ var organizationId = Guid . NewGuid ( ) ;
879+ var organization = new Organization ( applicationContext , organizationId ) ;
880+ var context = new ExecutionContext ( applicationContext , organization , Mock . Of < ILogger > ( ) ) ;
881+
882+ var containers = await connector . GetContainers ( context , providerDefinitionId ) ;
883+ Assert . NotNull ( containers ) ;
884+ Assert . NotEmpty ( containers ) ;
885+ }
886+
749887 private static async Task < DateTimeOffset > GetFileDataTime ( ExecuteExportArg executeExportArg , PathItem path )
750888 {
751889 var fsClient = executeExportArg . Client . GetFileSystemClient ( executeExportArg . FileSystemName ) ;
0 commit comments