示例#1
0
        private void GivenTheConfigReturnsError()
        {
            var response = new Responses.ErrorResponse <IInternalConfiguration>(new FakeError());

            _configRepo
            .Setup(x => x.Get()).Returns(response);
        }
示例#2
0
        private void GivenTheConfigReturnsError()
        {
            var response = new Responses.ErrorResponse <IOcelotConfiguration>(new FakeError());

            _provider
            .Setup(x => x.Get()).ReturnsAsync(response);
        }
示例#3
0
        public void should_return_error_when_cannot_get_config()
        {
            var expected = new Responses.ErrorResponse <FileConfiguration>(It.IsAny <Error>());

            this.Given(x => x.GivenTheGetConfigurationReturns(expected))
            .When(x => x.WhenIGetTheFileConfiguration())
            .Then(x => x.TheTheGetFileConfigurationIsCalledCorrectly())
            .And(x => x.ThenTheResponseIs <BadRequestObjectResult>())
            .BDDfy();
        }
        public bool CheckLocation(NameValueCollection args, out Responses.ErrorResponse error,
            out double lat, out double lng)
        {
            error = new Responses.ErrorResponse("invalid location info");
            lat = 0d;
            lng = 0d;

            String latitude = args["lat"] ?? "";
            String longitude = args["lng"] ?? "";

            String timestampStr = args["time"];

            int timestamp;
            if (!int.TryParse(timestampStr, out timestamp)) {
                return false;
            }

            String locationHash = (args["hash"] ?? "").ToLower();

            if (!Account.IsPasswordHashValid(locationHash)) {
                return false;
            }

            var bytes = new byte[latitude.Length + longitude.Length + timestampStr.Length + _sSalt.Length];
            Array.Copy(_sSalt, 0, bytes, 0, 2);
            UnicodeEncoding.UTF8.GetBytes(latitude, 0, latitude.Length, bytes, 2);
            Array.Copy(_sSalt, 2, bytes, 2 + latitude.Length, 2);
            UnicodeEncoding.UTF8.GetBytes(longitude, 0, longitude.Length, bytes, 4 + latitude.Length);
            Array.Copy(_sSalt, 4, bytes, 4 + latitude.Length + longitude.Length, 1);
            UnicodeEncoding.UTF8.GetBytes(timestampStr, 0, timestampStr.Length, bytes, 5 + latitude.Length + longitude.Length);
            Array.Copy(_sSalt, 5, bytes, 5 + latitude.Length + longitude.Length + timestampStr.Length, 2);

            var md5 = new MD5CryptoServiceProvider();
            var hash = String.Join("", md5.ComputeHash(bytes).Select(x => x.ToString("X2"))).ToLower();

            if (hash != locationHash) {
                return false;
            }

            return double.TryParse(latitude, out lat) && double.TryParse(longitude, out lng);
        }
示例#5
0
 public static Responses.JsonResponse EXCEPCION(Responses.ErrorResponse pError)
 {
     return(new Responses.JsonResponse {
         Error = pError
     });
 }
示例#6
0
        public bool CheckAuth(NameValueCollection args, out Account account,
            out Responses.ErrorResponse error, bool acceptSession = true, bool onlyValidated = true)
        {
            error = new Responses.ErrorResponse("auth error");
            account = null;

            String sessionCode = args["session"];
            String passwordHash = args["phash"];
            String username = null;
            int userid = -1;

            if (args["uname"] != null) {
                username = args["uname"];
                if (username.Length == 0) {
                    error = new Responses.ErrorResponse("auth error: no username given");
                    return false;
                }
                if (!Account.IsUsernameValid(username)) {
                    error = new Responses.ErrorResponse("auth error: invalid credentials");
                    return false;
                }
            } else if (args["uid"] != null) {
                if (!Int32.TryParse(args["uid"], out userid)) {
                    error = new Responses.ErrorResponse("auth error: invalid userid");
                    return false;
                }
            } else {
                error = new Responses.ErrorResponse("auth error: no username or user id given");
                return false;
            }

            if (acceptSession && sessionCode != null && sessionCode.Length > 0) {
                if (!AuthSession.IsCodeValid(sessionCode)) {
                    error = new Responses.ErrorResponse("auth error: invalid session code");
                    return false;
                }
            } else if (passwordHash != null && passwordHash.Length > 0) {
                if (!Account.IsPasswordHashValid(passwordHash)) {
                    error = new Responses.ErrorResponse("auth error: invalid credentials");
                    return false;
                }
            } else {
                if (acceptSession)
                    error = new Responses.ErrorResponse("auth error: no password or session code given");
                else
                    error = new Responses.ErrorResponse("auth error: no password given");

                return false;
            }

            if (username != null) {
                account = DatabaseManager.SelectFirst<Account>(x => x.Username == username);
            } else {
                account = DatabaseManager.SelectFirst<Account>(x => x.AccountID == userid);
            }

            if (account == null) {
                error = new Responses.ErrorResponse("auth error: incorrect credentials");
                return false;
            }

            if (passwordHash != null && passwordHash.Length != 0) {
                if (!passwordHash.EqualsCharArray(account.PasswordHash)) {
                    error = new Responses.ErrorResponse("auth error: incorrect credentials");
                    return false;
                }
            } else {
                AuthSession sess = AuthSession.Get(account);

                if (sess == null || !sessionCode.EqualsCharArray(sess.SessionCode)) {
                    error = new Responses.ErrorResponse("auth error: incorrect session code");
                    return false;
                }

                if (sess.IsExpired) {
                    error = new Responses.ErrorResponse("auth error: session expired");
                    return false;
                }

                sess.Refresh();
            }

            if (onlyValidated && account.Rank < Rank.Verified) {
                error = new Responses.ErrorResponse("auth error: account not activated");
                return false;
            }

            return true;
        }