示例#1
0
        public async Task SimpleAuthTest()
        {
            var database = new Butterfly.Core.Database.Memory.MemoryDatabase();

            //var database = new Butterfly.MySql.MySqlDatabase("Server=127.0.0.1;Uid=test;Pwd=test!123;Database=butterfly_auth_test");
            await TruncateData(database);

            await database.CreateFromResourceFileAsync(Assembly.GetExecutingAssembly(), "Butterfly.Core.Auth.Test.db.sql");

            database.SetDefaultValue("id", tableName => Guid.NewGuid().ToString());
            database.SetDefaultValue("created_at", tableName => DateTime.Now.ToUnixTimestamp());
            database.SetDefaultValue("updated_at", tableName => DateTime.Now.ToUnixTimestamp());
            database.AddInputPreprocessor(BaseDatabase.RemapTypeInputPreprocessor <DateTime>(dateTime => dateTime.ToUnixTimestamp()));

            AuthManager authManager = new AuthManager(database, onForgotPassword: user => {
                logger.Debug($"onForgotPassword():user={user}");
                return(Task.FromResult(0));
            });
            UserRefToken registerAuthToken = await authManager.RegisterAsync(new {
                username   = "******",
                first_name = "John",
                last_name  = "Smith",
                email      = "*****@*****.**",
                password   = "******"
            });

            AuthToken authToken = await authManager.AuthenticateAsync(UserRefTokenAuthenticator.AUTH_TYPE, registerAuthToken.id);

            await authManager.ForgotPasswordAsync("johnsmith");

            await Task.Delay(30000);
        }