blob: ebabd898fe5f07d29fad4c3c2da5f1e3855810fa [file] [log] [blame]
/*
* 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;
}
}
}