Ejemplo n.º 1
0
        public void User()
        {
            var user = new User("Test", (int)UserRole.Administrator, (int)UserStatus.Active);
            user.FacebookLogin = "******";
            user.GoogleLogin = "******";
            user.GithubLogin = "******";
            user.SetPassword("TestPass");
            DataContext.User.Save(user);
            RegisterTearDown(() => DataContext.User.Delete(user.ID));

            // test GetAll
            var users = DataContext.User.GetAll();
            Assert.Greater(users.Count, 0);

            // test Get(id)
            var user1 = DataContext.User.Get(user.ID);
            Assert.IsNotNull(user1);
            Assert.AreEqual("Test", user1.Login);
            Assert.IsTrue(user1.IsValidPassword("TestPass"));
            Assert.IsFalse(user1.IsValidPassword("TestPass2"));
            Assert.AreEqual((int)UserRole.Administrator, user1.Role);
            Assert.AreEqual((int)UserStatus.Active, user1.Status);

            // test Get(login)
            var user2 = DataContext.User.Get("Test");
            Assert.IsNotNull(user2);

            // test GetByXXX(login)
            user2 = DataContext.User.GetByFacebookLogin("facebook");
            Assert.IsNotNull(user2);
            user2 = DataContext.User.GetByGoogleLogin("google");
            Assert.IsNotNull(user2);
            user2 = DataContext.User.GetByGithubLogin("github");
            Assert.IsNotNull(user2);

            // test Save
            user.Login = "******";
            user.SetPassword("TestPass2");
            user.Role = (int)UserRole.Client;
            user.Status = (int)UserStatus.Disabled;
            user.LastLogin = DateTime.UtcNow;
            user.LoginAttempts = 1;
            DataContext.User.Save(user);
            var user3 = DataContext.User.Get(user.ID);
            Assert.AreEqual("Test2", user3.Login);
            Assert.IsTrue(user3.IsValidPassword("TestPass2"));
            Assert.AreEqual((int)UserRole.Client, user3.Role);
            Assert.AreEqual((int)UserStatus.Disabled, user3.Status);
            Assert.IsNotNull(user3.LastLogin);
            Assert.AreEqual(1, user3.LoginAttempts);

            // test Delete
            DataContext.User.Delete(user.ID);
            var user4 = DataContext.User.Get(user.ID);
            Assert.IsNull(user4);
        }
Ejemplo n.º 2
0
        public override void Up()
        {
            // create indexes
            Connection.Database.GetCollection("users").CreateIndex(IndexKeys.Ascending("Login"), IndexOptions.SetUnique(true));
            Connection.Database.GetCollection("user_networks").CreateIndex(IndexKeys.Ascending("NetworkID"));
            Connection.Database.GetCollection("user_networks").CreateIndex(IndexKeys.Ascending("UserID", "NetworkID"), IndexOptions.SetUnique(true));
            Connection.Database.GetCollection("networks").CreateIndex(IndexKeys.Ascending("Name"), IndexOptions.SetUnique(true));
            Connection.Database.GetCollection("device_classes").CreateIndex(IndexKeys.Ascending("Name", "Version"), IndexOptions.SetUnique(true));
            Connection.Database.GetCollection("equipment").CreateIndex(IndexKeys.Ascending("DeviceClassID"));
            Connection.Database.GetCollection("devices").CreateIndex(IndexKeys.Ascending("GUID"), IndexOptions.SetUnique(true));
            Connection.Database.GetCollection("devices").CreateIndex(IndexKeys.Ascending("NetworkID"));
            Connection.Database.GetCollection("devices").CreateIndex(IndexKeys.Ascending("Network.Name"));
            Connection.Database.GetCollection("devices").CreateIndex(IndexKeys.Ascending("DeviceClassID"));
            Connection.Database.GetCollection("devices").CreateIndex(IndexKeys.Ascending("DeviceClass.Name", "DeviceClass.Version"));
            Connection.Database.GetCollection("device_notifications").CreateIndex(IndexKeys.Ascending("Timestamp"));
            Connection.Database.GetCollection("device_notifications").CreateIndex(IndexKeys.Ascending("DeviceID", "Timestamp"));
            Connection.Database.GetCollection("device_commands").CreateIndex(IndexKeys.Ascending("DeviceID", "Timestamp"));
            Connection.Database.GetCollection("device_equipment").CreateIndex(IndexKeys.Ascending("DeviceID", "Code"), IndexOptions.SetUnique(true));

            // create default admin user
            var user = new User("dhadmin", (int)UserRole.Administrator, (int)UserStatus.Active);
            user.SetPassword("dhadmin_#911");
            Connection.EnsureIdentity(user);
            Connection.Users.Save(user);
        }
Ejemplo n.º 3
0
        public void OAuthGrant()
        {
            var user = new User("Test", 0, 0);
            user.SetPassword("pass");
            DataContext.User.Save(user);
            RegisterTearDown(() => DataContext.User.Delete(user.ID));

            var accessKey = new AccessKey(user.ID, AccessKeyType.OAuth, "test");
            DataContext.AccessKey.Save(accessKey);
            RegisterTearDown(() => DataContext.AccessKey.Delete(accessKey.ID));

            var client = new OAuthClient("Test", "test.com", "http://test.com/oauth2", "test_client");
            DataContext.OAuthClient.Save(client);
            RegisterTearDown(() => DataContext.OAuthClient.Delete(client.ID));

            var grant = new OAuthGrant(client, user.ID, accessKey, 0, "scope");
            grant.AuthCode = Guid.NewGuid();
            DataContext.OAuthGrant.Save(grant);
            RegisterTearDown(() => DataContext.OAuthGrant.Delete(grant.ID));

            // test GetByUser
            var grants = DataContext.OAuthGrant.GetByUser(user.ID);
            Assert.Greater(grants.Count, 0);

            // test Get(id)
            var grant1 = DataContext.OAuthGrant.Get(grant.ID);
            Assert.IsNotNull(grant1);
            Assert.Less(Math.Abs(DateTime.UtcNow.Subtract(grant1.Timestamp).TotalMinutes), 10);
            Assert.AreEqual(0, grant1.Type);
            Assert.AreEqual("scope", grant1.Scope);
            Assert.AreEqual(client.ID, grant1.ClientID);
            Assert.IsNotNull(grant1.Client);
            Assert.AreEqual(user.ID, grant1.UserID);
            Assert.AreEqual(accessKey.ID, grant1.AccessKeyID);
            Assert.IsNotNull(grant1.AccessKey);

            // test Get(authCode)
            var grant2 = DataContext.OAuthGrant.Get(grant.AuthCode.Value);
            Assert.IsNotNull(grant2);
            Assert.AreEqual(0, grant2.Type);
            Assert.AreEqual("scope", grant2.Scope);
            Assert.AreEqual(user.ID, grant2.UserID);
            Assert.AreEqual(client.ID, grant2.ClientID);
            Assert.IsNotNull(grant2.Client);
            Assert.AreEqual(accessKey.ID, grant2.AccessKeyID);
            Assert.IsNotNull(grant2.AccessKey);

            // test Save
            grant.AuthCode = Guid.NewGuid();
            grant.Type = 1;
            grant.AccessType = 1;
            grant.RedirectUri = "http://test.com/oauth";
            grant.Scope = "scope scope2";
            grant.Networks = new[] { 5, 10 };
            DataContext.OAuthGrant.Save(grant);
            var grant3 = DataContext.OAuthGrant.Get(grant.ID);
            Assert.AreEqual(grant.AuthCode, grant3.AuthCode);
            Assert.AreEqual(1, grant3.Type);
            Assert.AreEqual(1, grant3.AccessType);
            Assert.AreEqual("http://test.com/oauth", grant3.RedirectUri);
            Assert.AreEqual("scope scope2", grant3.Scope);
            Assert.AreEqual(2, grant3.Networks.Length);
            Assert.AreEqual(5, grant3.Networks[0]);
            Assert.AreEqual(10, grant3.Networks[1]);
            Assert.AreEqual(user.ID, grant3.UserID);
            Assert.AreEqual(client.ID, grant3.ClientID);
            Assert.IsNotNull(grant3.Client);
            Assert.AreEqual(accessKey.ID, grant3.AccessKeyID);
            Assert.IsNotNull(grant3.AccessKey);

            // test update relationship
            var client2 = new OAuthClient("Test2", "test2.com", "http://test.com/oauth/2", "test_client2");
            DataContext.OAuthClient.Save(client2);
            RegisterTearDown(() => DataContext.OAuthClient.Delete(client2.ID));
            grant.Client = client2;
            DataContext.OAuthGrant.Save(grant);
            var grant4 = DataContext.OAuthGrant.Get(grant.ID);
            Assert.AreEqual(client2.ID, grant4.ClientID);
            Assert.IsNotNull(grant4.Client);

            // test Delete
            DataContext.OAuthClient.Delete(grant.ID);
            var grant5 = DataContext.OAuthClient.Get(grant.ID);
            Assert.IsNull(grant5);
        }
Ejemplo n.º 4
0
        public void UserNetwork()
        {
            var user = new User("Test", (int)UserRole.Administrator, (int)UserStatus.Active);
            user.SetPassword("TestPass");
            DataContext.User.Save(user);
            RegisterTearDown(() => DataContext.User.Delete(user.ID));

            var network = new Network("Test");
            DataContext.Network.Save(network);
            RegisterTearDown(() => DataContext.Network.Delete(network.ID));

            var userNetwork = new UserNetwork(user, network);
            DataContext.UserNetwork.Save(userNetwork);
            RegisterTearDown(() => DataContext.UserNetwork.Delete(userNetwork.ID));

            // test GetByUser
            var userNetworks1 = DataContext.UserNetwork.GetByUser(user.ID);
            Assert.Greater(userNetworks1.Count, 0);

            // test GetByNetwork
            var userNetworks2 = DataContext.UserNetwork.GetByNetwork(network.ID);
            Assert.Greater(userNetworks2.Count, 0);

            // test Get(id)
            var userNetwork1 = DataContext.UserNetwork.Get(userNetwork.ID);
            Assert.IsNotNull(userNetwork1);
            Assert.AreEqual(user.ID, userNetwork1.UserID);
            Assert.AreEqual(network.ID, userNetwork1.NetworkID);
            Assert.IsNotNull(userNetwork1.User);
            Assert.IsNotNull(userNetwork1.Network);

            // test Get(userId, networkId)
            var userNetwork2 = DataContext.UserNetwork.Get(user.ID, network.ID);
            Assert.IsNotNull(userNetwork2);

            // test Delete
            DataContext.UserNetwork.Delete(userNetwork.ID);
            var userNetwork3 = DataContext.UserNetwork.Get(userNetwork.ID);
            Assert.IsNull(userNetwork3);
        }
Ejemplo n.º 5
0
        public void AccessKey()
        {
            var user = new User("Test", (int)UserRole.Administrator, (int)UserStatus.Active);
            user.SetPassword("TestPass");
            DataContext.User.Save(user);
            RegisterTearDown(() => DataContext.User.Delete(user.ID));

            var accessKey = new AccessKey(user.ID, AccessKeyType.Default, "Test");
            accessKey.Permissions.Add(new AccessKeyPermission { Subnets = new[] { "127.0.0.1" } });
            accessKey.Permissions.Add(new AccessKeyPermission { Subnets = new[] { "127.0.0.2" } });
            DataContext.AccessKey.Save(accessKey);
            RegisterTearDown(() => DataContext.AccessKey.Delete(accessKey.ID));

            // test GetByUser
            var accessKeys = DataContext.AccessKey.GetByUser(user.ID);
            Assert.AreEqual(1, accessKeys.Count);
            Assert.AreEqual(accessKey.ID, accessKeys[0].ID);
            Assert.AreEqual(user.ID, accessKeys[0].UserID);

            // test GetByUsers
            accessKeys = DataContext.AccessKey.GetByUsers(new[] { user.ID }, new AccessKeyFilter { Type = (int)AccessKeyType.Default });
            Assert.AreEqual(1, accessKeys.Count);
            Assert.AreEqual(accessKey.ID, accessKeys[0].ID);
            Assert.AreEqual(user.ID, accessKeys[0].UserID);

            // test Get(id)
            var accessKey1 = DataContext.AccessKey.Get(accessKey.ID);
            Assert.IsNotNull(accessKey1);
            Assert.AreEqual("Test", accessKey1.Label);
            Assert.AreEqual(accessKey.Key, accessKey1.Key);
            Assert.IsNotNull(accessKey1.Permissions);
            Assert.AreEqual(2, accessKey1.Permissions.Count);
            Assert.AreEqual(new[] { "127.0.0.1" }, accessKey1.Permissions[0].Subnets);
            Assert.AreEqual(new[] { "127.0.0.2" }, accessKey1.Permissions[1].Subnets);

            // test Save
            accessKey.Type = (int)AccessKeyType.Session;
            accessKey.Label = "Test2";
            accessKey.GenerateKey();
            accessKey.ExpirationDate = DateTime.UtcNow;
            accessKey.Permissions.RemoveAt(1);
            accessKey.Permissions.Add(new AccessKeyPermission {
                Subnets = new[] { "127.0.0.3" },
                Domains = new[] { "www.example.com" },
                Networks = new[] { 1, 2, 3 }});
            DataContext.AccessKey.Save(accessKey);
            var accessKey2 = DataContext.AccessKey.Get(accessKey.ID);
            Assert.AreEqual(1, accessKey2.Type);
            Assert.AreEqual("Test2", accessKey2.Label);
            Assert.AreEqual(accessKey.Key, accessKey2.Key);
            Assert.IsNotNull(accessKey2.ExpirationDate);
            Assert.IsNotNull(accessKey2.Permissions);
            Assert.AreEqual(2, accessKey2.Permissions.Count);
            Assert.AreEqual(new[] { "127.0.0.1" }, accessKey2.Permissions[0].Subnets);
            Assert.AreEqual(new[] { "127.0.0.3" }, accessKey2.Permissions[1].Subnets);
            Assert.AreEqual(new[] { "www.example.com" }, accessKey2.Permissions[1].Domains);
            Assert.AreEqual(new[] { 1, 2, 3 }, accessKey2.Permissions[1].Networks);

            // test Delete
            DataContext.AccessKey.Delete(accessKey.ID);
            var accessKey3 = DataContext.AccessKey.Get(accessKey.ID);
            Assert.IsNull(accessKey3);
        }
Ejemplo n.º 6
0
        public void UserTest()
        {
            var user = new User("Test", "TestPass", (int)UserRole.Administrator, (int)UserStatus.Active);
            UserRepository.Save(user);

            // test GetAll
            var users = UserRepository.GetAll();
            Assert.Greater(users.Count, 0);

            // test Get(id)
            var user1 = UserRepository.Get(user.ID);
            Assert.IsNotNull(user1);
            Assert.AreEqual("Test", user1.Login);
            Assert.IsTrue(user1.IsValidPassword("TestPass"));
            Assert.IsFalse(user1.IsValidPassword("TestPass2"));
            Assert.AreEqual((int)UserRole.Administrator, user1.Role);
            Assert.AreEqual((int)UserStatus.Active, user1.Status);

            // test Get(name)
            var user2 = UserRepository.Get("Test");
            Assert.IsNotNull(user2);

            // test Save
            user.Login = "******";
            user.SetPassword("TestPass2");
            user.Role = (int)UserRole.Client;
            user.Status = (int)UserStatus.Disabled;
            user.LastLogin = DateTime.UtcNow;
            user.LoginAttempts = 1;
            UserRepository.Save(user);
            var user3 = UserRepository.Get(user.ID);
            Assert.AreEqual("Test2", user3.Login);
            Assert.IsTrue(user3.IsValidPassword("TestPass2"));
            Assert.AreEqual((int)UserRole.Client, user3.Role);
            Assert.AreEqual((int)UserStatus.Disabled, user3.Status);
            Assert.IsNotNull(user3.LastLogin);
            Assert.AreEqual(1, user3.LoginAttempts);

            // test Delete
            UserRepository.Delete(user.ID);
            var user4 = UserRepository.Get(user.ID);
            Assert.IsNull(user4);
        }