示例#1
0
        public void CanHandle_WithValidInput_ReturnsTrue()
        {
            ArrangeInputs(parseResultSections: "set header name",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            bool?            result           = setHeaderCommand.CanHandle(shellState, httpState, parseResult);

            Assert.True(result);
        }
示例#2
0
        public void GetHelpSummary_ReturnsDescription()
        {
            ArrangeInputs(parseResultSections: string.Empty,
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult _);

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            string           result           = setHeaderCommand.GetHelpSummary(shellState, httpState);

            Assert.Equal(setHeaderCommand.Description, result);
        }
示例#3
0
        public void CanHandle_WithFirstParseResultSectionNotEqualToName_ReturnsNull()
        {
            ArrangeInputs(parseResultSections: "test header name",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand(new NullTelemetry());
            bool?            result           = setHeaderCommand.CanHandle(shellState, httpState, parseResult);

            Assert.Null(result);
        }
示例#4
0
        public void CanHandle_WithSecondParseResultSectionNotEqualToSubCommand_ReturnsNull()
        {
            ArrangeInputs(parseResultSections: "set base name",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            bool?            result           = setHeaderCommand.CanHandle(shellState, httpState, parseResult);

            Assert.Null(result);
        }
示例#5
0
        public void CanHandle_WithParseResultSectionsLessThanTwo_ReturnsNull()
        {
            ArrangeInputs(parseResultSections: "set",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            bool?            result           = setHeaderCommand.CanHandle(shellState, httpState, parseResult);

            Assert.Null(result);
        }
示例#6
0
        public void Suggest_WithNoParseResultSections_ReturnsName()
        {
            ArrangeInputs(parseResultSections: string.Empty,
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            SetHeaderCommand     setHeaderCommand = new SetHeaderCommand();
            IEnumerable <string> suggestions      = setHeaderCommand.Suggest(shellState, httpState, parseResult);

            Assert.Single(suggestions);
            Assert.Equal("set", suggestions.First());
        }
示例#7
0
        public void GetHelpDetails_ReturnsHelpDetails()
        {
            ArrangeInputs(parseResultSections: "set header",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            string expected = "\u001b[1mUsage: \u001b[39mset header {name} [value]" + Environment.NewLine + Environment.NewLine + "Sets or clears a header. When [value] is empty the header is cleared." + Environment.NewLine;

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            string           result           = setHeaderCommand.GetHelpDetails(shellState, httpState, parseResult);

            Assert.Equal(expected, result);
        }
示例#8
0
        public void Suggest_WithMoreThanTwoParseResultSectionsAndSelectedSectionGreaterThanTwo_ReturnsHeaderCompletion()
        {
            ArrangeInputs(parseResultSections: "set header O",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult,
                          caretPosition: 12);

            SetHeaderCommand     setHeaderCommand = new SetHeaderCommand();
            IEnumerable <string> suggestions      = setHeaderCommand.Suggest(shellState, httpState, parseResult);

            Assert.Single(suggestions);
            Assert.Equal("Origin", suggestions.First());
        }
示例#9
0
        public void Suggest_WithOneParseResultSectionAndSelectedSectionGreaterThanZero_ReturnsName()
        {
            ArrangeInputs(parseResultSections: "set",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult,
                          caretPosition: 3);

            SetHeaderCommand     setHeaderCommand = new SetHeaderCommand();
            IEnumerable <string> suggestions      = setHeaderCommand.Suggest(shellState, httpState, parseResult);

            Assert.Single(suggestions);
            Assert.Equal("set", suggestions.First());
        }
示例#10
0
        public async Task ExecuteAsync_WithExactlyThreeValidParseResultSections_DoesNotUpdateHeaders()
        {
            ArrangeInputs(parseResultSections: "set header test",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            await setHeaderCommand.ExecuteAsync(shellState, httpState, parseResult, CancellationToken.None);

            Dictionary <string, IEnumerable <string> >   headers     = httpState.Headers;
            KeyValuePair <string, IEnumerable <string> > firstHeader = headers.First();

            Assert.Single(httpState.Headers);
            Assert.Equal("User-Agent", firstHeader.Key);
            Assert.Equal("HTTP-REPL", firstHeader.Value.First());
        }
示例#11
0
        public async Task ExecuteAsync_WithUnknownHeader_SendsTelemetryWithHashedHeaderName()
        {
            ArrangeInputs(parseResultSections: "set header name value",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            TelemetryCollector telemetry = new TelemetryCollector();

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand(telemetry);
            await setHeaderCommand.ExecuteAsync(shellState, httpState, parseResult, CancellationToken.None);

            Assert.Single(telemetry.Telemetry);
            TelemetryCollector.CollectedTelemetry collectedTelemetry = telemetry.Telemetry[0];
            Assert.Equal("SetHeader", collectedTelemetry.EventName);
            Assert.Equal(Sha256Hasher.Hash("name"), collectedTelemetry.Properties["HeaderName"]);
            Assert.Equal("False", collectedTelemetry.Properties["IsValueEmpty"]);
        }
示例#12
0
        public void Suggest_WithMoreThanThreeParseResultSectionsAndNoMatchingCompletions_ReturnsNothing()
        {
            ArrangeInputs(parseResultSections: "set header CONTENT-TYPE z",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult,
                          caretPosition: 25);

            IDirectoryStructure directoryStructure = GetDirectoryStructure("testMethod", "testContentType", "testBody");

            httpState.Structure   = directoryStructure;
            httpState.BaseAddress = new Uri("http://localhost:5050/");

            SetHeaderCommand     setHeaderCommand = new SetHeaderCommand();
            IEnumerable <string> suggestions      = setHeaderCommand.Suggest(shellState, httpState, parseResult);

            Assert.Empty(suggestions);
        }
示例#13
0
        public void Suggest_WithMoreThanThreeParseResultSectionsAndSelectedSectionAtThree_ReturnsValueCompletion()
        {
            ArrangeInputs(parseResultSections: "set header CONTENT-TYPE t",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult,
                          caretPosition: 25);

            IDirectoryStructure directoryStructure = GetDirectoryStructure("testMethod", "testContentType", "testBody");

            httpState.Structure   = directoryStructure;
            httpState.BaseAddress = new Uri("http://localhost:5050/");

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            List <string>    suggestions      = setHeaderCommand.Suggest(shellState, httpState, parseResult).ToList();

            Assert.Single(suggestions);
            Assert.Equal("testContentType", suggestions.First());
        }
示例#14
0
        public async Task ExecuteAsync_WithMoreThanThreeValidParseResultSections_AddsEntryToHeaders()
        {
            ArrangeInputs(parseResultSections: "set header name value1 value2",
                          out MockedShellState shellState,
                          out HttpState httpState,
                          out ICoreParseResult parseResult);

            SetHeaderCommand setHeaderCommand = new SetHeaderCommand();
            await setHeaderCommand.ExecuteAsync(shellState, httpState, parseResult, CancellationToken.None);

            Dictionary <string, IEnumerable <string> > headers = httpState.Headers;

            Assert.Equal(2, httpState.Headers.Count);

            Assert.True(headers.ContainsKey("User-Agent"));
            Assert.True(headers.ContainsKey("name"));

            headers.TryGetValue("User-Agent", out IEnumerable <string> userAgentHeaderValues);
            headers.TryGetValue("name", out IEnumerable <string> nameHeaderValues);

            Assert.Contains("HTTP-REPL", userAgentHeaderValues);
            Assert.Contains("value1", nameHeaderValues);
            Assert.Contains("value2", nameHeaderValues);
        }