github.com/echohead/hub@v2.2.1+incompatible/github/project_test.go (about)

     1  package github
     2  
     3  import (
     4  	"net/url"
     5  	"os"
     6  	"testing"
     7  
     8  	"github.com/github/hub/Godeps/_workspace/src/github.com/bmizerany/assert"
     9  	"github.com/github/hub/fixtures"
    10  )
    11  
    12  func TestProject_WebURL(t *testing.T) {
    13  	project := Project{
    14  		Name:     "foo",
    15  		Owner:    "bar",
    16  		Host:     "github.com",
    17  		Protocol: "https",
    18  	}
    19  
    20  	url := project.WebURL("", "", "baz")
    21  	assert.Equal(t, "https://github.com/bar/foo/baz", url)
    22  
    23  	url = project.WebURL("1", "2", "")
    24  	assert.Equal(t, "https://github.com/2/1", url)
    25  
    26  	url = project.WebURL("hub.wiki", "defunkt", "")
    27  	assert.Equal(t, "https://github.com/defunkt/hub/wiki", url)
    28  
    29  	url = project.WebURL("hub.wiki", "defunkt", "commits")
    30  	assert.Equal(t, "https://github.com/defunkt/hub/wiki/_history", url)
    31  
    32  	url = project.WebURL("hub.wiki", "defunkt", "pages")
    33  	assert.Equal(t, "https://github.com/defunkt/hub/wiki/_pages", url)
    34  }
    35  
    36  func TestProject_GitURL(t *testing.T) {
    37  	os.Setenv("HUB_PROTOCOL", "https")
    38  	defer os.Setenv("HUB_PROTOCOL", "")
    39  
    40  	project := Project{
    41  		Name:  "foo",
    42  		Owner: "bar",
    43  		Host:  "github.com",
    44  	}
    45  
    46  	url := project.GitURL("gh", "jingweno", false)
    47  	assert.Equal(t, "https://github.com/jingweno/gh.git", url)
    48  
    49  	os.Setenv("HUB_PROTOCOL", "git")
    50  	url = project.GitURL("gh", "jingweno", false)
    51  	assert.Equal(t, "git://github.com/jingweno/gh.git", url)
    52  
    53  	url = project.GitURL("gh", "jingweno", true)
    54  	assert.Equal(t, "git@github.com:jingweno/gh.git", url)
    55  }
    56  
    57  func TestProject_GitURLEnterprise(t *testing.T) {
    58  	project := Project{
    59  		Name:  "foo",
    60  		Owner: "bar",
    61  		Host:  "https://github.corporate.com",
    62  	}
    63  
    64  	defer os.Setenv("HUB_PROTOCOL", "")
    65  
    66  	os.Setenv("HUB_PROTOCOL", "https")
    67  	url := project.GitURL("gh", "jingweno", false)
    68  	assert.Equal(t, "https://github.corporate.com/jingweno/gh.git", url)
    69  
    70  	os.Setenv("HUB_PROTOCOL", "git")
    71  	url = project.GitURL("gh", "jingweno", false)
    72  	assert.Equal(t, "git://github.corporate.com/jingweno/gh.git", url)
    73  
    74  	url = project.GitURL("gh", "jingweno", true)
    75  	assert.Equal(t, "git@github.corporate.com:jingweno/gh.git", url)
    76  }
    77  
    78  func TestProject_NewProjectFromURL(t *testing.T) {
    79  	testConfigs := fixtures.SetupTestConfigs()
    80  	defer testConfigs.TearDown()
    81  
    82  	u, _ := url.Parse("ssh://git@github.com/octokit/go-octokit.git")
    83  	p, err := NewProjectFromURL(u)
    84  
    85  	assert.Equal(t, nil, err)
    86  	assert.Equal(t, "go-octokit", p.Name)
    87  	assert.Equal(t, "octokit", p.Owner)
    88  	assert.Equal(t, "github.com", p.Host)
    89  	assert.Equal(t, "http", p.Protocol)
    90  
    91  	u, _ = url.Parse("git://github.com/octokit/go-octokit.git")
    92  	p, err = NewProjectFromURL(u)
    93  
    94  	assert.Equal(t, nil, err)
    95  	assert.Equal(t, "go-octokit", p.Name)
    96  	assert.Equal(t, "octokit", p.Owner)
    97  	assert.Equal(t, "github.com", p.Host)
    98  	assert.Equal(t, "http", p.Protocol)
    99  
   100  	u, _ = url.Parse("https://github.com/octokit/go-octokit")
   101  	p, err = NewProjectFromURL(u)
   102  
   103  	assert.Equal(t, nil, err)
   104  	assert.Equal(t, "go-octokit", p.Name)
   105  	assert.Equal(t, "octokit", p.Owner)
   106  	assert.Equal(t, "github.com", p.Host)
   107  	assert.Equal(t, "https", p.Protocol)
   108  
   109  	u, _ = url.Parse("origin/master")
   110  	_, err = NewProjectFromURL(u)
   111  
   112  	assert.NotEqual(t, nil, err)
   113  }