Esempio n. 1
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_key);

            testCaseContext.DescriptionWriter.AddNote("AssertItem", $"{effectiveItemKey}");
            testCaseContext.AssertContent(testCaseContext.GetRequiredItem(effectiveItemKey), _path);
        }
Esempio n. 2
0
        public async Task ExecuteAsync(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_itemKey);

            testCaseContext.DescriptionWriter.AddNote("AssertContent", $"{effectiveItemKey} => file:{_fileName}");

            var token = testCaseContext.GetRequiredItemAsJToken(_itemKey);

            if (!string.IsNullOrEmpty(_jsonPath))
            {
                var jsonPath = testCaseContext.Resolve(_jsonPath);
                token = new JArray(token.SelectTokens(jsonPath));
            }


            if (_replaceGroups != null)
            {
                token = token.DeepClone();

                var groups = await testCaseContext.TestCase.GetObjectFromJsonAsync <Dictionary <string, IReadOnlyCollection <string> > >(_replaceGroups);

                testCaseContext.ReplaceTokens(token, groups);
            }

            await testCaseContext.AssertContentAsync(token, _fileName);
        }
Esempio n. 3
0
        public void Get_Error()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new LocaleController(
                context.Logger,
                context.SessionManager);

            Mock.Get(context.Session.LocaleManager).Setup(
                m => m.GetLocale())
            .Throws(new Exception("message"));

            // Act
            var actionResult = sut.Get(context.Session.Id);

            // Assert
            Assert.NotNull(actionResult);
            var objectResult = actionResult.Result as ObjectResult;

            Assert.NotNull(objectResult);
            Assert.Equal(500, objectResult.StatusCode);
            var result = objectResult.Value as ApiResponse <GetLocaleResponse>;

            Assert.NotNull(result);
            Assert.False(result.Success);
            Assert.NotNull(result.Error);
            Assert.Null(result.Payload);
        }
Esempio n. 4
0
        public void Get_Success()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new LocaleController(
                context.Logger,
                context.SessionManager);

            var locale = "ru-ru";

            Mock.Get(context.Session.LocaleManager).Setup(
                m => m.GetLocale())
            .Returns(locale);

            // Act
            var actionResult = sut.Get(context.Session.Id);

            // Assert
            Assert.NotNull(actionResult);
            var objectResult = actionResult.Result as ObjectResult;

            Assert.NotNull(objectResult);
            Assert.Equal(200, objectResult.StatusCode);
            var result = objectResult.Value as ApiResponse <GetLocaleResponse>;

            Assert.NotNull(result);
            Assert.True(result.Success);
            Assert.Null(result.Error);
            var payload = result.Payload;

            Assert.NotNull(payload);
            Assert.Equal(locale, payload.Locale);
        }
        public async Task Get_Error()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new VarsController(
                context.Logger,
                context.SessionManager);

            Mock.Get(context.Session.VarsManager).Setup(
                m => m.GetAllVars(true))
            .Throws(new Exception("message"));

            // Act
            var actionResult = await sut.Get(
                context.Session.Id,
                CancellationToken.None);

            // Assert
            Assert.NotNull(actionResult);
            var objectResult = actionResult.Result as ObjectResult;

            Assert.NotNull(objectResult);
            Assert.Equal(500, objectResult.StatusCode);
            var result = objectResult.Value as ApiResponse <GetVarsResponse>;

            Assert.NotNull(result);
            Assert.False(result.Success);
            Assert.NotNull(result.Error);
            Assert.Null(result.Payload);
        }
Esempio n. 6
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_key);

            testCaseContext.DescriptionWriter.AddNote("UseItemKey", $"{effectiveItemKey}");
            testCaseContext.SetItemKey(effectiveItemKey);
        }
        public async Task Image_Success()
        {
            // Arrange
            var context = new TestCaseContext(AssetType.Image, Result.Success);
            var sut     = new AssetsController(
                context.Logger,
                context.SessionManager);

            // Act
            var actionResult = await sut.Image(
                context.Session.Id,
                ApiRequest <GetAssetRequest> .Make(new GetAssetRequest {
                Key = context.AssetKey
            }),
                CancellationToken.None);

            // Assert
            Assert.NotNull(actionResult);
            var objectResult = actionResult.Result as ObjectResult;

            Assert.NotNull(objectResult);
            Assert.Equal(200, objectResult.StatusCode);
            var result = objectResult.Value as ApiResponse <ImageAssetResponse>;

            Assert.NotNull(result);
            Assert.True(result.Success);
            Assert.Null(result.Error);
            var payload = result.Payload;

            Assert.NotNull(payload);
            Assert.Equal(context.AssetKey, payload.Key);
            Assert.Equal(context.Asset.Descriptor.MediaType, payload.MediaType);
            Assert.Equal(context.Asset.Descriptor.SourceUrl, payload.SourceUrl);
        }
Esempio n. 8
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_key);

            testCaseContext.DescriptionWriter.AddNote("SaveItem", $"{effectiveItemKey} => file: {_path}");
            testCaseContext.TestCase.PutContent(_path, testCaseContext.GetRequiredItem(effectiveItemKey));
        }
Esempio n. 9
0
        public void GetAllVars()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new VarsManager(
                context.OptionsService,
                context.Logger);

            var random = new Random();

            int varsCount = 5;
            var vars      = new List <IVar>();

            for (int i = 0; i < varsCount; ++i)
            {
                vars.Add(new IntVar(
                             $"key{i}",
                             $"var-name{i}",
                             random.Next(-100, 100)));
            }

            // Act
            foreach (var v in vars)
            {
                sut.AddVar(v);
            }
            var actual = sut.GetAllVars();

            // Assert
            Assert.Equal(vars, actual);
        }
        public async Task ApplyTransition_NextStateKeyOverride()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new StateMachineManager(
                context.OptionsService,
                context.Logger,
                context.DataService);

            Mock.Get(context.DataService).Setup(
                m => m.RunOnTransitionScript(context.InitialState, context.Transition, It.IsAny <CancellationToken>()))
            .ReturnsAsync(new OnTransitionOutput {
                NextStateKeyOverride = context.State2Key
            });

            // Act
            await sut.SetInitialState();

            await sut.ApplyTransition(context.TransitionKey);

            var currentState = sut.GetCurrentState();

            // Assert
            Assert.Same(context.State2, currentState);

            Mock.Get(context.DataService).Verify(
                m => m.RunOnTransitionScript(context.InitialState, context.Transition, It.IsAny <CancellationToken>()),
                Times.Once);
            Mock.Get(context.DataService).Verify(
                m => m.RunOnLeaveStateScript(context.InitialState, It.IsAny <CancellationToken>()),
                Times.Once);
            Mock.Get(context.DataService).Verify(
                m => m.RunOnEnterStateScript(context.State2, It.IsAny <CancellationToken>()),
                Times.Once);
        }
        public async Task SetCurrentState(bool leaveCurrentState)
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new StateMachineManager(
                context.OptionsService,
                context.Logger,
                context.DataService);

            // Act
            await sut.SetInitialState();

            await sut.SetCurrentState(context.State1Key, leaveCurrentState);

            var currentState = sut.GetCurrentState();

            // Assert
            Assert.Same(context.State1, currentState);
            var times = leaveCurrentState ? Times.Once() : Times.Never();

            Mock.Get(context.DataService).Verify(
                m => m.RunOnLeaveStateScript(context.InitialState, It.IsAny <CancellationToken>()),
                times);
            Mock.Get(context.DataService).Verify(
                m => m.RunOnEnterStateScript(context.State1, It.IsAny <CancellationToken>()),
                Times.Once);
        }
Esempio n. 12
0
        public void Post_Success()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new PingController(
                context.Logger,
                context.SessionManager);

            // Act
            var actionResult = sut.Post(context.Session.Id);

            // Assert
            Assert.NotNull(actionResult);
            var objectResult = actionResult.Result as ObjectResult;

            Assert.NotNull(objectResult);
            Assert.Equal(200, objectResult.StatusCode);
            var result = objectResult.Value as ApiResponse <EmptyPayload>;

            Assert.NotNull(result);
            Assert.True(result.Success);
            Assert.Null(result.Error);
            var payload = result.Payload;

            Assert.Null(payload);

            Mock.Get(context.SessionManager).Verify(
                m => m.PingSession(context.Session.Id),
                Times.Once);
        }
Esempio n. 13
0
        public void Init()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new VarsManager(
                context.OptionsService,
                context.Logger);

            var userName = "******";
            var vars     = new List <IVar>
            {
                new IntVar("v1", "v1-name", 0),
                new IntVar("v2", "v2-name", 1),
                new IntVar("v3", "v3-name", 2),
            };

            // Act
            sut.Init(userName, vars);
            var allVars     = sut.GetAllVars();
            var userNameVar = sut.GetVar <StringVar>(context.Options.UserNameVarKey);

            // Assert
            Assert.Equal(vars.Count + 1, allVars.Count());
            Assert.Equal(userName, userNameVar.Value);
        }
Esempio n. 14
0
        public override void Execute(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_key);
            var item             = testCaseContext.GetRequiredItem(effectiveItemKey);

            testCaseContext.Logger.LogInformation(item);
        }
        public async Task Image_Exception_ApiError()
        {
            // Arrange
            var context = new TestCaseContext(AssetType.Image, Result.ApiError);
            var sut     = new AssetsController(
                context.Logger,
                context.SessionManager);

            // Act
            var actionResult = await sut.Image(
                context.Session.Id,
                ApiRequest <GetAssetRequest> .Make(new GetAssetRequest {
                Key = context.AssetKey
            }),
                CancellationToken.None);

            // Assert
            Assert.NotNull(actionResult);
            var objectResult = actionResult.Result as ObjectResult;

            Assert.NotNull(objectResult);
            Assert.Equal(500, objectResult.StatusCode);
            var result = objectResult.Value as ApiResponse <ImageAssetResponse>;

            Assert.NotNull(result);
            Assert.False(result.Success);
            Assert.NotNull(result.Error);
            Assert.Null(result.Payload);
        }
Esempio n. 16
0
        public async Task ExecuteAsync(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_itemKey);

            testCaseContext.DescriptionWriter.AddNote("AssertContentDiff", $"{effectiveItemKey} => file: {_diffName}, base: {_baseFile}");

            var actual = testCaseContext.GetRequiredItemAsJToken(effectiveItemKey);

            if (!string.IsNullOrEmpty(_jsonPath))
            {
                actual = new JArray(actual.SelectTokens(_jsonPath));
            }

            var testCase     = testCaseContext.TestCase;
            var expectedBase = await testCase.GetObjectFromJsonAsync <JToken>(_baseFile);

            var diffs = JsonPatchCreator.Compare(expectedBase, actual, _tokenSelectorProvider);

            (var mismatches, var expected) = await testCase.CompareAndRebaseAsync(actual, expectedBase, diffs, _diffName, _tokenSelectorProvider, testCaseContext.Options.IsRebaseline());

            if (mismatches.Count > 0)
            {
                var matchedDiffCategories = testCaseContext.GetDiffCategories(actual, expected, _categoriesFile);
                throw new AssertException("Unexpected token changes:" + string.Join("\n", mismatches.Select(d => d.JsonPath)), matchedDiffCategories);
            }
        }
Esempio n. 17
0
        public async Task ExecuteAsync(TestCaseContext testCaseContext)
        {
            var actionUrls = await testCaseContext.TestCase.GetObjectFromJsonAsync <string[]>(_path);

            var actionDefs = actionUrls.Select(DataStoreBasedTestStorage.ParseUrl).ToList();
            await testCaseContext.ExecuteActionsAsync(_pipelineActionFactory, actionDefs, testCaseContext.Options.GetDeferExceptions(), testCaseContext.Logger);
        }
Esempio n. 18
0
        public void Execute(TestCaseContext testCaseContext)
        {
            testCaseContext.DescriptionWriter.AddNote("HttpPostMany", _url);
            var httpClient = testCaseContext.GetRequiredItem <HttpClient>(_httpClientKey);
            var responses  = _bodyFunc(testCaseContext.TestCase, testCaseContext).Select(body => httpClient.PostEnsureSuccess(_url, body, testCaseContext.Logger)).ToList();

            testCaseContext.SetItem(_targetKey, responses);
        }
Esempio n. 19
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var url = testCaseContext.Resolve(_url);

            testCaseContext.DescriptionWriter.AddNote("HttpDelete", url);
            var httpClient = testCaseContext.GetRequiredItem <HttpClient>(_httpClientKey);

            httpClient.DeleteEnsureSuccess(url, testCaseContext.Logger);
        }
Esempio n. 20
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var effectiveSourceKey = testCaseContext.GetEffectiveItemKey(_sourceKey);
            var effectiveTargetKey = testCaseContext.GetEffectiveItemKey(_targetKey);

            testCaseContext.DescriptionWriter.AddNote("ToJToken", $"{effectiveSourceKey} => {effectiveTargetKey}");
            string content = testCaseContext.GetRequiredItem <string>(effectiveSourceKey);

            testCaseContext.SetItem(effectiveTargetKey, JToken.Parse(content));
        }
Esempio n. 21
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var url = testCaseContext.Resolve(_url);

            testCaseContext.DescriptionWriter.AddNote("HttpPut", url);
            var body       = _bodyFunc(testCaseContext.TestCase, testCaseContext);
            var httpClient = testCaseContext.GetRequiredItem <HttpClient>(_httpClientKey);

            testCaseContext.SetItem(_targetKey, httpClient.PutEnsureSuccess(url, body, testCaseContext.Logger));
        }
Esempio n. 22
0
        public void RemoveVar_NotFound_Throws()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new VarsManager(
                context.OptionsService,
                context.Logger);

            // Act + Assert
            Assert.Throws <VarNotFoundException>(() => sut.RemoveVar("key"));
        }
Esempio n. 23
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var effectiveSourceKey = testCaseContext.GetEffectiveItemKey(_sourceKey);
            var effectiveTargetKey = testCaseContext.GetEffectiveItemKey(_targetKey);
            var jsonPath           = testCaseContext.Resolve(_jsonPath);

            testCaseContext.DescriptionWriter.AddNote("JsonPathSelect", $"{effectiveSourceKey} [{jsonPath}] => {effectiveTargetKey}");
            var itemToken = testCaseContext.GetRequiredItemAsJToken(effectiveSourceKey);
            var result    = itemToken.SelectToken(jsonPath);

            testCaseContext.SetItem(effectiveTargetKey, result);
        }
Esempio n. 24
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_key);

            var value = _resolve
                ? testCaseContext.Resolve(_value)
                : _value;

            testCaseContext.DescriptionWriter.AddNote("SetItem", $"{effectiveItemKey} = {value}");

            testCaseContext.SetItem(effectiveItemKey, value);
        }
        public async Task ApplyTransition_NoState_Throws()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new StateMachineManager(
                context.OptionsService,
                context.Logger,
                context.DataService);

            // Act + Assert
            await Assert.ThrowsAsync <InvalidOperationException>(
                () => sut.ApplyTransition(context.TransitionKey));
        }
Esempio n. 26
0
        public void Execute(TestCaseContext testCaseContext)
        {
            var effectiveItemKey = testCaseContext.GetEffectiveItemKey(_key);

            testCaseContext.DescriptionWriter.AddNote("LoadItem", $"file:{_path} => {effectiveItemKey}");
            var content = testCaseContext.TestCase.GetContent(_path);

            if (_resolve)
            {
                content = testCaseContext.Resolve(content);
            }

            testCaseContext.SetItem(effectiveItemKey, content);
        }
Esempio n. 27
0
        public void StartingLocale()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new LocaleManager(
                context.OptionsService,
                context.Logger);

            // Act
            var actual = sut.GetLocale();

            // Assert
            Assert.Equal(context.Options.StartingLocale, actual);
        }
Esempio n. 28
0
        public void AddVar_SameVar_Throws()
        {
            // Arrange
            var context = new TestCaseContext();
            var sut     = new VarsManager(
                context.OptionsService,
                context.Logger);

            var key  = "var";
            var aVar = new IntVar(key, "var-name", 15);

            // Act + Assert
            sut.AddVar(aVar);
            Assert.Throws <VarAlreadyExistsException>(() => sut.AddVar(aVar));
        }
Esempio n. 29
0
        public void JsonEditAction_ResolvesToken()
        {
            var context = new TestCaseContext(null, null, null, new XDocumentDescriptionWriter(null), new ItemsHolder(null));

            context.SetItem("v", "a value");
            var key = context.GetItemKey();

            context.SetItem(key, "{'abc':1}");

            var action1 = new JsonEditAction("$.abc", "'some text ${v}.'");

            action1.Execute(context);

            Assert.That(context.GetItem <JToken>(key), Is.EqualTo(JValue.Parse("{'abc':'some text a value.'}")));
        }
        public void EncodeToString(byte[] data, string expected)
        {
            // Arrange
            var context = new TestCaseContext();

            var sut = new StringEncoder(
                context.Options,
                context.Logger);

            // Act
            var result = sut.EncodeToString(data);

            // Assert
            Assert.Equal(expected, result);
        }