001package org.apache.maven.scm.provider.perforce;
002
003/*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements.  See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership.  The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License.  You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied.  See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022import org.apache.maven.scm.ScmTestCase;
023import org.apache.maven.scm.provider.perforce.repository.PerforceScmProviderRepository;
024import org.apache.maven.scm.repository.ScmRepository;
025import org.codehaus.plexus.util.StringUtils;
026
027/**
028 * @author <a href="mailto:trygvis@inamo.no">Trygve Laugst&oslash;l</a>
029 */
030public class PerforceScmProviderTest
031    extends ScmTestCase
032{
033    public void testParseConnection()
034        throws Exception
035    {
036        ScmRepository repo = makeScmRepository( "scm:perforce://depot/projects/pathname" );
037
038        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
039
040        assertNull( p4Repo.getHost() );
041
042        assertEquals( 0, p4Repo.getPort() );
043
044        assertNull( p4Repo.getUser() );
045
046        assertNull( p4Repo.getPassword() );
047
048        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
049
050        assertTrue( StringUtils.isBlank( p4Repo.getProtocol() ) );
051    }
052
053    public void testParseConnectionWithUsername()
054        throws Exception
055    {
056        ScmRepository repo = makeScmRepository( "scm:perforce:username@//depot/projects/pathname" );
057
058        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
059
060        assertNull( p4Repo.getHost() );
061
062        assertEquals( 0, p4Repo.getPort() );
063
064        assertEquals( "username", p4Repo.getUser() );
065
066        assertNull( p4Repo.getPassword() );
067
068        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
069    }
070
071    public void testParseConnectionWithHostPortAndUsername()
072        throws Exception
073    {
074        ScmRepository repo = makeScmRepository( "scm:perforce:host:1234:username@//depot/projects/pathname" );
075
076        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
077
078        assertEquals( "host", p4Repo.getHost() );
079
080        assertEquals( 1234, p4Repo.getPort() );
081
082        assertEquals( "username", p4Repo.getUser() );
083
084        assertNull( p4Repo.getPassword() );
085
086        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
087    }
088
089    public void testParseConnectionWithHostAndPort()
090        throws Exception
091    {
092        ScmRepository repo = makeScmRepository( "scm:perforce:host:1234://depot/projects/pathname" );
093
094        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
095
096        assertEquals( "host", p4Repo.getHost() );
097
098        assertEquals( 1234, p4Repo.getPort() );
099
100        assertNull( p4Repo.getUser() );
101
102        assertNull( p4Repo.getPassword() );
103
104        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
105    }
106
107    public void testParseConnectionWithHostPortAndUsername2()
108        throws Exception
109    {
110        ScmRepository repo = makeScmRepository( "scm:perforce:username@host:1234://depot/projects/pathname" );
111
112        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
113
114        assertEquals( "host", p4Repo.getHost() );
115
116        assertEquals( 1234, p4Repo.getPort() );
117
118        assertEquals( "username", p4Repo.getUser() );
119
120        assertNull( p4Repo.getPassword() );
121
122        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
123    }
124
125    public void testParseConnectionWithHostAndUsername()
126        throws Exception
127    {
128        ScmRepository repo = makeScmRepository( "scm:perforce:username@host://depot/projects/pathname" );
129
130        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
131
132        assertEquals( "host", p4Repo.getHost() );
133
134        assertEquals( 0, p4Repo.getPort() );
135
136        assertEquals( "username", p4Repo.getUser() );
137
138        assertNull( p4Repo.getPassword() );
139
140        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
141    }
142
143    public void testParseConnectionWithHost()
144        throws Exception
145    {
146        ScmRepository repo = makeScmRepository( "scm:perforce:host://depot/projects/pathname" );
147
148        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
149
150        assertEquals( "host", p4Repo.getHost() );
151
152        assertEquals( 0, p4Repo.getPort() );
153
154        assertNull( p4Repo.getUser() );
155
156        assertNull( p4Repo.getPassword() );
157
158        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
159    }
160
161    public void testRepositoryPathCanonicalization()
162    {
163        assertEquals( "//depot/foo/bar/...", PerforceScmProvider.getCanonicalRepoPath( "//depot/foo/bar" ) );
164
165        assertEquals( "//depot/foo/bar/...", PerforceScmProvider.getCanonicalRepoPath( "//depot/foo/bar/" ) );
166
167        assertEquals( "//depot/foo/bar/...", PerforceScmProvider.getCanonicalRepoPath( "//depot/foo/bar/..." ) );
168    }
169
170    public void testParseConnectionWithSsl()
171        throws Exception
172    {
173        ScmRepository repo = makeScmRepository( "scm:perforce:ssl:host:1066://depot/projects/pathname" );
174
175        PerforceScmProviderRepository p4Repo = (PerforceScmProviderRepository) repo.getProviderRepository();
176
177        assertEquals( "host", p4Repo.getHost() );
178
179        assertEquals( 1066, p4Repo.getPort() );
180
181        assertNull( p4Repo.getUser() );
182
183        assertNull( p4Repo.getPassword() );
184
185        assertEquals( "//depot/projects/pathname", p4Repo.getPath() );
186
187        assertEquals( "ssl", p4Repo.getProtocol() );
188    }
189}