@@ -63,9 +63,19 @@ public KeysControllerTests()
63
63
64
64
_functionsSyncManagerMock = new Mock < IFunctionsSyncManager > ( MockBehavior . Strict ) ;
65
65
_functionsSyncManagerMock . Setup ( p => p . TrySyncTriggersAsync ( false ) ) . ReturnsAsync ( new SyncTriggersResult { Success = true } ) ;
66
+
66
67
var hostManagerMock = new Mock < IScriptHostManager > ( MockBehavior . Strict ) ;
67
68
hostManagerMock . SetupGet ( p => p . State ) . Returns ( ScriptHostState . Running ) ;
68
- _testController = new KeysController ( new OptionsWrapper < ScriptApplicationHostOptions > ( settings ) , new TestSecretManagerProvider ( _secretsManagerMock . Object ) , new LoggerFactory ( ) , fileSystem . Object , _functionsSyncManagerMock . Object , hostManagerMock . Object ) ;
69
+
70
+ var metadataManagerMock = new Mock < IFunctionMetadataManager > ( MockBehavior . Strict ) ;
71
+ FunctionMetadata metadata = null ;
72
+ metadataManagerMock . Setup ( m => m . TryGetFunctionMetadata ( "FunctionWithoutFile" , out metadata , false ) ) . Returns ( true ) ;
73
+ metadataManagerMock . Setup ( m => m . TryGetFunctionMetadata ( "TestFunction1" , out metadata , false ) ) . Returns ( true ) ;
74
+ // Function that has a physical file, but is loaded (safety net).
75
+ metadataManagerMock . Setup ( m => m . TryGetFunctionMetadata ( "TestFunction2" , out metadata , false ) ) . Returns ( false ) ;
76
+ metadataManagerMock . Setup ( m => m . TryGetFunctionMetadata ( "DNE" , out metadata , false ) ) . Returns ( false ) ;
77
+
78
+ _testController = new KeysController ( new OptionsWrapper < ScriptApplicationHostOptions > ( settings ) , new TestSecretManagerProvider ( _secretsManagerMock . Object ) , new LoggerFactory ( ) , fileSystem . Object , _functionsSyncManagerMock . Object , metadataManagerMock . Object , hostManagerMock . Object ) ;
69
79
70
80
var keys = new Dictionary < string , string >
71
81
{
@@ -79,6 +89,12 @@ public KeysControllerTests()
79
89
} ;
80
90
_secretsManagerMock . Setup ( p => p . GetFunctionSecretsAsync ( "TestFunction2" , false ) ) . ReturnsAsync ( keys ) ;
81
91
92
+ keys = new Dictionary < string , string >
93
+ {
94
+ { "key1" , "secret1" }
95
+ } ;
96
+ _secretsManagerMock . Setup ( p => p . GetFunctionSecretsAsync ( "FunctionWithoutFile" , false ) ) . ReturnsAsync ( keys ) ;
97
+
82
98
_secretsManagerMock . Setup ( p => p . GetFunctionSecretsAsync ( "DNE" , false ) ) . ReturnsAsync ( ( IDictionary < string , string > ) null ) ;
83
99
84
100
SetHttpContext ( ) ;
@@ -95,6 +111,17 @@ public async Task GetKeys_ReturnsKeys()
95
111
Assert . Equal ( "secret1" , keys [ 0 ] [ "value" ] ) ;
96
112
}
97
113
114
+ [ Fact ]
115
+ public async Task GetKeys_NoFileFunction_ReturnsKeys ( )
116
+ {
117
+ ObjectResult result = ( ObjectResult ) await _testController . Get ( "FunctionWithoutFile" ) ;
118
+
119
+ var content = ( JObject ) result . Value ;
120
+ var keys = content [ "keys" ] ;
121
+ Assert . Equal ( "key1" , keys [ 0 ] [ "name" ] ) ;
122
+ Assert . Equal ( "secret1" , keys [ 0 ] [ "value" ] ) ;
123
+ }
124
+
98
125
[ Fact ]
99
126
public async Task GetKeys_NotAFunction_ReturnsNotFound ( )
100
127
{
0 commit comments