예제 #1
0
        public void CheckUserKeyPairPassword_Fail()
        {
            // ARRANGE
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => a.GetAndCheckUserKeyPair()).Throws(new DracoonCryptoException()).Occurs(1);

            // ACT - ASSERT
            Assert.Throws <DracoonCryptoException>(() => a.CheckUserKeyPairPassword());
            Mock.Assert(a);
            Mock.Assert(c.Executor);
        }
예제 #2
0
        public void GenerateNewUserKeyPair_Fail()
        {
            // ARRANGE
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => Crypto.Sdk.Crypto.GenerateUserKeyPair(Arg.AnyString)).Throws(new CryptoException()).Occurs(1);
            Mock.Arrange(() => CryptoErrorMapper.ParseCause(Arg.IsAny <Exception>())).Returns(DracoonCryptoCode.UNKNOWN_ERROR).Occurs(1);

            // ACT - ASSERT
            Assert.Throws <DracoonCryptoException>(() => a.GenerateNewUserKeyPair(c.EncryptionPassword));
            Mock.Assert(() => Crypto.Sdk.Crypto.GenerateUserKeyPair(Arg.AnyString));
            Mock.Assert(() => CryptoErrorMapper.ParseCause(Arg.IsAny <Exception>()));
        }
예제 #3
0
        public void ValidateTokenValidity()
        {
            // ARRANGE
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.GetAuthenticatedPing()).Returns(FactoryRestSharp.GetAuthenticatedPingMock()).Occurs(1);
            Mock.Arrange(() => c.Executor.DoSyncApiCall <VoidResponse>(Arg.IsAny <IRestRequest>(), RequestType.GetAuthenticatedPing, 0)).DoNothing().Occurs(1);

            // ACT
            a.ValidateTokenValidity();

            // ASSERT
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
        }
예제 #4
0
        public void GenerateNewUserKeyPair_Success()
        {
            // ARRANGE
            UserKeyPair            expected = FactoryUser.UserKeyPair;
            IInternalDracoonClient c        = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a        = new DracoonAccountImpl(c);

            Mock.Arrange(() => Crypto.Sdk.Crypto.GenerateUserKeyPair(Arg.AnyString)).Returns(FactoryUser.UserKeyPair).Occurs(1);

            // ACT
            UserKeyPair actual = a.GenerateNewUserKeyPair(c.EncryptionPassword);

            // ASSERT
            Assert.Equal(expected, actual, new UserKeyPairComparer());
            Mock.Assert(() => Crypto.Sdk.Crypto.GenerateUserKeyPair(Arg.AnyString));
        }
예제 #5
0
        public void DeleteUserKeyPair()
        {
            // ARRANGE
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.DeleteUserKeyPair()).Returns(FactoryRestSharp.DeleteUserKeyPairMock()).Occurs(1);
            Mock.Arrange(() => c.Executor.DoSyncApiCall <VoidResponse>(Arg.IsAny <IRestRequest>(), RequestType.DeleteUserKeyPair, 0)).DoNothing().Occurs(1);

            // ACT
            a.DeleteUserKeyPair();

            // ASSERT
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
        }
예제 #6
0
        public void CheckUserKeyPairPassword_WrongPassword()
        {
            // ARRANGE
            bool expected            = false;
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => a.GetAndCheckUserKeyPair()).Throws(new DracoonCryptoException(DracoonCryptoCode.INVALID_PASSWORD_ERROR)).Occurs(1);

            // ACT
            bool actual = a.CheckUserKeyPairPassword();

            // ASSERT
            Assert.Equal(expected, actual);
            Mock.Assert(a);
            Mock.Assert(c.Executor);
        }
예제 #7
0
        public void CheckUserKeyPairPassword_Success()
        {
            // ARRANGE
            bool expected            = true;
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => a.GetAndCheckUserKeyPair()).Returns(FactoryUser.UserKeyPair).Occurs(1);

            // ACT
            bool actual = a.CheckUserKeyPairPassword();

            // ASSERT
            Assert.Equal(expected, actual);
            Mock.Assert(a);
            Mock.Assert(c.Executor);
        }
예제 #8
0
        public void SetUserKeyPair()
        {
            // ARRANGE
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => a.GenerateNewUserKeyPair(Arg.AnyString)).Returns(FactoryUser.UserKeyPair).Occurs(1);
            Mock.Arrange(() => UserMapper.ToApiUserKeyPair(Arg.IsAny <UserKeyPair>())).Returns(FactoryUser.ApiUserKeyPair).Occurs(1);
            Mock.Arrange(() => c.Builder.SetUserKeyPair(Arg.IsAny <ApiUserKeyPair>())).Returns(FactoryRestSharp.SetUserKeyPairMock()).Occurs(1);
            Mock.Arrange(() => c.Executor.DoSyncApiCall <VoidResponse>(Arg.IsAny <IRestRequest>(), RequestType.SetUserKeyPair, 0)).DoNothing().Occurs(1);

            // ACT
            a.SetUserKeyPair();

            // ASSERT
            Mock.Assert(() => UserMapper.ToApiUserKeyPair(Arg.IsAny <UserKeyPair>()));
            Mock.Assert(a);
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
        }
예제 #9
0
        public void GetAndCheckUserKeyPair_WrongPassword()
        {
            // ARRANGE
            int expected             = DracoonCryptoCode.INVALID_PASSWORD_ERROR.Code;
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.GetUserKeyPair()).Returns(FactoryRestSharp.GetUserKeyPairMock());
            Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiUserKeyPair>(Arg.IsAny <IRestRequest>(), RequestType.GetUserKeyPair, 0))
            .Returns(FactoryUser.ApiUserKeyPair);
            Mock.Arrange(() => Crypto.Sdk.Crypto.CheckUserKeyPair(Arg.IsAny <UserKeyPair>(), Arg.AnyString)).Returns(false);

            try {
                // ACT
                a.GetAndCheckUserKeyPair();
            } catch (DracoonCryptoException e) {
                // ASSERT
                Assert.Equal(expected, e.ErrorCode.Code);
            }
        }
예제 #10
0
        public void GetCustomerAccount()
        {
            // ARRANGE
            CustomerAccount        expected = FactoryCustomer.CustomerAccount;
            IInternalDracoonClient c        = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a        = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.GetCustomerAccount()).Returns(FactoryRestSharp.GetCustomerAccountMock()).Occurs(1);
            Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiCustomerAccount>(Arg.IsAny <IRestRequest>(), RequestType.GetCustomerAccount, 0))
            .Returns(FactoryCustomer.ApiCustomerAccount).Occurs(1);
            Mock.Arrange(() => CustomerMapper.FromApiCustomerAccount(Arg.IsAny <ApiCustomerAccount>())).Returns(FactoryCustomer.CustomerAccount).Occurs(1);

            // ACT
            CustomerAccount actual = a.GetCustomerAccount();

            // ASSERT
            Assert.Equal(expected, actual, new CustomerAccountComparer());
            Mock.Assert(() => CustomerMapper.FromApiCustomerAccount(Arg.IsAny <ApiCustomerAccount>()));
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
        }
예제 #11
0
        public void ResetAvatar()
        {
            // ARRANGE
            AvatarInfo             expected = FactoryUser.AvatarInfo;
            IInternalDracoonClient c        = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a        = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.DeleteAvatar()).Returns(FactoryRestSharp.DeleteAvatarMock()).Occurs(1);
            Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiAvatarInfo>(Arg.IsAny <IRestRequest>(), RequestType.DeleteUserAvatar, 0))
            .Returns(FactoryUser.ApiAvatarInfo).Occurs(1);
            Mock.Arrange(() => UserMapper.FromApiAvatarInfo(Arg.IsAny <ApiAvatarInfo>())).Returns(FactoryUser.AvatarInfo).Occurs(1);

            // ACT
            AvatarInfo actual = a.ResetAvatar();

            // ASSERT
            Assert.Equal(expected, actual, new AvatarInfoComparer());
            Mock.Assert(() => UserMapper.FromApiAvatarInfo(Arg.IsAny <ApiAvatarInfo>()));
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
        }
예제 #12
0
        public void GetAndCheckUserKeyPair_Fail()
        {
            // ARRANGE
            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.GetUserKeyPair()).Returns(FactoryRestSharp.GetUserKeyPairMock());
            Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiUserKeyPair>(Arg.IsAny <IRestRequest>(), RequestType.GetUserKeyPair, 0))
            .Returns(FactoryUser.ApiUserKeyPair);
            Mock.Arrange(() => Crypto.Sdk.Crypto.CheckUserKeyPair(Arg.IsAny <UserKeyPair>(), Arg.AnyString)).Throws(new CryptoException());
            Mock.Arrange(() => CryptoErrorMapper.ParseCause(Arg.IsAny <Exception>())).Returns(DracoonCryptoCode.UNKNOWN_ERROR).Occurs(1);

            try {
                // ACT
                a.GetAndCheckUserKeyPair();
            } catch (DracoonCryptoException e) {
                // ASSERT
                Assert.NotEqual(DracoonCryptoCode.INVALID_PASSWORD_ERROR.Code, e.ErrorCode.Code);
                Mock.Assert(() => CryptoErrorMapper.ParseCause(Arg.IsAny <Exception>()));
            }
        }
예제 #13
0
        public void GetAvatar()
        {
            // ARRANGE
            Bitmap   image     = new Bitmap(50, 50);
            Graphics imageData = Graphics.FromImage(image);

            imageData.DrawLine(new Pen(Color.Red), 0, 0, 50, 50);
            MemoryStream memoryStream = new MemoryStream();

            byte[] bitmapData;
            using (memoryStream) {
                image.Save(memoryStream, ImageFormat.Bmp);
                bitmapData = memoryStream.ToArray();
            }

            IInternalDracoonClient c = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.GetAvatar()).Returns(FactoryRestSharp.GetAvatarMock()).Occurs(1);
            Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiAvatarInfo>(Arg.IsAny <IRestRequest>(), RequestType.GetUserAvatar, 0))
            .Returns(FactoryUser.ApiAvatarInfo).Occurs(1);
            Mock.Arrange(() => c.Builder.ProvideAvatarDownloadWebClient()).Returns(() => {
                DracoonWebClientExtension wc = new DracoonWebClientExtension();
                wc.Headers.Add(HttpRequestHeader.UserAgent, new DracoonHttpConfig().UserAgent);
                wc.SetHttpConfigParams(new DracoonHttpConfig());
                return(wc);
            }).Occurs(1);
            Mock.Arrange(() => c.Executor.ExecuteWebClientDownload(Arg.IsAny <WebClient>(), Arg.IsAny <Uri>(), RequestType.GetUserAvatar, null, 0))
            .Returns(bitmapData).Occurs(1);

            // ACT
            Image actual = a.GetAvatar();

            // ASSERT
            Assert.NotNull(actual);
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
        }
예제 #14
0
        public void GetAndCheckUserKeyPair_Success()
        {
            // ARRANGE
            UserKeyPair            expected = FactoryUser.UserKeyPair;
            IInternalDracoonClient c        = FactoryClients.InternalDracoonClientMock(false);
            DracoonAccountImpl     a        = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.GetUserKeyPair()).Returns(FactoryRestSharp.GetUserKeyPairMock()).Occurs(1);
            Mock.Arrange(() => c.Executor.DoSyncApiCall <ApiUserKeyPair>(Arg.IsAny <IRestRequest>(), RequestType.GetUserKeyPair, 0))
            .Returns(FactoryUser.ApiUserKeyPair).Occurs(1);
            Mock.Arrange(() => UserMapper.FromApiUserKeyPair(Arg.IsAny <ApiUserKeyPair>())).Returns(FactoryUser.UserKeyPair).Occurs(1);
            Mock.Arrange(() => Crypto.Sdk.Crypto.CheckUserKeyPair(Arg.IsAny <UserKeyPair>(), Arg.AnyString)).Returns(true).Occurs(1);

            // ACT
            UserKeyPair actual = a.GetAndCheckUserKeyPair();

            // ASSERT
            Assert.Equal(expected, actual, new UserKeyPairComparer());
            Mock.Assert(() => UserMapper.FromApiUserKeyPair(Arg.IsAny <ApiUserKeyPair>()));
            Mock.Assert(() => Crypto.Sdk.Crypto.CheckUserKeyPair(Arg.IsAny <UserKeyPair>(), Arg.AnyString));
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
        }
예제 #15
0
        public void UpdateAvatar()
        {
            // ARRANGE
            Bitmap   image     = new Bitmap(50, 50);
            Graphics imageData = Graphics.FromImage(image);

            imageData.DrawLine(new Pen(Color.Red), 0, 0, 50, 50);
            MemoryStream ms = new MemoryStream();

            image.Save(ms, ImageFormat.Bmp);

            AvatarInfo             expected = FactoryUser.AvatarInfo;
            IInternalDracoonClient c        = FactoryClients.InternalDracoonClientMock(true);
            DracoonAccountImpl     a        = new DracoonAccountImpl(c);

            Mock.Arrange(() => c.Builder.ProvideAvatarUploadWebClient(Arg.AnyString)).Returns((string x) => {
                DracoonWebClientExtension wc = new DracoonWebClientExtension();
                wc.Headers.Add(HttpRequestHeader.ContentType, "multipart/form-data; boundary=" + x);
                wc.Headers.Add(ApiConfig.AuthorizationHeader, FactoryClients.OAuthMock.BuildAuthString());
                wc.Headers.Add(HttpRequestHeader.UserAgent, new DracoonHttpConfig().UserAgent);
                wc.SetHttpConfigParams(new DracoonHttpConfig());
                return(wc);
            }).Occurs(1);
            Mock.Arrange(() => c.Executor.ExecuteWebClientChunkUpload(Arg.IsAny <WebClient>(), Arg.IsAny <Uri>(), Arg.IsAny <byte[]>(), RequestType.PostUserAvatar, null, 0))
            .Returns(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(FactoryUser.ApiAvatarInfo))).Occurs(1);
            Mock.Arrange(() => UserMapper.FromApiAvatarInfo(Arg.IsAny <ApiAvatarInfo>())).Returns(FactoryUser.AvatarInfo).Occurs(1);

            // ACT
            AvatarInfo actual = a.UpdateAvatar(Image.FromStream(ms));

            // ASSERT
            Assert.Equal(expected, actual, new AvatarInfoComparer());
            Mock.Assert(() => UserMapper.FromApiAvatarInfo(Arg.IsAny <ApiAvatarInfo>()));
            Mock.Assert(c.Builder);
            Mock.Assert(c.Executor);
            ms.Close();
        }