Esempio n. 1
0
        public void GetUrl_GeneratesIdentifiableSystemSecret()
        {
            string secretValue = string.Empty;

            var webHookProvider = CreateDefaultScriptWebHookProvider(out Mock <ISecretManager> mockSecretManager, out HostSecretsInfo hostSecrets);

            mockSecretManager.Setup(p => p.GetHostSecretsAsync()).ReturnsAsync(hostSecrets);

            mockSecretManager.Setup(p =>
                                    p.AddOrUpdateFunctionSecretAsync(
                                        "testextension_extension",
                                        It.IsAny <string>(),
                                        HostKeyScopes.SystemKeys,
                                        ScriptSecretsType.Host))
            .Callback <string, string, string, ScriptSecretsType>((key, secret, scope, type) => secretValue = secret)
            .Returns(() => Task.FromResult(new KeyOperationResult(secretValue, OperationResult.Created)));

            // When an extension has no existing secret, one should be generated using
            // the Azure Functions system key seed and standard fixed signature.

            var configProvider = new TestExtensionConfigProvider();
            var url            = webHookProvider.GetUrl(configProvider);

            Assert.Equal($"{TestUrlRoot}{secretValue}", url.ToString());
            Assert.True(IdentifiableSecrets.ValidateBase64Key(secretValue,
                                                              SecretGenerator.SystemKeySeed,
                                                              SecretGenerator.AzureFunctionsSignature,
                                                              encodeForUrl: true));
        }
Esempio n. 2
0
        public void GetUrl_ReturnsExpectedResult()
        {
            _hostSecrets.SystemKeys = new Dictionary <string, string>
            {
                { "testextension_extension", "abc123" }
            };

            var configProvider = new TestExtensionConfigProvider();
            var url            = _webHookProvider.GetUrl(configProvider);

            Assert.Equal("https://test.azurewebsites.net/runtime/webhooks/testextension?code=abc123", url.ToString());
        }
Esempio n. 3
0
        public void GetUrl_ReturnsExpectedResult()
        {
            var webHookProvider = CreateDefaultScriptWebHookProvider(out Mock <ISecretManager> mockSecretManager, out HostSecretsInfo hostSecrets);

            mockSecretManager.Setup(p => p.GetHostSecretsAsync()).ReturnsAsync(hostSecrets);

            // When an extension has an existing secret, it should be returned.
            hostSecrets.SystemKeys = new Dictionary <string, string>
            {
                { "testextension_extension", "abc123" }
            };

            var configProvider = new TestExtensionConfigProvider();
            var url            = webHookProvider.GetUrl(configProvider);

            Assert.Equal($"{TestUrlRoot}abc123", url.ToString());
        }
        public void GetUrl_ReturnsExpectedResult()
        {
            _hostSecrets.SystemKeys = new Dictionary <string, string>
            {
                { "testextension_extension", "abc123" }
            };

            var vars = new Dictionary <string, string>
            {
                { EnvironmentSettingNames.AzureWebsiteHostName, "test.azurewebsites.net" }
            };

            using (var env = new TestScopedEnvironmentVariable(vars))
            {
                var configProvider = new TestExtensionConfigProvider();
                var url            = _webHookProvider.GetUrl(configProvider);
                Assert.Equal("https://test.azurewebsites.net/runtime/webhooks/testextension?code=abc123", url.ToString());
            }
        }