| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| using System; |
| using System.Collections.Generic; |
| using System.Threading; |
| |
| namespace Apache.Geode.Client.UnitTests |
| { |
| using NUnit.Framework; |
| using Apache.Geode.Client.Tests; |
| using Apache.Geode.DUnitFramework; |
| using Apache.Geode.Client; |
| |
| [TestFixture] |
| [Category("group1")] |
| [Category("unicast_only")] |
| [Category("generics")] |
| public class ThinClientSecurityAuthSetAuthInitializeTests : ThinClientRegionSteps |
| { |
| #region Private members |
| |
| private const string CacheXml1 = "cacheserver_notify_subscription.xml"; |
| |
| private UsernamePasswordAuthInitialize authInitialize = new UsernamePasswordAuthInitialize(); |
| |
| #endregion |
| |
| protected override ClientBase[] GetClients() |
| { |
| return new ClientBase[] { }; |
| } |
| |
| [TearDown] |
| public override void EndTest() |
| { |
| try { |
| CacheHelper.Close(); |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| } finally { |
| CacheHelper.StopJavaServers(); |
| } |
| base.EndTest(); |
| } |
| |
| |
| public void CreateClient(string regionName, string locators) |
| { |
| CacheHelper.Close(); |
| Properties<string, string> sysProps = new Properties<string, string>(); |
| sysProps.Insert("security-username", "root"); |
| sysProps.Insert("security-password", "root"); |
| |
| CacheHelper.InitConfig(sysProps, authInitialize); |
| |
| Assert.IsFalse(authInitialize.called); |
| |
| CacheHelper.CreatePool<object, object>("__TESTPOOL1_", locators, (string)null, |
| 0, true, -1, false); |
| |
| CacheHelper.CreateTCRegion_Pool<object, object>(regionName, true, true, |
| null, locators, "__TESTPOOL1_", true); |
| } |
| |
| public void AssertAuthInitializeCalled(bool called) |
| { |
| Assert.AreEqual(called, authInitialize.called); |
| } |
| |
| void runValidCredentials() |
| { |
| var dataDir = Util.GetEnvironmentVariable("TESTSRC"); |
| Properties<string, string> javaProps = new Properties<string, string>(); |
| javaProps.Insert("gemfire.security-authz-xml-uri", dataDir + "\\..\\..\\templates\\security\\authz-dummy.xml"); |
| string authenticator = "javaobject.DummyAuthenticator.create"; |
| |
| // Start the server |
| CacheHelper.SetupJavaServers(true, CacheXml1); |
| CacheHelper.StartJavaLocator(1, "GFELOC"); |
| Util.Log("Locator started"); |
| CacheHelper.StartJavaServerWithLocators(1, "GFECS1", 1, SecurityTestUtil.GetServerArgs( |
| authenticator, null, javaProps)); |
| Util.Log("Cacheserver 1 started."); |
| |
| |
| AssertAuthInitializeCalled(false); |
| CreateClient(RegionName, CacheHelper.Locators); |
| |
| // Perform some put operations from client1 |
| DoPuts(4); |
| AssertAuthInitializeCalled(true); |
| |
| // Verify that the puts succeeded |
| DoGets(4); |
| |
| Close(); |
| |
| CacheHelper.StopJavaServer(1); |
| |
| CacheHelper.StopJavaLocator(1); |
| |
| CacheHelper.ClearEndpoints(); |
| CacheHelper.ClearLocators(); |
| |
| } |
| |
| [Test] |
| public void ValidCredentials() |
| { |
| runValidCredentials(); |
| } |
| |
| } |
| |
| |
| public class UsernamePasswordAuthInitialize : IAuthInitialize |
| { |
| public bool called = false; |
| |
| public void Close() { } |
| |
| public Properties<string, object> GetCredentials(Properties<string, string> props, string server) |
| { |
| called = true; |
| var credentials = new Properties<string, object>(); |
| credentials.Insert("security-username", props.Find("security-username")); |
| credentials.Insert("security-password", props.Find("security-password")); |
| return credentials; |
| } |
| } |
| } |