summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/github-url-from-git/test.js
blob: 93aa38bb1f9f9fab360ab2cc1e2b32781d2c7bd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
var parse = require('./');
var assert = require('better-assert');

describe('parse(url)', function(){
  it('should support git://*', function(){
    var url = 'git://github.com/jamesor/mongoose-versioner';
    parse(url).should.equal('https://github.com/jamesor/mongoose-versioner');
  })

  it('should support git://*.git', function(){
    var url = 'git://github.com/treygriffith/cellar.git';
    parse(url).should.equal('https://github.com/treygriffith/cellar');
  })

  it('should support https://*', function(){
    var url = 'https://github.com/Empeeric/i18n-node';
    parse(url).should.equal('https://github.com/Empeeric/i18n-node');
  })

  it('should support https://*.git', function(){
    var url = 'https://jpillora@github.com/banchee/tranquil.git';
    parse(url).should.equal('https://github.com/banchee/tranquil');
  })

  it('should return undefined on failure', function(){
    var url = 'git://github.com/justgord/.git';
    assert(null == parse(url));
  })

  it('should parse git@github.com:bcoe/thumbd.git', function() {
    var url = 'git@github.com:bcoe/thumbd.git';
    parse(url).should.eql('https://github.com/bcoe/thumbd');
  })

  it('should parse git@github.com:bcoe/thumbd.git#2.7.0', function() {
    var url = 'git@github.com:bcoe/thumbd.git#2.7.0';
    parse(url).should.eql('https://github.com/bcoe/thumbd');
  })

  it('should parse git+https://github.com/bcoe/thumbd.git', function() {
    var url = 'git+https://github.com/bcoe/thumbd.git';
    parse(url).should.eql('https://github.com/bcoe/thumbd');
  })

  it('should parse git+ssh://github.com/bcoe/thumbd.git', function() {
    var url = 'git+ssh://github.com/bcoe/thumbd.git';
    parse(url).should.eql('https://github.com/bcoe/thumbd');
  })

  it('should parse https://EastCloud@github.com/EastCloud/node-websockets.git', function() {
    var url = 'https://EastCloud@github.com/EastCloud/node-websockets.git';
    parse(url).should.eql('https://github.com/EastCloud/node-websockets');
  })

  // gist urls.

  it('should parse git@gist urls', function() {
    var url = 'git@gist.github.com:3135914.git';
    parse(url).should.equal('https://gist.github.com/3135914')
  })

  it('should parse https://gist urls', function() {
    var url = 'https://gist.github.com/3135914.git';
    parse(url).should.equal('https://gist.github.com/3135914')
  })

  // Handle arbitrary GitHub Enterprise domains.

  it('should parse parse extra GHE urls provided', function() {
    var url = 'git://github.example.com/treygriffith/cellar.git';
    parse(
      url, {extraBaseUrls: ['github.example.com']}
    ).should.equal('https://github.example.com/treygriffith/cellar');
  });

  it('should parse GHE urls with multiple subdomains', function() {
    var url = 'git://github.internal.example.com/treygriffith/cellar.git';
    parse(
      url, {extraBaseUrls: ['github.internal.example.com']}
    ).should.equal('https://github.internal.example.com/treygriffith/cellar');
  });
})

describe('re', function() {
  it('should expose GitHub url parsing regex', function() {
    parse.re.source.should.equal(
      /^(?:https?:\/\/|git:\/\/|git\+ssh:\/\/|git\+https:\/\/)?(?:[^@]+@)?(gist.github.com|github.com)[:\/]([^\/]+\/[^\/]+?|[0-9]+)$/.source
    )
  });
})