Ejemplo n.º 1
0
        public void Find_RecordNotExists_ReturnsNull()
        {
            var cassette = new Cassette(Context.Cassette1);
            var record   = cassette.Find("wrong");

            Assert.IsNull(record);
        }
Ejemplo n.º 2
0
        public async Task <HttpResponseMessage> SendExplorerApiRequest(
            HttpMethod method,
            string endpoint,
            object?data,
            string testClassName,
            string vcrSessionName,
            VCRMode vcrMode = VCRMode.Record)
        {
            // For the explorer interactions, most of the times, we don't want to use the cache
            // So we set the default vcr mode to always record.
            var testConfig = GetTestConfig(testClassName, vcrSessionName, vcrMode);

            using var request = new HttpRequestMessage(method, endpoint);
            if (data != null)
            {
                request.Content = new StringContent(JsonSerializer.Serialize(data));
                request.Content.Headers.ContentType = new MediaTypeHeaderValue(System.Net.Mime.MediaTypeNames.Application.Json);
            }

            using var clientHandler = new HttpClientHandler();
            using var cassette      = new Cassette(testConfig.VcrCassettePath);
            using var handler       = new ReplayingHandler(
                      clientHandler,
                      testConfig.VcrMode,
                      cassette,
                      RecordingOptions.RecordAll);

            using var client = CreateDefaultClient(handler);

            return(await client.SendAsync(request));
        }
Ejemplo n.º 3
0
        public async Task GetUsersApi_InvokedOnFirstCallFromCassetteOnSecondCall_Success()
        {
            using var _ = TestServerHelper.BuildAndStartHost();

            var httpClientHandler = new SocketsHttpHandler();
            var innerHandler      = new StubHttpRequestHandler(httpClientHandler);
            var cassette          = new Cassette();
            var tryReplayHandler  = new TryReplayHttpMessageHandler(cassette, innerHandler);

            using var httpClient = new HttpClient(tryReplayHandler)
                  {
                      BaseAddress = _baseAddress
                  };
            await httpClient.GetStringAsync("/api/users/1");

            Assert.That(innerHandler.Invoked, Is.True);
            Assert.That(cassette.Records, Has.Count.EqualTo(1));

            innerHandler.Invoked = false;

            var result = await httpClient.GetStringAsync("/api/users/1");

            Assert.That(innerHandler.Invoked, Is.False);

            var actual   = JObject.Parse(result);
            var expected = JObject.Parse("{\"id\": 1, \"name\": \"User 1\"}");

            Assert.That(actual, Is.EqualTo(expected));
        }
Ejemplo n.º 4
0
        public async Task GetRedirectUsersApi_InvokedOnFirstCallFromCassetteOnSecondCall_Success()
        {
            using var _ = TestServerHelper.BuildAndStartHost();

            var httpClientHandler = new SocketsHttpHandler();
            var innerHandler      = new StubHttpRequestHandler(httpClientHandler);
            var cassette          = new Cassette();
            var tryReplayHandler  = new TryReplayHttpMessageHandler(cassette, innerHandler);

            using var httpClient = new HttpClient(tryReplayHandler)
                  {
                      BaseAddress = _baseAddress
                  };
            var response = await httpClient.GetAsync("/api/get_users/2");

            Assert.That(innerHandler.Invoked, Is.True);
            Assert.That(cassette.Records, Has.Count.EqualTo(1));
            Assert.That(response.RequestMessage.RequestUri, Is.EqualTo(new Uri(_baseAddress, "/api/users/2")));

            innerHandler.Invoked = false;

            response = await httpClient.GetAsync("/api/get_users/2");

            Assert.That(innerHandler.Invoked, Is.False);
            Assert.That(response.RequestMessage?.RequestUri, Is.EqualTo(new Uri(_baseAddress, "/api/users/2")));

            var actual   = JObject.Parse(await response.Content.ReadAsStringAsync());
            var expected = JObject.Parse("{\"id\": 2, \"name\": \"User 2\"}");

            Assert.That(actual, Is.EqualTo(expected));
        }
Ejemplo n.º 5
0
 void Trigger(Cassette controller)
 {
     if (controller)
     {
         controller.Trigger();
     }
 }
Ejemplo n.º 6
0
        public void Recording_PostEmptyContent_ContentLengthHeaderSaved()
        {
            var cassette = new Cassette(Context.CreateCassette("new"));

            player.Start();
            player.Load(cassette);
            player.Record("record1");

            using (var server = new Server(remoteAddress1))
            {
                Task.Run(() => server.Accept());

                var client = new Client(baseAddress);
                client.Send("/", "POST", headers: new NameValueCollection {
                    { "Content-Length", "0" }
                });
            }
            player.Stop();

            var record   = cassette.Find("record1");
            var mock     = (JObject)record.Read();
            var jrequest = (JObject)mock["request"];

            Assert.IsNull(jrequest["content"]);
            Assert.AreEqual("0", jrequest["headers"]["Content-Length"].ToString());
        }
        public async Task SendAsync_WithCookieContainerWithCookieInResponse_CookiesAddedToContainer()
        {
            var cassette = new Cassette();
            var record   = new CassetteRecord(
                new CassetteRecordRequest(
                    HttpMethod.Get.Method,
                    new Uri("http://*****:*****@"{""a"": 1, ""b"": 2}"));

            cassette.Add(record);

            var cookieContainer             = new CookieContainer();
            var replayingHttpMessageHandler = new PublicReplayingHttpMessageHandler(cassette, cookieContainer);

            var request = new HttpRequestMessage
            {
                Method     = HttpMethod.Get,
                Version    = new Version(1, 1),
                RequestUri = new Uri("http://localhost:8080/test"),
                Content    = null,
            };
            await replayingHttpMessageHandler.SendAsync(request, CancellationToken.None);

            Assert.That(cookieContainer.GetCookies(request.RequestUri)["value"]?.Value, Is.EqualTo("123"));
        }
Ejemplo n.º 8
0
        public void Save_FileExists_UpdatesToValidFile()
        {
            var cassette = new Cassette(Context.Cassette1);
            var record   = new Record("record");
            var request  = JObject.Parse("{\"request\":{},\"response\":{}}");

            record.Write(request);
            cassette.Save(record);

            var anotherCassette = new Cassette(cassette.Path);

            Assert.AreEqual(3, anotherCassette.Records.Count);

            var record1 = anotherCassette.Records[0];

            Assert.AreEqual("record1", record1.Name);
            Assert.AreEqual(3, record1.List.Count);

            var record2 = anotherCassette.Records[1];

            Assert.AreEqual("record2", record2.Name);
            Assert.AreEqual(1, record2.List.Count);

            var record3 = anotherCassette.Records[2];

            Assert.AreEqual("record", record3.Name);
            Assert.AreEqual(1, record.List.Count);
        }
Ejemplo n.º 9
0
        public void Initialize_FileNotExists_CreatesEmptyRecords()
        {
            var cassette = new Cassette(Context.CassetteNew);

            Assert.IsNotNull(cassette.Records);
            Assert.IsEmpty(cassette.Records);
        }
Ejemplo n.º 10
0
 public void OnCassetteInserted(Cassette c)
 {
     base.baseEntity.ClientRPC(null, "Client_OnCassetteInserted", c.net.ID);
     ServerTogglePlay(false);
     base.baseEntity.SendNetworkUpdate();
     SetFlag(BaseEntity.Flags.Reserved1, true);
 }
Ejemplo n.º 11
0
        public async Task ReplaceMatchingInteractionInCassetteFile()
        {
            var originalInteractionsInCassette = Cassette.ReadCassette(_testCassettePath).ToList();

            originalInteractionsInCassette.Count.ShouldBe(3);
            var originalRecordedTime1 = originalInteractionsInCassette.ElementAt(0).RecordedAt;
            var originalRecordedTime2 = originalInteractionsInCassette.ElementAt(1).RecordedAt;
            var originalRecordedTime3 = originalInteractionsInCassette.ElementAt(2).RecordedAt;

            var httpClient = HttpClients.NewHttpClient(_testCassettePath, ScotchMode.Recording);

            var albumService = new AlbumService(httpClient);
            var album        = await albumService.GetAsync(2);

            album.Id.ShouldBe(2);

            var newInteractionsInCassette = Cassette.ReadCassette(_testCassettePath).ToList();

            newInteractionsInCassette.Count.ShouldBe(3);

            var newRecordedTime1 = newInteractionsInCassette.ElementAt(0).RecordedAt;
            var newRecordedTime2 = newInteractionsInCassette.ElementAt(1).RecordedAt;
            var newRecordedTime3 = newInteractionsInCassette.ElementAt(2).RecordedAt;

            originalRecordedTime1.ShouldBe(newRecordedTime1);
            originalRecordedTime2.ShouldNotBe(newRecordedTime2);
            originalRecordedTime3.ShouldBe(newRecordedTime3);
        }
Ejemplo n.º 12
0
        public void Close_AfterRecorded_RewindsRecord()
        {
            var cassette = new Cassette(Context.CassetteNew);

            player.Start();
            player.Load(cassette);
            player.Record("record1");

            using (var server = new Server(remoteAddress1))
            {
                Task.Run(() => server.Accept());

                var client = new Client(baseAddress);
                client.Send("/path", "GET");

                player.Close();

                player = new Player(baseAddress, remoteAddress1);
                player.Start();
                player.Load(cassette);
                player.Play("record1");

                Assert.DoesNotThrow(() => client.Send("/path", "GET"));
            }
        }
        public async Task SendAsync_PostJsonContentRequest_Success()
        {
            var cassette = new Cassette();
            var request  = new HttpRequestMessage
            {
                Method     = HttpMethod.Post,
                RequestUri = new Uri("http://*****:*****@"{""a"":1, ""b"": 2}";
            var          handler = new PublicRecordingHttpMessageHandler(new MockHttpRequestHandler(new StringContent(body, Encoding.UTF8, "application/json")), cassette);
            await handler.SendAsync(request, CancellationToken.None);

            Assert.That(cassette.Records, Has.Count.EqualTo(1));
            Assert.That(cassette.Records[0].Request.Method, Is.EqualTo(request.Method.Method));
            Assert.That(cassette.Records[0].Request.Uri, Is.EqualTo(request.RequestUri));
            Assert.That(cassette.Records[0].Request.Headers, Has.Count.GreaterThanOrEqualTo(1));
            Assert.That(cassette.Records[0].Request.Headers["Content-Type"], Contains.Substring("application/json").And.Contains("charset=utf-8"));
            Assert.That(cassette.Records[0].Request.Headers["Host"], Is.EqualTo("localhost"));
            Assert.That(cassette.Records[0].Request.Body, Is.EqualTo(new StringCassetteBody("{}")));

            Assert.That(cassette.Records[0].Response.Version, Is.EqualTo(new Version(1, 1)));
            Assert.That(cassette.Records[0].Response.StatusCode, Is.EqualTo(200));
            Assert.That(cassette.Records[0].Response.Headers, Has.Count.EqualTo(2));
            Assert.That(cassette.Records[0].Response.Headers["Server"], Is.EqualTo("Test-Server"));
            Assert.That(cassette.Records[0].Response.Headers["Content-Type"], Contains.Substring("application/json").And.Contains("charset=utf-8"));
            Assert.That(cassette.Records[0].Response.Body, Is.EqualTo(new StringCassetteBody(body)));
        }
        public async Task SendAsync_WithCookieContainer_ShouldBeRecorderInRequest()
        {
            var baseUri         = new Uri("http://localhost:8080");
            var cookieContainer = new CookieContainer();

            cookieContainer.Add(baseUri, new Cookie("value", "123"));

            var cassette = new Cassette();
            var handler  = new PublicRecordingHttpMessageHandler(
                new MockHttpRequestHandler(new StringContent("{}", Encoding.UTF8, "application/json"))
            {
                CookieContainer = cookieContainer
            },
                cassette);

            HttpRequestMessage request = new HttpRequestMessage
            {
                Method     = HttpMethod.Get,
                RequestUri = new Uri(baseUri, "/api/data"),
            };
            await handler.SendAsync(request, CancellationToken.None);

            Assert.That(cassette.Records, Has.Count.EqualTo(1));
            Assert.That(cassette.Records[0].Request.Headers["Cookie"], Is.EqualTo(cookieContainer.GetCookieHeader(baseUri)));
        }
Ejemplo n.º 15
0
        public void OneTimeSetUp()
        {
            cassette = new Cassette($"{Context.AssemblyDirectoryName}/../../GithubClient/Tests/Mock/Http/Activity.json");

            Context.Player.Load(cassette);

            client = new Client(Context.Player.BaseAddress);
        }
Ejemplo n.º 16
0
        public void Find_RecordExists_ReturnsRecord()
        {
            var cassette = new Cassette(Context.Cassette1);
            var record   = cassette.Find("record1");

            Assert.IsNotNull(record);
            Assert.AreEqual("record1", record.Name);
            Assert.AreEqual(3, record.List.Count);
        }
Ejemplo n.º 17
0
        private int Cpu_ReadPort()
        {
            var data = 0x1F;

            if (!Cassette.ReadSenseBuffer())
            {
                data &= 0xEF;
            }
            return(data);
        }
Ejemplo n.º 18
0
        public async Task TestBooleanColumn()
        {
            using var testScope = fixture.PrepareExplorationTestScope(Cassette.GenerateVcrFilename(this));

            await testScope.RunAndCheckMetrics(
                "GiveMeSomeCredit",
                "loans",
                "SeriousDlqin2yrs",
                metrics => Assert.True(metrics.Any()));
        }
Ejemplo n.º 19
0
        public async Task TestDateColumn()
        {
            using var testScope = fixture.PrepareExplorationTestScope(Cassette.GenerateVcrFilename(this));

            await testScope.RunAndCheckMetrics(
                "gda_banking",
                "loans",
                "birthdate",
                metrics => Assert.True(metrics.Any()));
        }
Ejemplo n.º 20
0
        public async Task TestDatetimeColumn()
        {
            using var testScope = fixture.PrepareExplorationTestScope(Cassette.GenerateVcrFilename(this));

            await testScope.RunAndCheckMetrics(
                "gda_taxi",
                "rides",
                "pickup_datetime",
                metrics => Assert.True(metrics.Any()));
        }
Ejemplo n.º 21
0
        public CoProcessor(SDCart in_parent)
        {
            Cart = in_parent;

            m_function_groups    = new IFunctionGroup[CoProcessorConstants.FunctionGroupCount];
            m_function_groups[0] = new Cassette(this);

            CoProcessorRead  = null;
            CoProcessorWrite = null;
            Status           = CoProcessorConstants.ERR_OK;
        }
Ejemplo n.º 22
0
        public void Ctor_Records_NoRecords([Values(1, 5)] int count)
        {
            var records = Enumerable
                          .Range(0, count)
                          .Select(i => new CassetteRecord(
                                      new CassetteRecordRequest("GET", new Uri("http://localhost:8080/test"), new NameValueCollection()),
                                      new CassetteRecordResponse(new Version(1, 1), 204, "No Content", new NameValueCollection())));

            var cassette = new Cassette(records);

            Assert.That(cassette.Records, Has.Count.EqualTo(count));
        }
Ejemplo n.º 23
0
 private Cassette[] ExtractCassetteStatus(byte[] Data)
 {
     Cassette[] cassettes = new Cassette[3];
     try
     {
         if (Data != null && Data.Length > 0)
         {
             for (int i = 0; i < 3; i++)
             {
                 cassettes[i].cassetteId   = i + 1;
                 cassettes[i].billType     = (int)(Data[2 * i] & 0x1F);
                 cassettes[i].billNumber   = (int)Data[(2 * i) + 1];
                 cassettes[i].presence     = ((Data[2 * i] & 0x80) == 0x80) ? true : false;
                 cassettes[i].cassetteFull = ((Data[2 * i] & 0x40) == 0x40) ? true : false;
                 if ((Data[2 * i] & 0x1F) == 0x1F)
                 {
                     cassettes[i].cassetteStatus = CassetteStatus.NOT_ASSIGNED;
                 }
                 else if ((Data[2 * i] & 0x1F) == 0x18)
                 {
                     cassettes[i].cassetteStatus = CassetteStatus.ESCROW;
                     Constants.EscrowCassetteNo  = i + 1;
                 }
                 else
                 {
                     cassettes[i].cassetteStatus = CassetteStatus.NORMAL;
                     if (i == 0)
                     {
                         Constants.Cassette1Note     = cassettes[0].billType;
                         Constants.Cassette1NoteCont = cassettes[0].billNumber;
                     }
                     if (i == 1)
                     {
                         Constants.Cassette1Note     = cassettes[1].billType;
                         Constants.Cassette2NoteCont = cassettes[1].billNumber;
                     }
                     if (i == 2)
                     {
                         Constants.Cassette1Note     = cassettes[2].billType;
                         Constants.Cassette3NoteCont = cassettes[2].billNumber;
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         log.Error("Error BNRManager -> ExtractCassetteStatus() - " + ex.ToString());
     }
     Constants.CassettesInfo = cassettes;
     return(cassettes);
 }
        public async Task SendAsync_PostRequest_Success(Type cassetteBodyType)
        {
            var cassette = new Cassette();
            var record   = new CassetteRecord(
                new CassetteRecordRequest(
                    HttpMethod.Post.Method,
                    new Uri("http://*****:*****@"{""a"": 1, ""b"": 2}"));

            cassette.Add(record);

            var replayingHttpMessageHandler = new PublicReplayingHttpMessageHandler(cassette);
            var contentFactory = new Dictionary <Type, Func <HttpContent> >
            {
                { typeof(StringCassetteBody), () => new StringContent("{}") },
                { typeof(BytesCassetteBody), () => new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes("{}"))) },
            };
            var content = contentFactory[cassetteBodyType]();

            var request = new HttpRequestMessage
            {
                Method  = HttpMethod.Post,
                Headers =
                {
                    { "Cookie", "value=1" },
                },
                Version    = new Version(1, 1),
                RequestUri = new Uri("http://localhost:8080/test"),
                Content    = content,
            };
            var response = await replayingHttpMessageHandler.SendAsync(request, CancellationToken.None);

            Assert.That(response, Is.Not.Null);
            Assert.That(response.Version, Is.EqualTo(record.Response.Version));
            Assert.That(response.StatusCode, Is.EqualTo((HttpStatusCode)record.Response.StatusCode));
            Assert.That(response.ReasonPhrase, Is.EqualTo(record.Response.StatusMessage));
            Assert.That(response.RequestMessage, Is.Not.Null);
            Assert.That(response.Headers.GetValues("Server"), Is.EqualTo(new[] { record.Response.Headers["Server"] }));
        }
Ejemplo n.º 25
0
        public RecordingHttpMessageHandler(HttpMessageHandler innerHandler, Cassette cassette) : base(innerHandler)
        {
            var cookieContainerProperty = innerHandler.GetType().GetRuntimeProperty(nameof(HttpClientHandler.CookieContainer));

            if (cookieContainerProperty?.PropertyType == typeof(CookieContainer) && cookieContainerProperty.CanRead)
            {
                // Create Open Delegate from property getter method
                var cookieContainerGetter = cookieContainerProperty.GetMethod.CreateDelegate(typeof(Func <,>).MakeGenericType(innerHandler.GetType(), typeof(CookieContainer)));
                _innerHandlerCookieContainerGetter = () => (CookieContainer)cookieContainerGetter.DynamicInvoke(innerHandler);
            }

            _cassette = cassette;
        }
Ejemplo n.º 26
0
        public async void TestLastName()
        {
            using var scope = testFixture.SimpleComponentTestScope(
                      "gda_banking",
                      "cards",
                      "lastname",
                      Cassette.GenerateVcrFilename(this));

            await scope.ResultTest <EmailCheckComponent, bool>(Assert.False);

            await scope.ResultTest <TextGeneratorComponent, IEnumerable <string> >(result =>
                                                                                   Assert.True(result.All(v => v.Length >= 3)));
        }
Ejemplo n.º 27
0
        public async Task <TestScope> CreateTestScope(
            string dataSource,
            string table,
            IEnumerable <string> columns,
            object caller,
            [CallerMemberName] string callerMemberName = "")
        {
            var vcrFileName = Cassette.GenerateVcrFilename(caller, callerMemberName);
            var columnInfo  = await GetColumnInfo(dataSource, table, columns).Collect();

            var samplesToPublish = Config.Get <ExplorerOptions>().DefaultSamplesToPublish;

            return(new TestScope(Container, ApiUri, dataSource, table, columns, columnInfo, vcrFileName, samplesToPublish));
        }
Ejemplo n.º 28
0
        public void Save_RewindsRecord()
        {
            var cassette = new Cassette(Context.Cassette1);
            var record   = new Record("record");

            cassette.Save(record);

            var record1 = cassette.Records[0];
            var req1    = record1.Read();
            var req2    = record1.Read();

            Assert.IsNotNull(req1);
            Assert.IsNotNull(req2);
        }
Ejemplo n.º 29
0
        public async Task TestMultiColumn()
        {
            using var testScope = fixture.PrepareExplorationTestScope(Cassette.GenerateVcrFilename(this));

            await testScope.RunAndCheckMetrics(
                "gda_banking",
                "loans",
                new[] { "firstname", "duration" },
                metrics =>
            {
                Assert.True(metrics["firstname"].Any());
                Assert.True(metrics["duration"].Any());
                Assert.True(metrics.Count == 2);
            });
        }
Ejemplo n.º 30
0
        public void Initialize_ValidFile_LoadsRecords()
        {
            var cassette = new Cassette(Context.Cassette1);

            Assert.AreEqual(2, cassette.Records.Count);

            var record1 = cassette.Records[0];

            Assert.AreEqual("record1", record1.Name);
            Assert.AreEqual(3, record1.List.Count);

            var record2 = cassette.Records[1];

            Assert.AreEqual("record2", record2.Name);
            Assert.AreEqual(1, record2.List.Count);
        }