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 }