veye 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +48 -41
  3. data/README.md +36 -17
  4. data/bin/veye +176 -47
  5. data/bundle +0 -0
  6. data/changelogs.md +19 -0
  7. data/lib/veye/api/package.rb +16 -2
  8. data/lib/veye/api/project.rb +41 -6
  9. data/lib/veye/base_executor.rb +81 -16
  10. data/lib/veye/github/delete.rb +2 -4
  11. data/lib/veye/github/import.rb +3 -4
  12. data/lib/veye/package/follow.rb +9 -9
  13. data/lib/veye/package/info.rb +4 -4
  14. data/lib/veye/package/references.rb +4 -6
  15. data/lib/veye/package/search.rb +2 -1
  16. data/lib/veye/package/versions.rb +37 -0
  17. data/lib/veye/package.rb +2 -0
  18. data/lib/veye/project/check.rb +19 -9
  19. data/lib/veye/project.rb +86 -2
  20. data/lib/veye/version.rb +1 -1
  21. data/lib/veye/views/base_csv.rb +1 -1
  22. data/lib/veye/views/github/info_csv.rb +1 -1
  23. data/lib/veye/views/github/info_pretty.rb +1 -1
  24. data/lib/veye/views/github/info_table.rb +2 -2
  25. data/lib/veye/views/package/info_csv.rb +4 -3
  26. data/lib/veye/views/package/info_pretty.rb +4 -2
  27. data/lib/veye/views/package/info_table.rb +4 -1
  28. data/lib/veye/views/package/versions_csv.rb +24 -0
  29. data/lib/veye/views/package/versions_json.rb +15 -0
  30. data/lib/veye/views/package/versions_pretty.rb +23 -0
  31. data/lib/veye/views/package/versions_table.rb +27 -0
  32. data/lib/veye/views/package.rb +4 -0
  33. data/lib/veye/views/project/dependency_csv.rb +18 -10
  34. data/lib/veye/views/project/dependency_pretty.rb +13 -2
  35. data/lib/veye/views/project/dependency_table.rb +8 -2
  36. data/lib/veye/views/project/info_csv.rb +9 -3
  37. data/lib/veye/views/project/info_markdown.rb +7 -2
  38. data/lib/veye/views/project/info_pretty.rb +6 -1
  39. data/lib/veye/views/project/info_table.rb +8 -3
  40. data/lib/veye.rb +26 -3
  41. data/test/api/package_test.rb +15 -0
  42. data/test/api/project_test.rb +83 -19
  43. data/test/base/base_executor_test.rb +87 -0
  44. data/test/fixtures/vcr_cassettes/github_delete.yml +7 -7
  45. data/test/fixtures/vcr_cassettes/github_import.yml +11 -13
  46. data/test/fixtures/vcr_cassettes/github_info.yml +10 -10
  47. data/test/fixtures/vcr_cassettes/github_list.yml +12 -12
  48. data/test/fixtures/vcr_cassettes/github_sync.yml +7 -7
  49. data/test/fixtures/vcr_cassettes/package_follow.yml +10 -10
  50. data/test/fixtures/vcr_cassettes/package_follow_status.yml +7 -7
  51. data/test/fixtures/vcr_cassettes/package_info.yml +17 -18
  52. data/test/fixtures/vcr_cassettes/package_info_default.yml +54 -0
  53. data/test/fixtures/vcr_cassettes/package_info_versioned.yml +54 -0
  54. data/test/fixtures/vcr_cassettes/package_reference.yml +8 -8
  55. data/test/fixtures/vcr_cassettes/package_search.yml +8 -8
  56. data/test/fixtures/vcr_cassettes/package_unfollow.yml +7 -7
  57. data/test/fixtures/vcr_cassettes/package_versions.yml +44 -0
  58. data/test/fixtures/vcr_cassettes/project_check_new.yml +33 -30
  59. data/test/fixtures/vcr_cassettes/project_check_update.yml +29 -30
  60. data/test/fixtures/vcr_cassettes/project_delete.yml +8 -8
  61. data/test/fixtures/vcr_cassettes/project_delete_for_licenses.yml +48 -0
  62. data/test/fixtures/vcr_cassettes/project_delete_for_update.yml +46 -0
  63. data/test/fixtures/vcr_cassettes/project_delete_merge_child.yml +46 -0
  64. data/test/fixtures/vcr_cassettes/project_delete_merge_parent.yml +46 -0
  65. data/test/fixtures/vcr_cassettes/project_get.yml +11 -12
  66. data/test/fixtures/vcr_cassettes/project_license.yml +11 -12
  67. data/test/fixtures/vcr_cassettes/project_license_command.yml +49 -0
  68. data/test/fixtures/vcr_cassettes/project_list.yml +14 -14
  69. data/test/fixtures/vcr_cassettes/project_merge.yml +46 -0
  70. data/test/fixtures/vcr_cassettes/project_unmerge.yml +46 -0
  71. data/test/fixtures/vcr_cassettes/project_update.yml +15 -16
  72. data/test/fixtures/vcr_cassettes/project_upload.yml +17 -16
  73. data/test/fixtures/vcr_cassettes/project_upload_for_licenses.yml +107 -0
  74. data/test/fixtures/vcr_cassettes/project_upload_for_update.yml +105 -0
  75. data/test/fixtures/vcr_cassettes/project_upload_merge_child.yml +65 -0
  76. data/test/fixtures/vcr_cassettes/project_upload_merge_parent.yml +104 -0
  77. data/test/fixtures/vcr_cassettes/project_upload_with_args.yml +106 -0
  78. data/test/fixtures/vcr_cassettes/services_ping.yml +6 -8
  79. data/test/fixtures/vcr_cassettes/user_get_favorites.yml +10 -10
  80. data/test/fixtures/vcr_cassettes/user_get_profile.yml +10 -10
  81. data/test/github_delete_test.rb +5 -3
  82. data/test/github_import_test.rb +8 -15
  83. data/test/github_info_test.rb +2 -2
  84. data/test/package_follow_test.rb +3 -3
  85. data/test/package_info_test.rb +16 -15
  86. data/test/package_reference_test.rb +4 -4
  87. data/test/package_search_test.rb +4 -4
  88. data/test/package_versions_test.rb +73 -0
  89. data/test/project_check_test.rb +107 -79
  90. data/test/project_license_test.rb +29 -11
  91. data/test/project_test.rb +59 -0
  92. data/test/user_me_test.rb +4 -4
  93. data/veye.gemspec +10 -8
  94. data/veye.log +11 -0
  95. metadata +73 -20
@@ -15,9 +15,11 @@ module Veye
15
15
  printf("\t%-15s: %s\n", "Product key",
16
16
  "#{result["prod_key"]}".bright)
17
17
  printf("\t%-15s:\n\t %s\n", "Description", result["description"])
18
- printf("\t%-15s: %s\n", "Group id", result["group_id"])
19
- printf("\t%-15s: %s\n", "Link", result["links"].first.fetch('link'))
18
+ printf("\t%-15s: %s\n", 'Group id', result["group_id"])
19
+ printf("\t%-15s: %s\n", 'Link', result["links"].first.fetch('link'))
20
20
 
21
+ vulns = result['security_vulnerabilities'].to_a.map {|x| x['name_id'] }.join(',')
22
+ printf("\t%-15s: %s\n", 'CVEs', (vulns.empty? ? 'none'.color(:green) : vulns.color(:red)))
21
23
  end
22
24
  end
23
25
 
@@ -4,17 +4,20 @@ module Veye
4
4
  module Package
5
5
  class InfoTable < BaseTable
6
6
  def initialize
7
- headings = %w(name version product_key language license description)
7
+ headings = %w(name version product_key language license description CVEs)
8
8
  super("Package information", headings)
9
9
  end
10
10
  def format(results)
11
11
  result = results
12
12
  return if result.nil?
13
+
14
+ vulns = result['security_vulnerabilities'].to_a.map {|x| x['name_id'] }.join(',')
13
15
 
14
16
  row = [result["name"], result["version"], result["prod_key"]]
15
17
  row << result["language"]
16
18
  row << result["license_info"]
17
19
  row << result["description"]
20
+ row << vulns
18
21
 
19
22
  @table << row
20
23
  end
@@ -0,0 +1,24 @@
1
+ require_relative '../base_csv.rb'
2
+
3
+ module Veye
4
+ module Package
5
+ class VersionsCSV < BaseCSV
6
+ def initialize
7
+ headers = "nr,version,language,prod_key,prod_type,released_at"
8
+ super(headers)
9
+ end
10
+
11
+ def format(results, n = 10, from = 0)
12
+ prod_dt = results
13
+
14
+ results['versions'].to_a.each_with_index do |ver, i|
15
+ printf(
16
+ "%s,%s,%s,%s,%s,%s\n",
17
+ (from + i + 1), ver['version'], prod_dt['language'],
18
+ prod_dt['prod_key'], prod_dt['prod_type'], ver['released_at']
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../base_json.rb'
2
+
3
+ module Veye
4
+ module Package
5
+ class VersionsJSON < BaseJSON
6
+ def format(results, n = 10, from = 0)
7
+ @results[:results] = results
8
+ @results[:pagination] = {
9
+ n: n,
10
+ from: from
11
+ }
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,23 @@
1
+ require_relative '../base_pretty.rb'
2
+
3
+ module Veye
4
+ module Package
5
+ class VersionsPretty < BasePretty
6
+ def format(result, n = 10, from = 0)
7
+ return if result.nil?
8
+
9
+ printf("\t%15s - %s\n", result['name'].to_s.color(:green).bright, result['version'].to_s.bright)
10
+ printf("\t%-15s: %s\n", 'Language', result['language'])
11
+ printf("\t%-15s: %s\n", 'Product type', result['prod_type'])
12
+ printf("\t%-15s: %s\n", 'Product key', result['prod_key'])
13
+
14
+ printf("\t%-15s: %d after skipping %d items\n", 'Showing items', n, from)
15
+
16
+
17
+ result['versions'].to_a.each_with_index do |ver, i|
18
+ printf("\t%-15s: %s\t%s\n", ver['version'], (from + i + 1), ver['released_at'])
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ require_relative '../base_table.rb'
2
+
3
+ module Veye
4
+ module Package
5
+ class VersionsTable < BaseTable
6
+ def initialize
7
+ headings = %w(nr name version released_at product_key language product_type)
8
+ super('Package versions', headings)
9
+ end
10
+
11
+ def format(results, n = 10, from = 0)
12
+ return if results.nil?
13
+
14
+ results['versions'].to_a.each_with_index do |ver, i|
15
+ row = [
16
+ (from + i + 1), results['name'], ver['version'], ver['released_at'],
17
+ results['prod_key'], results['language'], results['prod_type']
18
+ ]
19
+
20
+ @table << row
21
+ end
22
+
23
+ @table
24
+ end
25
+ end
26
+ end
27
+ end
@@ -13,6 +13,10 @@ require_relative 'package/references_json.rb'
13
13
  require_relative 'package/references_pretty.rb'
14
14
  require_relative 'package/references_table.rb'
15
15
 
16
+ require_relative 'package/versions_csv.rb'
17
+ require_relative 'package/versions_json.rb'
18
+ require_relative 'package/versions_pretty.rb'
19
+ require_relative 'package/versions_table.rb'
16
20
 
17
21
  module Veye
18
22
  module Package
@@ -4,7 +4,7 @@ module Veye
4
4
  module Project
5
5
  class DependencyCSV < BaseCSV
6
6
  def initialize
7
- headings = "nr,name,prod_key,outdated,current,requested,stable,licenses"
7
+ headings = "nr,name,prod_key,outdated,current,requested,stable,licenses,upgrade_cost"
8
8
  super(headings)
9
9
  end
10
10
 
@@ -22,15 +22,23 @@ module Veye
22
22
  end
23
23
 
24
24
  def print_line(result, i)
25
- printf("%d,%s,%s,%s,%s,%s,%s,%s\n",
26
- i,
27
- result['name'],
28
- result['prod_key'],
29
- result['outdated'],
30
- result['version_current'],
31
- result['version_requested'],
32
- result['stable'],
33
- result['licenses'].to_a.map {|x| x['name']}.join(';'))
25
+ upgrade_cost = if result.has_key?(:upgrade)
26
+ "#{result[:upgrade][:difficulty]}(#{result[:upgrade][:dv_score]})"
27
+ else
28
+ nil
29
+ end
30
+ printf(
31
+ "%d,%s,%s,%s,%s,%s,%s,'%s','%s'\n",
32
+ i,
33
+ result['name'],
34
+ result['prod_key'],
35
+ result['outdated'],
36
+ result['version_current'],
37
+ result['version_requested'],
38
+ result['stable'],
39
+ result['licenses'].to_a.map {|x| x['name']}.join(';'),
40
+ upgrade_cost
41
+ )
34
42
  end
35
43
 
36
44
  def print_line_with_filename(result, i, filename)
@@ -6,7 +6,8 @@ module Veye
6
6
  def format(results, filename = nil)
7
7
  return if results.nil?
8
8
  results = [results] if results.is_a?(Hash)
9
- printf("#-- Dependencies ------------------------------------------\n")
9
+
10
+ printf("#-- Dependencies #{filename.to_s}-----------------------------------------\n")
10
11
  results.each_with_index do |result, index|
11
12
  project_name = "#{result['name']}".color(:green).bright
12
13
  printf("%3d - %s\n", index + 1, project_name)
@@ -25,10 +26,20 @@ module Veye
25
26
  printf("\t%-15s: %s\n", "Current", "#{result['version_current']}".color(color_code))
26
27
 
27
28
  printf("\t%-15s: %s\n", "Requested", result["version_requested"])
28
-
29
+
29
30
  licenses = result["licenses"].to_a.map {|x| x['name']}
30
31
  printf("\t%-15s: %s\n", "Licenses", licenses.join(', '))
31
32
 
33
+ if result.has_key?(:upgrade)
34
+ printf(
35
+ "\t%-15s: %s(%.2f)\n",
36
+ "Upgrade cost",
37
+ result[:upgrade][:difficulty],
38
+ result[:upgrade][:dv_score]
39
+ )
40
+ end
41
+
42
+
32
43
  end
33
44
  end
34
45
  end
@@ -4,13 +4,18 @@ module Veye
4
4
  module Project
5
5
  class DependencyTable < BaseTable
6
6
  def initialize
7
- headings = %w{index name prod_key version_current version_requested outdated stable license}
7
+ headings = %w{index name prod_key version_current version_requested outdated stable license upgrade_cost}
8
8
  super("Project dependencies", headings)
9
9
  end
10
10
  def format(results, filename = nil)
11
11
  results = [results] if results.is_a?(Hash)
12
12
 
13
13
  results.each_with_index do |result, index|
14
+ upgrade_cost = if result.has_key?(:upgrade)
15
+ "#{result[:upgrade][:difficulty]}(#{result[:upgrade][:dv_score]})"
16
+ else
17
+ ''
18
+ end
14
19
  row = [
15
20
  index + 1,
16
21
  (filename or result["name"]),
@@ -19,7 +24,8 @@ module Veye
19
24
  result["version_requested"],
20
25
  result["outdated"] ? "outdated":"no",
21
26
  result["stable"] ? "stable": "unstable",
22
- result["licenses"].to_a.map {|x| x['name']}.join(',')
27
+ result["licenses"].to_a.map {|x| x['name']}.join(','),
28
+ upgrade_cost
23
29
  ]
24
30
  @table << row
25
31
  end
@@ -4,18 +4,24 @@ module Veye
4
4
  module Project
5
5
  class InfoCSV < BaseCSV
6
6
  def initialize
7
- headers = "nr,name,project_key,public,period,source,dep_number,out_number,created_at"
7
+ headers = "nr,name,project_id,public,period,source,dep_number,out_number,created_at"
8
8
  super(headers)
9
9
  end
10
10
  def format(results)
11
11
  return nil if results.nil?
12
12
  results = [results] if results.is_a? Hash
13
-
13
+
14
14
  results.each_with_index do |result, index|
15
+ #BUG: API returns raw mongoID value as id when fetching a list of projects
16
+ if result['id'].is_a?(Hash)
17
+ result['id'] = result['id'].values.first
18
+ end
19
+
20
+
15
21
  printf("%d,%s,%s,%s,%s,%s,%s,%s,%s\n",
16
22
  index + 1,
17
23
  result['name'],
18
- result['project_key'],
24
+ result['id'],
19
25
  result['public'],
20
26
  result['period'],
21
27
  result['source'],
@@ -4,7 +4,7 @@ module Veye
4
4
  module Project
5
5
  class InfoMarkdown < BaseMarkdown
6
6
  def initialize
7
- headings = %w(index name project_key project_type public period source dependencies outdated created)
7
+ headings = %w(index name project_id project_type public period source dependencies outdated created)
8
8
  super("Project's information", headings)
9
9
  end
10
10
 
@@ -13,10 +13,15 @@ module Veye
13
13
 
14
14
  results = [results] if results.is_a?(Hash) #required for `project show`
15
15
  results.each_with_index do |result, index|
16
+ #BUG: API returns raw mongoID value as id when fetching a list of projects
17
+ if result['id'].is_a?(Hash)
18
+ result['id'] = result['id'].values.first
19
+ end
20
+
16
21
  @table << [
17
22
  (index + 1).to_s,
18
23
  result["name"],
19
- result["project_key"],
24
+ result["id"],
20
25
  result["project_type"],
21
26
  result["public"].to_s,
22
27
  result["period"],
@@ -9,9 +9,14 @@ module Veye
9
9
  results = [results] if results.is_a? Hash
10
10
 
11
11
  results.each_with_index do |result, index|
12
+ #BUG: API returns raw mongoID value as id when fetching a list of projects
13
+ if result['id'].is_a?(Hash)
14
+ result['id'] = result['id'].values.first
15
+ end
16
+
12
17
  project_name = "#{result['name']}".color(:green).bright
13
18
  printf("%3d - %s\n", index + 1, project_name)
14
- printf("\t%-15s: %s\n", "Project key", "#{result['id']}".bright)
19
+ printf("\t%-15s: %s\n", "Project id", "#{result['id']}".bright)
15
20
  printf("\t%-15s: %s\n", "Project type", result['project_type'])
16
21
  printf("\t%-15s: %s\n", "Public", result['public'])
17
22
  printf("\t%-15s: %s\n", "Period", result['period'])
@@ -4,7 +4,7 @@ module Veye
4
4
  module Project
5
5
  class InfoTable < BaseTable
6
6
  def initialize
7
- headings = %w(index name project_key private period source dependencies outdated created_at)
7
+ headings = %w(index name project_id public period source dependencies outdated created_at)
8
8
  super("List of projects", headings)
9
9
  end
10
10
 
@@ -13,8 +13,13 @@ module Veye
13
13
  results = [results] if results.is_a? Hash
14
14
 
15
15
  results.each_with_index do |result, index|
16
- row = [index + 1, result['name'], result['project_key'],
17
- result['private'], result['period'], result['source'],
16
+ #BUG: API returns raw mongoID value as id when fetching a list of projects
17
+ if result['id'].is_a?(Hash)
18
+ result['id'] = result['id'].values.first
19
+ end
20
+
21
+ row = [index + 1, result['name'], result['id'],
22
+ result['public'], result['period'], result['source'],
18
23
  result['dep_number'], result['out_number'], result['created_at']]
19
24
  @table << row
20
25
  end
data/lib/veye.rb CHANGED
@@ -2,6 +2,7 @@
2
2
  # you just need to require this one file in your bin file
3
3
  require 'rest-client'
4
4
  require 'yaml'
5
+ require 'logger'
5
6
 
6
7
  require 'veye/helpers/format_helpers.rb'
7
8
 
@@ -30,7 +31,7 @@ end
30
31
 
31
32
  def check_config_file
32
33
  unless config_exists?
33
- p format(
34
+ printf(
34
35
  "%s: %s\n",
35
36
  'config file doesnt exist.'.color(:red),
36
37
  'Use `veye initconfig` to initialize settings file.'
@@ -57,7 +58,7 @@ end
57
58
  def check_api_key(global_opts)
58
59
  result = false
59
60
  if global_opts[:api_key].nil? || global_opts[:api_key].match("add your api key")
60
- print format(
61
+ printf(
61
62
  "%s: %s\n",
62
63
  'Warning: API key is missing.'.color(:yellow),
63
64
  'You cant access private data.'
@@ -74,9 +75,31 @@ def save_configs
74
75
  File.open(filepath, 'w') do |f|
75
76
  f.puts $global_options.to_yaml
76
77
  end
77
- print format(
78
+ printf(
78
79
  "%s: %s",
79
80
  'Success'.color(:green),
80
81
  "new settings are saved into file: `#{filepath}`"
81
82
  )
82
83
  end
84
+
85
+
86
+ #-- initialize logger
87
+ module Veye
88
+ class << self
89
+ attr_writer :logger
90
+
91
+ def logger
92
+ @logger ||= Logger.new('veye.log').tap do |log|
93
+ log.level = case $global_options.fetch(:log_level, 'debug')
94
+ when 'info' then Logger::INFO
95
+ when 'debug' then Logger::DEBUG
96
+ when 'warn' then Logger::INFO
97
+ when 'error' then Logger::ERROR
98
+ when 'fatal' then Logger::FATAL
99
+ else Logger::DEBUG
100
+ end
101
+ log.progname = self.name
102
+ end
103
+ end
104
+ end
105
+ end
@@ -33,6 +33,21 @@ class PackageTest < Minitest::Test
33
33
  end
34
34
  end
35
35
 
36
+ def test_version_list_api_call
37
+ VCR.use_cassette('package_versions') do
38
+ res = Veye::API::Package.get_version_list(@api_key, 'ruby', 'ruby')
39
+ refute_nil res
40
+ assert_equal 200, res.code
41
+ assert_equal true, res.success
42
+ assert_equal 'ruby', res.data['name']
43
+ assert_equal 'ruby', res.data['language']
44
+ assert_equal '0.1.0', res.data['version']
45
+ assert_equal 'RubyGem', res.data['prod_type']
46
+ assert_equal 1, res.data['versions'].count
47
+ assert_equal '0.1.0', res.data['versions'].first['version']
48
+ end
49
+ end
50
+
36
51
  def test_get_follow_status_api_call
37
52
  VCR.use_cassette('package_follow_status') do
38
53
  res = Veye::API::Package.get_follow_status(@api_key, 'ruby', 'ruby')
@@ -3,24 +3,45 @@ require 'test_helper'
3
3
  class ProjectTest < Minitest::Test
4
4
  def setup
5
5
  init_environment
6
- @api_key = ENV["VEYE_API_KEY"]
7
- @test_file = "test/files/maven-1.0.1.pom.xml"
8
- @project_key = "maven2_openejb_maven_plugins_1"
6
+ @api_key = ENV["VEYE_API_KEY"]
7
+ @test_file = "test/files/maven-1.0.1.pom.xml"
8
+ @test_file2 = "test/files/Gemfile"
9
+ @project_key = upload_project["id"]
10
+
11
+ @org_name = "veye_test"
12
+ @team_name = "veye_cli_tool"
13
+ end
14
+
15
+ def upload_project(test_file = nil, is_temporary = true, task_id = nil)
16
+ cassette_name = ( task_id.nil? ? 'project_upload' : "project_upload_#{task_id}" )
17
+ test_file ||= @test_file
18
+ org_name = @org_name
19
+
20
+ VCR.use_cassette(cassette_name) do
21
+ res = Veye::API::Project.upload(@api_key, test_file, org_name, nil, is_temporary)
22
+ res.data
23
+ end
24
+ end
25
+
26
+ def delete_project(project_id, task_id = nil)
27
+ VCR.use_cassette("project_delete_#{task_id.to_s}") do
28
+ res = Veye::API::Project.delete_project(@api_key, project_id)
29
+ res.data
30
+ end
9
31
  end
10
32
 
11
33
  def test_get_list_api_call
12
34
  VCR.use_cassette('project_list') do
13
- res = Veye::API::Project.get_list(@api_key)
35
+ res = Veye::API::Project.get_list(@api_key, @org_name)
14
36
 
15
37
  assert_equal 200, res.code
16
38
  assert_equal true, res.success
17
39
 
18
40
  proj = res.data.first
19
- assert_equal "bugtraqer", proj["name"]
20
- assert_equal "lein_project_clj_1", proj["project_key"]
21
- assert_equal "Lein", proj["project_type"]
41
+ assert_equal "OpenEJB :: Maven Plugins", proj["name"]
42
+ assert_equal "Maven2", proj["project_type"]
22
43
  assert_equal false, proj["public"]
23
- assert_equal "upload", proj["source"]
44
+ assert_equal "API", proj["source"]
24
45
  end
25
46
  end
26
47
 
@@ -39,11 +60,11 @@ class ProjectTest < Minitest::Test
39
60
 
40
61
  def test_upload_api_call_when_file_exists
41
62
  VCR.use_cassette('project_upload') do
42
- res = Veye::API::Project.upload(@api_key, @test_file)
63
+ res = Veye::API::Project.upload(@api_key, @test_file, @org_name)
43
64
  refute_nil res
44
65
  assert_equal 201, res.code
45
66
  assert_equal true, res.success
46
- assert_equal "maven2_openejb_maven_plugins_1", res.data["project_key"]
67
+ assert_equal @project_key, res.data['id']
47
68
  assert_equal "OpenEJB :: Maven Plugins", res.data["name"]
48
69
  assert_equal "Maven2", res.data["project_type"]
49
70
  assert_equal true, res.data["public"]
@@ -51,20 +72,44 @@ class ProjectTest < Minitest::Test
51
72
  end
52
73
  end
53
74
 
75
+ def test_upload_attaches_optional_arguments
76
+ VCR.use_cassette('project_upload_with_args') do
77
+ res = Veye::API::Project.upload(@api_key, @test_file, @org_name, @team_name, true, false, 'nipitiri')
78
+ refute_nil res
79
+
80
+ assert_equal 201, res.code
81
+ assert_equal true, res.success
82
+ assert_equal 'nipitiri', res.data['name']
83
+ assert_equal false, res.data['public']
84
+ end
85
+ end
86
+
87
+
54
88
  def test_update_api_call
89
+ proj_dt = {}
90
+ VCR.use_cassette('project_upload_for_update') do
91
+ res = Veye::API::Project.upload(@api_key, @test_file, @org_name, @team_name, false)
92
+ refute_nil res
93
+ proj_dt = res.data
94
+ end
95
+
55
96
  VCR.use_cassette('project_update') do
56
- res = Veye::API::Project.update(@api_key, @project_key, @test_file)
97
+ res = Veye::API::Project.update(@api_key, proj_dt['id'], @test_file)
57
98
  refute_nil res
58
99
  assert_equal 201, res.code
59
100
  assert_equal true, res.success
60
101
  proj = res.data
61
- assert_equal @project_key, proj["project_key"]
102
+ assert_equal proj_dt['id'], proj["id"]
62
103
  assert_equal "OpenEJB :: Maven Plugins", proj["name"]
63
104
  assert_equal "Maven2", proj["project_type"]
64
105
  assert_equal true, proj["public"]
65
106
  assert_equal "API", proj["source"]
66
107
  assert_equal 11, proj["dependencies"].count
67
108
  end
109
+
110
+ VCR.use_cassette('project_delete_for_update') do
111
+ Veye::API::Project.delete_project(@api_key, proj_dt['id'])
112
+ end
68
113
  end
69
114
 
70
115
  def test_get_project_api_call
@@ -75,7 +120,7 @@ class ProjectTest < Minitest::Test
75
120
  assert_equal 200, res.code
76
121
 
77
122
  proj = res.data
78
- assert_equal @project_key, proj["project_key"]
123
+ assert_equal @project_key, proj["id"]
79
124
  assert_equal "OpenEJB :: Maven Plugins", proj["name"]
80
125
  assert_equal "Maven2", proj["project_type"]
81
126
  assert_equal true, proj["public"]
@@ -99,20 +144,39 @@ class ProjectTest < Minitest::Test
99
144
 
100
145
  def test_get_licenses_api_call
101
146
  VCR.use_cassette('project_license') do
102
- res = Veye::API::Project.get_licenses(@api_key, 'rubygem_gemfile_lock_1')
147
+ res = Veye::API::Project.get_licenses(@api_key, @project_key)
103
148
  assert_equal 200, res.code
104
149
  assert_equal true, res.success
105
150
  assert_equal true, res.data["success"]
106
151
 
107
152
  licenses = res.data["licenses"]
108
- unknown_license = licenses["unknown"].first
109
- assert_equal({"name" => "gli" , "prod_key" => "gli" }, unknown_license)
110
-
111
- ruby_license = licenses["Ruby"].first
112
- assert_equal({ "name" => "json" , "prod_key" => "json"}, ruby_license)
153
+ apache_license = licenses["Apache-2.0"].first
154
+ assert_equal({
155
+ "name" => "maven-plugin-annotations",
156
+ "prod_key" => "org.apache.maven.plugin-tools/maven-plugin-annotations"
157
+ }, apache_license)
113
158
  end
114
159
  end
115
160
 
161
+ def test_merge_api_call
162
+ #upload 2projects
163
+ parent_id = upload_project(@test_file, false, 'merge_parent')['id']
164
+ child_id = upload_project(@test_file2, false, 'merge_child')['id']
165
+
166
+ VCR.use_cassette('project_merge') do
167
+ res = Veye::API::Project.merge(@api_key, parent_id, child_id)
168
+ assert_equal true, res.success
169
+ assert_equal true, res.data['success']
170
+ end
116
171
 
172
+ VCR.use_cassette('project_unmerge') do
173
+ res = Veye::API::Project.unmerge(@api_key, parent_id, child_id)
174
+ assert_equal true, res.success
175
+ assert_equal true, res.data['success']
176
+ end
177
+ #delete projects
178
+ delete_project(parent_id, 'merge_parent')
179
+ delete_project(child_id, 'merge_child')
180
+ end
117
181
 
118
182
  end