/*
* Copyright 2013 Urs Wolfer
*
* Licensed 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.
*/
package com.urswolfer.intellij.plugin.gerrit.rest;
import org.testng.Assert;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
/**
* @author Urs Wolfer
*/
public class GerritUtilTest {
private GerritUtil gerritUtil;
@BeforeMethod
public void setup() {
gerritUtil = GerritTestModule.getInstance(GerritUtil.class);
}
@Test
public void testProjectNames() throws Exception {
final Method getProjectName = GerritUtil.class.getDeclaredMethod("getProjectName",
String.class, String.class);
getProjectName.setAccessible(true);
// Default set - test trailing / behaviour
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server",
"http://gerrit.server/project"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/",
"http://gerrit.server/project"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server",
"http://gerrit.server/project/"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/",
"http://gerrit.server/project/"
));
// Subdirectory set - test trailing / behaviour
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r",
"http://gerrit.server/r/project"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r/",
"http://gerrit.server/r/project"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r",
"http://gerrit.server/r/project/"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r/",
"http://gerrit.server/r/project/"
));
// Default set - test named .git
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server",
"http://gerrit.server/project.git"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/",
"http://gerrit.server/project.git"
));
// Subdirectory set - test named .git
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r",
"http://gerrit.server/r/project.git"
));
Assert.assertEquals("project",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r/",
"http://gerrit.server/r/project.git"
));
// Test some project names with / in them
Assert.assertEquals("project/blah/test",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r",
"http://gerrit.server/r/project/blah/test"
));
Assert.assertEquals("project/blah/test",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/r",
"http://gerrit.server/r/project/blah/test.git"
));
// specific case where gerrit URL is provided via HTTP but git is configured to use ssh
Assert.assertEquals("project/blah",
getProjectName.invoke(gerritUtil,
"http://gerrit.server/gerrit",
"ssh://git@gerrit.server:29418/project/blah"
));
// should not fail with an StringIndexOutOfBoundsException
Assert.assertEquals("",
getProjectName.invoke(gerritUtil,
"http://gerrit.server",
"http://gerrit.server"
));
}
}