예제 #1
0
        public void UnitTests_Fax_SendMultipleFilesNoOptions()
        {
            var testToNumber = "8088675309";

            Action <IRestRequest> requestAsserts = req =>
            {
                var parameters = ParametersHelper.ToDictionary(req.Parameters);

                Assert.AreEqual(testToNumber, parameters["to[]"]);

                Assert.AreEqual(3, parameters.Count());
            };

            var clientBuilder = new IRestClientBuilder {
                Op = "send", RequestAsserts = requestAsserts
            };
            var phaxio = new PhaxioClient(IRestClientBuilder.TEST_KEY, IRestClientBuilder.TEST_SECRET, clientBuilder.Build());

            var testFile = BinaryFixtures.getTestPdfFile();

            var result = phaxio.SendFax(testToNumber, new List <FileInfo> {
                testFile, testFile
            });

            Assert.AreEqual("1234", result.Id, "FaxId should be the same.");
        }
예제 #2
0
        public void UnitTests_Fax_DownloadFax_WithOptions()
        {
            Action <IRestRequest> requestAsserts = req =>
            {
                var parameters = ParametersHelper.ToDictionary(req.Parameters);

                Assert.AreEqual(parameters["id"], "1234");
                Assert.AreEqual(parameters["type"], "l");
            };

            var clientBuilder = new IRestClientBuilder {
                Op = "faxFile", RequestAsserts = requestAsserts
            };

            var phaxio = new PhaxioClient(IRestClientBuilder.TEST_KEY, IRestClientBuilder.TEST_SECRET, clientBuilder.BuildUntyped());

            var testPdf = BinaryFixtures.getTestPdfFile();

            var pdfBytes = phaxio.DownloadFax("1234", "l");

            Assert.IsNotEmpty(pdfBytes);

            var expectedPdf = BinaryFixtures.GetTestPdf();

            Assert.AreEqual(expectedPdf, pdfBytes, "PDFs should be the same.");
        }
예제 #3
0
        public void UnitTests_Fax_SendSingleWithTags()
        {
            var testToNumber = "8088675309";
            var testOptions  = new FaxOptions
            {
                Tags = new Dictionary <string, string> {
                    { "key1", "value1" }, { "key2", "value2" }
                }
            };

            Action <IRestRequest> requestAsserts = req =>
            {
                var parameters = ParametersHelper.ToDictionary(req.Parameters);

                Assert.AreEqual(testToNumber, parameters["to[]"]);

                foreach (var pair in testOptions.Tags)
                {
                    var tagKey = "tag[" + pair.Key + "]";
                    Assert.IsTrue(parameters.ContainsKey(tagKey));
                    Assert.AreEqual(pair.Value, parameters[tagKey]);
                }
            };

            var clientBuilder = new IRestClientBuilder {
                Op = "send", RequestAsserts = requestAsserts
            };
            var phaxio = new PhaxioClient(IRestClientBuilder.TEST_KEY, IRestClientBuilder.TEST_SECRET, clientBuilder.Build());

            var testFile = BinaryFixtures.getTestPdfFile();

            var result = phaxio.SendFax(testToNumber, testFile, testOptions);

            Assert.AreEqual("1234", result.Id, "FaxId should be the same.");
        }
예제 #4
0
        public void UnitTests_GetHostedDocument_WithMetadata()
        {
            var metadata = "key";
            var filename = "hostedoc.pdf";

            Action <IRestRequest> requestAsserts = req =>
            {
                var parameters = ParametersHelper.ToDictionary(req.Parameters);

                Assert.AreEqual(parameters["name"], filename);
                Assert.AreEqual(parameters["metadata"], metadata);
            };

            var clientBuilder = new IRestClientBuilder {
                Op = "getHostedDocument", RequestAsserts = requestAsserts
            };

            var phaxio = new PhaxioClient(IRestClientBuilder.TEST_KEY, IRestClientBuilder.TEST_SECRET, clientBuilder.BuildUntyped());

            var testPdf = BinaryFixtures.getTestPdfFile();

            var pdfBytes = phaxio.GetHostedDocument(filename, metadata: metadata);

            Assert.IsNotEmpty(pdfBytes);

            var expectedPdf = BinaryFixtures.GetTestPdf();

            Assert.AreEqual(expectedPdf, pdfBytes, "PDFs should be the same.");
        }
예제 #5
0
        public void UnitTests_Fax_SendSingleFileSomeOptions()
        {
            var testToNumber = "8088675309";
            var testOptions  = new FaxOptions
            {
                HeaderText     = "headertext",
                StringData     = "somedata",
                StringDataType = "html",
                IsBatch        = true
            };

            Action <IRestRequest> requestAsserts = req =>
            {
                var parameters = ParametersHelper.ToDictionary(req.Parameters);

                Assert.AreEqual(testToNumber, parameters["to[]"]);

                var props = typeof(FaxOptions).GetProperties();
                foreach (var prop in props)
                {
                    var serializeAs = prop.GetCustomAttributes(false)
                                      .OfType <SerializeAsAttribute>()
                                      .FirstOrDefault();

                    if (serializeAs != null)
                    {
                        object expectedValue = prop.GetValue(testOptions, null);

                        if (expectedValue == null)
                        {
                            Assert.False(parameters.ContainsKey(serializeAs.Value));
                        }
                        else
                        {
                            Assert.AreEqual(expectedValue, parameters[serializeAs.Value]);
                        }
                    }
                }
            };

            var clientBuilder = new IRestClientBuilder {
                Op = "send", RequestAsserts = requestAsserts
            };
            var phaxio = new PhaxioClient(IRestClientBuilder.TEST_KEY, IRestClientBuilder.TEST_SECRET, clientBuilder.Build());

            var testFile = BinaryFixtures.getTestPdfFile();

            var result = phaxio.SendFax(testToNumber, testFile, testOptions);

            Assert.AreEqual("1234", result.Id, "FaxId should be the same.");
        }
예제 #6
0
        public void UnitTests_Fax_SendSingleFileOptions()
        {
            var testToNumber = "8088675309";
            var testOptions  = new FaxOptions
            {
                HeaderText          = "headertext",
                StringData          = "somedata",
                StringDataType      = "html",
                IsBatch             = true,
                BatchDelaySeconds   = 10,
                AvoidBatchCollision = true,
                CallbackUrl         = "https://example.com/callback",
                CancelTimeoutAfter  = 20,
                CallerId            = "3213214321",
                FailureErrorType    = "failure_type"
            };

            Action <IRestRequest> requestAsserts = req =>
            {
                var parameters = ParametersHelper.ToDictionary(req.Parameters);

                Assert.AreEqual(testToNumber, parameters["to[]"]);

                var props = typeof(FaxOptions).GetProperties();
                foreach (var prop in props)
                {
                    var serializeAs = prop.GetCustomAttributes(false)
                                      .OfType <SerializeAsAttribute>()
                                      .FirstOrDefault();

                    if (serializeAs != null)
                    {
                        object expectedValue = prop.GetValue(testOptions, null);

                        Assert.AreEqual(expectedValue, parameters[serializeAs.Value]);
                    }
                }
            };

            var clientBuilder = new IRestClientBuilder {
                Op = "send", RequestAsserts = requestAsserts
            };
            var phaxio = new PhaxioClient(IRestClientBuilder.TEST_KEY, IRestClientBuilder.TEST_SECRET, clientBuilder.Build());

            var testFile = BinaryFixtures.getTestPdfFile();

            var result = phaxio.SendFax(testToNumber, testFile, testOptions);

            Assert.AreEqual("1234", result.Id, "FaxId should be the same.");
        }
예제 #7
0
        public void UnitTests_Fax_SendSingleFileNoOptions()
        {
            var testToNumber = "8088675309";

            Action <IRestRequest> requestAsserts = req =>
            {
                Assert.AreEqual(req.Parameters[2].Value, testToNumber);
            };

            var clientBuilder = new IRestClientBuilder {
                Op = "send", RequestAsserts = requestAsserts
            };
            var phaxio = new PhaxioClient(IRestClientBuilder.TEST_KEY, IRestClientBuilder.TEST_SECRET, clientBuilder.Build());

            var testFile = BinaryFixtures.getTestPdfFile();

            var result = phaxio.SendFax(testToNumber, testFile);

            Assert.That(result.Success, Is.True, $"unsuccessful call: {result.Message}");
            Assert.That(result.Id, Is.Not.Null, $"no fax ID returned: {result.Message}");
            Assert.AreEqual("1234", result.Id, "FaxId should be the same.");
        }
예제 #8
0
        public IRestClient BuildUntyped()
        {
            var mockIRestClient = new Mock <IRestClient>();

            if (Op == "createPhaxCodeDownload")
            {
                mockIRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>()))
                .Returns <IRestRequest>(req =>
                {
                    var response   = new RestResponse();
                    var authFailed = false;

                    checks(req, () =>
                    {
                        authFailed = true;
                    });

                    if (authFailed)
                    {
                        response.ContentType = "application/json";
                        response.Content     = JsonResponseFixtures.Fixtures["authFail"];
                    }
                    else
                    {
                        response.ContentType = "image/png";
                        response.RawBytes    = BinaryFixtures.GetTestPhaxCode();
                    }

                    return(response);
                });
            }
            else if (Op == "attachPhaxCodeToPdf")
            {
                mockIRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>()))
                .Returns <IRestRequest>(req =>
                {
                    var response   = new RestResponse();
                    var authFailed = false;

                    checks(req, () =>
                    {
                        authFailed = true;
                    });

                    if (authFailed)
                    {
                        response.ContentType = "application/json";
                        response.Content     = JsonResponseFixtures.Fixtures["authFail"];
                    }
                    else
                    {
                        response.ContentType = "application/pdf";
                        response.RawBytes    = BinaryFixtures.GetTestPdf();
                    }

                    return(response);
                });
            }
            else if (Op == "attachPhaxCodeToPdfStream")
            {
                mockIRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>()))
                .Returns <IRestRequest>(req =>
                {
                    var response   = new RestResponse();
                    var authFailed = false;

                    checks(req, () =>
                    {
                        authFailed = true;
                    });

                    if (authFailed)
                    {
                        response.ContentType = "application/json";
                        response.Content     = JsonResponseFixtures.Fixtures["authFail"];
                    }
                    else
                    {
                        response.ContentType = "application/pdf";
                        var writer           = req.ResponseWriter;
                        var testPdf          = BinaryFixtures.getTestPdfFile();
                        writer(testPdf.OpenRead());
                    }

                    return(response);
                });
            }
            else if (Op == "faxFile")
            {
                mockIRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>()))
                .Returns <IRestRequest>(req =>
                {
                    var response   = new RestResponse();
                    var authFailed = false;

                    checks(req, () =>
                    {
                        authFailed = true;
                    });

                    if (authFailed)
                    {
                        response.ContentType = "application/json";
                        response.Content     = JsonResponseFixtures.Fixtures["authFail"];
                    }
                    else
                    {
                        response.ContentType = "application/pdf";
                        response.RawBytes    = BinaryFixtures.GetTestPdf();
                    }

                    return(response);
                });
            }
            else if (Op == "getHostedDocument")
            {
                mockIRestClient.Setup(x => x.Execute(It.IsAny <IRestRequest>()))
                .Returns <IRestRequest>(req =>
                {
                    var response   = new RestResponse();
                    var authFailed = false;

                    checks(req, () =>
                    {
                        authFailed = true;
                    });

                    if (authFailed)
                    {
                        response.ContentType = "application/json";
                        response.Content     = JsonResponseFixtures.Fixtures["authFail"];
                    }
                    else
                    {
                        response.ContentType = "application/pdf";
                        response.RawBytes    = BinaryFixtures.GetTestPdf();
                    }

                    return(response);
                });
            }

            return(mockIRestClient.Object);
        }