Пример #1
0
        public void AuthenticateNonResident2()
        {
            var client = new MdlpClient(credentials: new NonResidentCredentials
            {
                ClientID     = ClientID2,
                ClientSecret = ClientSecret2,
                UserID       = UserStarter2,
                Password     = UserPassword2
            })
            {
                Tracer = WriteLine
            };

            // the second user doesn't seem to have the DOWNLOAD_DOCUMENT permission => Forbidden, error 403
            var ex = Assert.Throws <MdlpException>(() => client.GetDocumentMetadata(TestDocumentID));

            Assert.AreEqual(HttpStatusCode.Forbidden, ex.StatusCode); // 403

            // logged out
            client.Logout();

            // the next operation is not authorized
            ex = Assert.Throws <MdlpException>(() => client.GetDocumentMetadata(TestDocumentID));
            Assert.AreEqual(HttpStatusCode.Unauthorized, ex.StatusCode); // 401
        }
        public void FormatHeadersTest()
        {
            Assert.AreEqual("headers: none" + CR, MdlpClient.FormatHeaders(null));
            Assert.AreEqual("headers: none" + CR, MdlpClient.FormatHeaders(new Tuple <string, object> [0]));
            Assert.AreEqual(@"headers: {
  Content-type = text/plain
}
", MdlpClient.FormatHeaders(new[] { Tuple.Create("Content-type", "text/plain" as object) }));
        }
        public void FormatBodyTest()
        {
            Assert.AreEqual(string.Empty, MdlpClient.FormatBody(null as string));
            Assert.AreEqual(string.Empty, MdlpClient.FormatBody(new RequestBody(string.Empty, string.Empty, null)));
            Assert.AreEqual("body: Hello!" + CR, MdlpClient.FormatBody(new RequestBody("Text/plain", string.Empty, "Hello!")));
            Assert.AreEqual(@"body: {
  ""some"": 1
}
", MdlpClient.FormatBody(new RequestBody("application/json", string.Empty, "{\"some\": 1}")));
        }
Пример #4
0
        public override void Dispose()
        {
            if (Client != null)
            {
                Client.Tracer = null;
                Client.Dispose();
                Client = null;
            }

            base.Dispose();
        }
Пример #5
0
 private string RegisterMdlpTestUser(MdlpClient client, int number)
 {
     return(client.RegisterUser(SystemID1, new NonResidentUser
     {
         FirstName = "mdlp",
         MiddleName = "api",
         LastName = "client",
         Email = "mdlp" + number + "@mdlpclient.github.com",
         Password = "******"
     }));
 }
Пример #6
0
        protected override MdlpClient CreateClient()
        {
            var res = new MdlpClient(credentials: new ResidentCredentials
            {
                ClientID     = ClientID1,
                ClientSecret = ClientSecret1,
                UserID       = TestUserThumbprint,
            },
                                     baseUrl: MdlpClient.SandboxApiHttps)
            {
                Tracer = WriteLine,
            };

            res.Client.RemoteCertificateValidationCallback += (sender, certificate, chain, errors) => true;

            return(res);
        }
Пример #7
0
        public void AuthenticateResident()
        {
            var client = new MdlpClient(credentials: new ResidentCredentials
            {
                ClientID     = ClientID1,
                ClientSecret = ClientSecret1,
                UserID       = TestUserThumbprint,
            })
            {
                Tracer = WriteLine
            };

            // the document is available to the test user
            var md = client.GetDocumentMetadata(TestDocumentID);

            Assert.NotNull(md);
            Assert.AreEqual(TestDocumentID, md.DocumentID);
        }
        public void FormatTimingsTest()
        {
            Assert.AreEqual(string.Empty, MdlpClient.FormatTimings(null, 0));
            Assert.AreEqual(@"timings: {
  started: 2020-04-14
}
", MdlpClient.FormatTimings(new DateTime(2020, 04, 14), 0));

            Assert.AreEqual(@"timings: {
  elapsed: 0:00:00.032
}
", MdlpClient.FormatTimings(null, 32));

            Assert.AreEqual(@"timings: {
  started: 2020-04-14 10:20:30
  elapsed: 0:00:00.1
}
", MdlpClient.FormatTimings(new DateTime(2020, 04, 14, 10, 20, 30), 100));
        }
Пример #9
0
        public void AuthenticateNonResident1()
        {
            // the client is not connected until the first call is performed
            var client = new MdlpClient(credentials: new NonResidentCredentials
            {
                ClientID     = ClientID1,
                ClientSecret = ClientSecret1,
                UserID       = UserStarter1,
                Password     = UserPassword1
            })
            {
                Tracer = WriteLine
            };

            // the next line authenticates, then it requests a document
            var md = client.GetDocumentMetadata(TestDocumentID);

            Assert.NotNull(md);
            Assert.AreEqual(TestDocumentID, md.DocumentID);
        }
Пример #10
0
        public void RegisterMdlpTestUser()
        {
            // starter_resident_1 and starter_resident2 are blocked, so use another account instead
            var client = new MdlpClient(credentials: new ResidentCredentials
            {
                ClientID     = ClientID1,
                ClientSecret = ClientSecret1,
                UserID       = TestUserThumbprint,
            },
                                        baseUrl: MdlpClient.StageApiHttps)
            {
                Tracer = WriteLine
            };

            // register new test users to use instead of starter_resident1/2
            using (client)
            {
                WriteLine("MDLP Test user1: {0}", RegisterMdlpTestUser(client, 1));
                WriteLine("MDLP Test user2: {0}", RegisterMdlpTestUser(client, 2));
            }
        }
Пример #11
0
        public void AuthenticateNonResident2Error400()
        {
            var client = new MdlpClient(credentials: new NonResidentCredentials
            {
                ClientID     = ClientID1,
                ClientSecret = ClientSecret1,
                UserID       = UserStarter2,
                Password     = UserPassword2
            })
            {
                Tracer = WriteLine
            };

            // the second user's sysId mismatch => BadRequest, error 400
            var ex = Assert.Throws <MdlpException>(() =>
            {
                client.GetDocumentMetadata(TestDocumentID);
            });

            Assert.AreEqual(HttpStatusCode.BadRequest, ex.StatusCode); // 400
        }
Пример #12
0
        public void ResourceNotFoundDifferentErrorMessages()
        {
            var client = new MdlpClient(credentials: new NonResidentCredentials
            {
                ClientID     = ClientID2,
                ClientSecret = ClientSecret2,
                UserID       = UserStarter2,
                Password     = UserPassword2
            })
            {
                Tracer = WriteLine
            };

            // в теле ответа по неверному адресу branches/filter посылается HTML
            var ex = Assert.Throws <MdlpException>(() => client.Get("branches/filter"));

            Assert.AreEqual(HttpStatusCode.NotFound, ex.StatusCode);
            Assert.IsTrue(ex.Message.Contains("404"));
            Assert.IsTrue(ex.Message.Contains("nginx"));

            // а тут по умолчанию RestSharp сообщает ошибку десериализации XML
            ex = Assert.Throws <MdlpException>(() => client.Get <EmptyResponse>("branches/filter"));
            Assert.AreEqual(HttpStatusCode.NotFound, ex.StatusCode);
            Assert.IsTrue(ex.Message.Contains("404"));
            Assert.IsTrue(ex.Message.Contains("nginx"));

            // а здесь ресурс возвращает типизированный объект ErrorResponse
            ex = Assert.Throws <MdlpException>(() => client.Get <EmptyResponse>("reestr/shtuchek/dryuchek"));
            Assert.AreEqual(HttpStatusCode.NotFound, ex.StatusCode);
            Assert.AreEqual("Not Found", ex.Message);

            // только в этом последнем случае у нас есть ErrorResponse
            var error = ex.ErrorResponse;

            Assert.NotNull(error);
            Assert.AreEqual("Not Found", error.Message);
            Assert.AreEqual(404, error.StatusCode);
            Assert.NotNull(error.Path);
            Assert.IsTrue(error.Path.EndsWith("dryuchek"));
        }
Пример #13
0
        public void Chapter6_01_09_GetCurrentCertificates()
        {
            // non-resident user doesn't have certificates
            var certs = Client.GetCurrentCertificates(0, 10);

            Assert.IsNotNull(certs);
            Assert.IsNotNull(certs.Certificates);
            Assert.AreEqual(0, certs.Total);
            Assert.AreEqual(0, certs.Certificates.Length);

            // resident user does not have access rights?
            var ex = Assert.Throws <MdlpException>(() =>
            {
                var client = new MdlpClient(credentials: new ResidentCredentials
                {
                    ClientID     = ClientID1,
                    ClientSecret = ClientSecret1,
                    UserID       = TestUserThumbprint,
                })
                {
                    Tracer = WriteLine
                };

                certs = client.GetCurrentCertificates(0, 10);
                Assert.IsNotNull(certs);
                Assert.IsNotNull(certs.Certificates);
                Assert.AreEqual(1, certs.Total);
                Assert.AreEqual(1, certs.Certificates.Length);

                var cert = certs.Certificates[0];
                Assert.AreEqual(TestCertificateThumbprint, cert.PublicCertificateThumbprint);
                AssertRequired(cert);
            });

            Assert.AreEqual(HttpStatusCode.Forbidden, ex.StatusCode);
        }