nexus_cli_nx 4.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +6 -0
  4. data/CHANGELOG.md +23 -0
  5. data/Gemfile +41 -0
  6. data/Guardfile +27 -0
  7. data/LICENSE +15 -0
  8. data/README.md +123 -0
  9. data/Rakefile +1 -0
  10. data/Thorfile +66 -0
  11. data/VERSION +1 -0
  12. data/bin/nexus-cli +10 -0
  13. data/data/pom.xml.erb +13 -0
  14. data/features/nexus_oss.feature +259 -0
  15. data/features/pro/nexus_custom_metadata.feature +116 -0
  16. data/features/pro/nexus_pro.feature +101 -0
  17. data/features/step_definitions/cli_steps.rb +105 -0
  18. data/features/support/env.rb +64 -0
  19. data/lib/nexus_cli.rb +44 -0
  20. data/lib/nexus_cli/artifact.rb +44 -0
  21. data/lib/nexus_cli/base_remote.rb +16 -0
  22. data/lib/nexus_cli/cli.rb +7 -0
  23. data/lib/nexus_cli/configuration.rb +101 -0
  24. data/lib/nexus_cli/connection.rb +84 -0
  25. data/lib/nexus_cli/errors.rb +259 -0
  26. data/lib/nexus_cli/mixins/artifact_actions.rb +239 -0
  27. data/lib/nexus_cli/mixins/global_settings_actions.rb +64 -0
  28. data/lib/nexus_cli/mixins/logging_actions.rb +45 -0
  29. data/lib/nexus_cli/mixins/pro/custom_metadata_actions.rb +176 -0
  30. data/lib/nexus_cli/mixins/pro/smart_proxy_actions.rb +219 -0
  31. data/lib/nexus_cli/mixins/repository_actions.rb +245 -0
  32. data/lib/nexus_cli/mixins/user_actions.rb +125 -0
  33. data/lib/nexus_cli/n3_metadata.rb +77 -0
  34. data/lib/nexus_cli/remote/oss_remote.rb +11 -0
  35. data/lib/nexus_cli/remote/pro_remote.rb +59 -0
  36. data/lib/nexus_cli/remote_factory.rb +30 -0
  37. data/lib/nexus_cli/tasks.rb +507 -0
  38. data/lib/nexus_cli/version.rb +6 -0
  39. data/nexus_cli_nx.gemspec +32 -0
  40. data/spec/fixtures/metadata_search.xml +10 -0
  41. data/spec/fixtures/nexus.config +4 -0
  42. data/spec/spec_helper.rb +22 -0
  43. data/spec/unit/nexus_cli/artifact_spec.rb +82 -0
  44. data/spec/unit/nexus_cli/configuration_spec.rb +159 -0
  45. data/spec/unit/nexus_cli/mixins/pro/custom_metadata_actions_spec.rb +21 -0
  46. data/spec/unit/nexus_cli/oss_remote_spec.rb +83 -0
  47. data/spec/unit/nexus_cli/pro_remote_spec.rb +110 -0
  48. data/spec/unit/nexus_cli/remote_factory_spec.rb +42 -0
  49. metadata +263 -0
@@ -0,0 +1,6 @@
1
+ module NexusCli
2
+ # @return [String]
3
+ def self.version
4
+ @version ||= File.read(File.expand_path("../../../VERSION", __FILE__)).strip
5
+ end
6
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require 'nexus_cli/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "nexus_cli_nx"
7
+ s.version = NexusCli.version
8
+ s.authors = ["Märt Bakhoff", "Kyle Allan"]
9
+ s.email = ["anon@sigil.red"]
10
+ s.homepage = "https://github.com/mbakhoff/nexus_cli_nx"
11
+ s.summary = %q{A command-line wrapper for making REST calls to Sonatype Nexus. Fork of nexus_cli without chozo/extlib dependencies.}
12
+ s.description = s.summary
13
+ s.licenses = ["Apache 2.0"]
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ s.add_dependency 'thor'
21
+ s.add_dependency 'httpclient', '~> 2.8.0'
22
+ s.add_dependency 'json'
23
+ s.add_dependency 'highline'
24
+ s.add_dependency 'jsonpath'
25
+ s.add_runtime_dependency 'activesupport', '~> 3.2.0'
26
+
27
+ s.add_development_dependency 'rspec'
28
+ s.add_development_dependency 'aruba', "= 0.5.0"
29
+ s.add_development_dependency 'cucumber'
30
+ s.add_development_dependency 'rake'
31
+ s.add_development_dependency 'webmock'
32
+ end
@@ -0,0 +1,10 @@
1
+ <search-results>
2
+ <data>
3
+ <artifact>
4
+ <info>test</info>
5
+ </artifact>
6
+ <artifact>
7
+ <info>test 2</info>
8
+ </artifact>
9
+ </data>
10
+ </search-results>
@@ -0,0 +1,4 @@
1
+ url: "http://localhost:8081/nexus/"
2
+ repository: "test"
3
+ username: "test"
4
+ password: "test"
@@ -0,0 +1,22 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ require 'spork'
4
+
5
+ Spork.prefork do
6
+ require 'webmock/rspec'
7
+
8
+ APP_ROOT = File.expand_path('../../', __FILE__)
9
+ ENV["NEXUS_CONFIG"] = File.join(APP_ROOT, "spec", "fixtures", "nexus.config")
10
+ end
11
+
12
+ Spork.each_run do
13
+ require 'nexus_cli'
14
+ end
15
+
16
+ def app_root_path
17
+ Pathname.new(File.expand_path('../..', __FILE__))
18
+ end
19
+
20
+ def fixtures_path
21
+ app_root_path.join('spec/fixtures')
22
+ end
@@ -0,0 +1,82 @@
1
+ require 'spec_helper'
2
+
3
+ describe NexusCli::Artifact do
4
+
5
+ describe "#new" do
6
+ it "gives you errors when you under specify" do
7
+ expect { described_class.new("group:artifact") }.to raise_error(NexusCli::ArtifactMalformedException)
8
+ end
9
+
10
+ it "gives you errors when you over specify" do
11
+ expect { described_class.new("group:artifact:extension:classifier:version:garbage") }.to raise_error(NexusCli::ArtifactMalformedException)
12
+ end
13
+
14
+ context "when extension and classifier are omitted" do
15
+ subject { new_artifact }
16
+ let(:new_artifact) { described_class.new("group:artifact:version") }
17
+
18
+ it "creates a new Artifact object" do
19
+ expect(new_artifact).to be_a(NexusCli::Artifact)
20
+ end
21
+
22
+ it "has the correct attributes" do
23
+ expect(new_artifact.group_id).to eq("group")
24
+ expect(new_artifact.artifact_id).to eq("artifact")
25
+ expect(new_artifact.extension).to eq("jar")
26
+ expect(new_artifact.classifier).to be_nil
27
+ expect(new_artifact.version).to eq("version")
28
+ expect(new_artifact.file_name).to eq("artifact-version.jar")
29
+ end
30
+ end
31
+
32
+ context "when just extension is specified" do
33
+ subject { new_artifact }
34
+ let(:new_artifact) { described_class.new("group:artifact:extension:version") }
35
+
36
+ it "creates a new Artifact object" do
37
+ expect(new_artifact).to be_a(NexusCli::Artifact)
38
+ end
39
+
40
+ it "has the correct attributes" do
41
+ expect(new_artifact.group_id).to eq("group")
42
+ expect(new_artifact.artifact_id).to eq("artifact")
43
+ expect(new_artifact.extension).to eq("extension")
44
+ expect(new_artifact.classifier).to be_nil
45
+ expect(new_artifact.version).to eq("version")
46
+ expect(new_artifact.file_name).to eq("artifact-version.extension")
47
+ end
48
+ end
49
+
50
+ context "when both extension and classifer are specified" do
51
+ subject { new_artifact }
52
+ let(:new_artifact) { described_class.new("group:artifact:extension:classifier:version") }
53
+
54
+ it "creates a new Artifact object" do
55
+ expect(new_artifact).to be_a(NexusCli::Artifact)
56
+ end
57
+
58
+ it "has the correct attributes" do
59
+ expect(new_artifact.group_id).to eq("group")
60
+ expect(new_artifact.artifact_id).to eq("artifact")
61
+ expect(new_artifact.extension).to eq("extension")
62
+ expect(new_artifact.classifier).to eq("classifier")
63
+ expect(new_artifact.version).to eq("version")
64
+ expect(new_artifact.file_name).to eq("artifact-version-classifier.extension")
65
+ end
66
+ end
67
+
68
+ context "when you specify latest as the version" do
69
+ subject { new_artifact }
70
+ let(:new_artifact) { described_class.new("group:artifact:latest") }
71
+
72
+ it "upper cases version" do
73
+ expect(new_artifact.group_id).to eq("group")
74
+ expect(new_artifact.artifact_id).to eq("artifact")
75
+ expect(new_artifact.extension).to eq("jar")
76
+ expect(new_artifact.classifier).to be_nil
77
+ expect(new_artifact.version).to eq("LATEST")
78
+ expect(new_artifact.file_name).to eq("artifact-LATEST.jar")
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,159 @@
1
+ require 'spec_helper'
2
+
3
+ describe NexusCli::Configuration do
4
+ subject { configuration }
5
+ let(:configuration) { described_class }
6
+ let(:config_instance) { configuration.from_overrides(valid_config) }
7
+ let(:url) { "http://some-url.com" }
8
+ let(:repository) { "releases" }
9
+ let(:username) { "kallan" }
10
+ let(:password) { "password" }
11
+
12
+ let(:valid_config) do
13
+ {
14
+ "url" => "http://somewebsite.com",
15
+ "repository" => "foo",
16
+ "username" => "admin",
17
+ "password" => "password"
18
+ }
19
+ end
20
+
21
+ describe "::from_overrides" do
22
+ subject { from_overrides }
23
+ let(:from_overrides) { configuration.from_overrides(valid_config) }
24
+
25
+ it "returns a new Configuration object" do
26
+ expect(from_overrides).to be_a(NexusCli::Configuration)
27
+ end
28
+
29
+ context "without username and password" do
30
+ let(:valid_config) do
31
+ {
32
+ "url" => "http://somewebsite.com",
33
+ "repository" => "foo"
34
+ }
35
+ end
36
+
37
+ it "should not raise an exception" do
38
+ expect { from_overrides.validate! }.not_to raise_error
39
+ end
40
+ end
41
+
42
+ context "when a config file exists" do
43
+ let(:from_overrides) { configuration.from_overrides(partial_override) }
44
+ let(:partial_override) do
45
+ {
46
+ "repository" => "foobar"
47
+ }
48
+ end
49
+ let(:partial_config_file) do
50
+ {
51
+ "url" => "http://somewebsite.com"
52
+ }
53
+ end
54
+
55
+ before do
56
+ YAML.stub(:load_file).and_return(partial_config_file)
57
+ end
58
+
59
+ it "uses non-overridden parts from the file" do
60
+ expect(from_overrides.url).to eql("http://somewebsite.com")
61
+ end
62
+ end
63
+ end
64
+
65
+ describe "::from_file" do
66
+ subject { from_file }
67
+ let(:from_file) { configuration.from_file }
68
+
69
+ before do
70
+ YAML.stub(:load_file).and_return(valid_config)
71
+ end
72
+
73
+ context "when the NEXUS_CONFIG environment variable exists" do
74
+ let(:nexus_config_path) { "/home/var/nexus_cli" }
75
+
76
+ before do
77
+ ENV['NEXUS_CONFIG'] = nexus_config_path
78
+ end
79
+
80
+ it "loads the config file from NEXUS_CONFIG" do
81
+ YAML.should_receive(:load_file).with(nexus_config_path)
82
+ from_file
83
+ end
84
+ end
85
+
86
+ context "when the NEXUS_CONFIG environment variable does not exist" do
87
+ let(:nexus_config_path) { File.expand_path(NexusCli::Configuration::DEFAULT_FILE) }
88
+
89
+ before do
90
+ ENV['NEXUS_CONFIG'] = nil
91
+ end
92
+
93
+ it "loads the config file from DEFAULT_FILE" do
94
+ YAML.should_receive(:load_file).with(nexus_config_path)
95
+ from_file
96
+ end
97
+ end
98
+
99
+ it "returns a new Configuration object" do
100
+ expect(from_file).to be_a(NexusCli::Configuration)
101
+ end
102
+ end
103
+
104
+ describe "::validate!" do
105
+ subject { validate! }
106
+ let(:validate!) {described_class.validate!(invalid_config)}
107
+ let(:invalid_config) do
108
+ described_class.new(url: nil, repository: "something", username: "someone", password: "somepass")
109
+ end
110
+
111
+ context "when the object is invalide" do
112
+ it "raises an error" do
113
+ expect { validate! }.to raise_error(NexusCli::InvalidSettingsException)
114
+ end
115
+ end
116
+ end
117
+
118
+ describe "#new" do
119
+ subject { new_config }
120
+ let(:new_config) { described_class.new(url: url, repository: repository, username: username, password: password) }
121
+
122
+ it "creates a new Configuration object" do
123
+ expect(new_config).to be_a(NexusCli::Configuration)
124
+ end
125
+ end
126
+
127
+ describe "#url" do
128
+ it "returns the url" do
129
+ expect(config_instance.url).to eq("http://somewebsite.com")
130
+ end
131
+ end
132
+
133
+ describe "#repository" do
134
+ let(:repository_config) { described_class.new(url: url, repository: repository, username: username, password: password) }
135
+
136
+ it "returns the repository" do
137
+ expect(repository_config.repository).to eq("releases")
138
+ end
139
+
140
+ context "when repository has illegal values" do
141
+ let(:repository) { "ILLEGAL VALUE" }
142
+ it "makes it legal" do
143
+ expect(repository_config.repository).to eq("illegal_value")
144
+ end
145
+ end
146
+ end
147
+
148
+ describe "#username" do
149
+ it "returns the username" do
150
+ expect(config_instance.username).to eq("admin")
151
+ end
152
+ end
153
+
154
+ describe "#password" do
155
+ it "returns the password" do
156
+ expect(config_instance.password).to eq("password")
157
+ end
158
+ end
159
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe NexusCli::CustomMetadataActions do
4
+ let(:custom_metadata_actions) { injected_module.new }
5
+ let(:injected_module) do
6
+ Class.new {
7
+ include NexusCli::CustomMetadataActions
8
+ }
9
+ end
10
+ let(:document) { REXML::Document.new(File.read(fixtures_path.join('metadata_search.xml'))) }
11
+
12
+ describe "::get_artifact_array" do
13
+ subject { get_artifact_array }
14
+ let(:get_artifact_array) { custom_metadata_actions.send(:get_artifact_array, document) }
15
+
16
+ it "returns an array of strings" do
17
+ get_artifact_array.should be_a(Array)
18
+ get_artifact_array.each { |element| element.should be_a(String) }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,83 @@
1
+ require 'spec_helper'
2
+
3
+ remote = NexusCli::OSSRemote.new(
4
+ 'url' => 'http://localhost:8081/nexus',
5
+ 'repository' => 'releases',
6
+ 'username' => 'admin',
7
+ 'password' => 'admin123'
8
+ )
9
+
10
+
11
+ fake_xml = <<EOS
12
+ <search-results>
13
+ <totalCount>1</totalCount>
14
+ <from>-1</from>
15
+ <count>-1</count>
16
+ <tooManyResults>false</tooManyResults>
17
+ <data>
18
+ <artifact>
19
+ <resourceURI>https://someuri.com/com/something/thing.tgz</resourceURI>
20
+ <groupId>com.something</groupId>
21
+ <artifactId>thing-stuff</artifactId>
22
+ <version>0.4.0</version>
23
+ <packaging>tgz</packaging>
24
+ <extension>tgz</extension>
25
+ <repoId>company_artifact</repoId>
26
+ <contextId>Company Replicated Artifacts</contextId>
27
+ <pomLink>https://somedomain.com/nexus/service/local/artifact/maven/redirect?r=company_artifact&amp;g=com.something&amp;a=thing-stuff&amp;v=0.4.0&amp;e=pom</pomLink>
28
+ <artifactLink>https://somedomain/nexus/service/local/artifact/maven/redirect?r=ompany_artifact&amp;g=com.something&amp;a=thing-stuff&amp;v=0.4.0&amp;e=tgz</artifactLink>
29
+ </artifact>
30
+ </data>
31
+ </search-results>
32
+ EOS
33
+
34
+ describe NexusCli do
35
+ it "gives you errors when you attempt to pull an artifact don't give a valid artifact name" do
36
+ expect {remote.pull_artifact "com.something:something", nil}.to raise_error(NexusCli::ArtifactMalformedException)
37
+ end
38
+
39
+ it "gives you errors when you attempt to get an artifact's info and don't give a valid artifact name" do
40
+ expect {remote.get_artifact_info "com.something:something"}.to raise_error(NexusCli::ArtifactMalformedException)
41
+ end
42
+
43
+ it "gives you errors when you attempt to pull an artifact and it cannot be found" do
44
+ HTTPClient.any_instance.stub(:get).and_raise(NexusCli::ArtifactNotFoundException)
45
+ expect {remote.pull_artifact "com.something:something:tgz:1.0.0", nil}.to raise_error(NexusCli::ArtifactNotFoundException)
46
+ end
47
+
48
+ it "gives you errors when you attempt to get an artifact's info and it cannot be found" do
49
+ HTTPClient.any_instance.stub(:get).and_raise(NexusCli::ArtifactNotFoundException)
50
+ expect {remote.get_artifact_info "com.something:something:tgz:1.0.0"}.to raise_error(NexusCli::ArtifactNotFoundException)
51
+ end
52
+
53
+ it "gives you errors when you attempt to pull an artifact with classifier and it cannot be found" do
54
+ HTTPClient.any_instance.stub(:get).and_raise(NexusCli::ArtifactNotFoundException)
55
+ expect {remote.pull_artifact "com.something:something:tgz:x64:1.0.0", nil}.to raise_error(NexusCli::ArtifactNotFoundException)
56
+ end
57
+
58
+ it "gives you an error when you try to update a user that doesnt exist" do
59
+ stub_request(:get, "http://localhost:8081/nexus/service/local/users/qwertyasdf").
60
+ with(:headers => {
61
+ 'Accept' => 'application/json',
62
+ 'Authorization' => 'Basic YWRtaW46YWRtaW4xMjM='
63
+ }).to_return(:status => 404, :body => "", :headers => {})
64
+
65
+ expect {
66
+ remote.update_user(:userId => "qwertyasdf")
67
+ }.to raise_error(NexusCli::UserNotFoundException)
68
+ end
69
+
70
+ it "gives you an error when you try to set the logging level to something weird" do
71
+ expect {remote.set_logger_level("weird")}.to raise_error(NexusCli::InvalidLoggingLevelException)
72
+ end
73
+
74
+ it "will return raw xml from the search command" do
75
+ stub_request(:get, "http://localhost:8081/nexus/service/local/data_index?a=something&g=com.something").to_return(:status => 200, :body => fake_xml, :headers => {})
76
+ expect(remote.search_for_artifacts("com.something:something")).to eq fake_xml
77
+ end
78
+
79
+ it "gives you errors when you attempt to get an artifact's download url and it cannot be found" do
80
+ HTTPClient.any_instance.stub(:get).and_raise(NexusCli::ArtifactNotFoundException)
81
+ expect {remote.get_artifact_download_url "com.something:something:tgz:1.0.0"}.to raise_error(NexusCli::ArtifactNotFoundException)
82
+ end
83
+ end
@@ -0,0 +1,110 @@
1
+ require 'nexus_cli'
2
+
3
+ describe NexusCli::ProRemote do
4
+ let(:remote) do
5
+ NexusCli::ProRemote.new(
6
+ 'url' => 'http://localhost:8081/nexus',
7
+ 'repository' => 'releases',
8
+ 'username' => 'admin',
9
+ 'password' => 'admin123'
10
+ )
11
+ end
12
+
13
+ it "gives you errors when you attempt to get an artifact's custom info and don't give a valid artifact name" do
14
+ expect {remote.get_artifact_custom_info("com.something:something")}.to raise_error(NexusCli::ArtifactMalformedException)
15
+ end
16
+
17
+ it "gives you errors when you attempt to get an artifact's custom info and it cannot be found" do
18
+ HTTPClient.any_instance.stub(:get).and_raise(NexusCli::ArtifactNotFoundException)
19
+ expect {remote.get_artifact_custom_info("com.something:something:tgz:1.0.0")}.to raise_error(NexusCli::ArtifactNotFoundException)
20
+ end
21
+
22
+ it "gives you errors when you attempt to update an artifact's custom info and don't give valid parameters" do
23
+ expect {remote.update_artifact_custom_info("com.something:something:tgz:1.0.0", "_somebadkey:_somebadvalue")}.to raise_error(NexusCli::N3ParameterMalformedException)
24
+ end
25
+
26
+ it "gives you errors when you attempt to update an artifact's custom info and don't give valid parameters" do
27
+ expect {remote.update_artifact_custom_info("com.something:something:tgz:1.0.0", "_somebadkey")}.to raise_error(NexusCli::N3ParameterMalformedException)
28
+ end
29
+
30
+ it "gives you errors when you attempt to clear an artifact's custom info and it cannot be found" do
31
+ HTTPClient.any_instance.stub(:get).and_raise(NexusCli::ArtifactNotFoundException)
32
+ expect {remote.clear_artifact_custom_info("com.something:something:tgz:1.0.0")}.to raise_error(NexusCli::ArtifactNotFoundException)
33
+ end
34
+
35
+ it "gives you errors when you attempt to search for artifacts using custom info and don't give valid key" do
36
+ expect {remote.search_artifacts_custom("somekey_:equal:somevalue")}.to raise_error(NexusCli::SearchParameterMalformedException)
37
+ end
38
+
39
+ it "gives you errors when you attempt to search for artifacts using custom info and don't give valid value" do
40
+ expect {remote.search_artifacts_custom("somekey:equal:somevalue \"\'\\/")}.to raise_error(NexusCli::SearchParameterMalformedException)
41
+ end
42
+
43
+ it "gives you errors when you attempt to search for artifacts using custom info and don't give valid search type" do
44
+ expect {remote.search_artifacts_custom("somekey:equals:somevalue")}.to raise_error(NexusCli::SearchParameterMalformedException)
45
+ end
46
+
47
+ it "gives you errors when you attempt to search for artifacts using custom info and don't give valid parameters" do
48
+ expect {remote.search_artifacts_custom("somekey")}.to raise_error(NexusCli::SearchParameterMalformedException)
49
+ end
50
+
51
+ describe "tests for custom metadata private helper methods" do
52
+ it "gives you errors when you attempt to parse custom metadata with bad update keys" do
53
+ expect {remote.send(:parse_custom_metadata_update_params, "goodkey:goodvalue", "badkey_:goodvalue")}.to raise_error(NexusCli::N3ParameterMalformedException)
54
+ end
55
+
56
+ it "gives you errors when you attempt to parse custom metadata with missing update keys" do
57
+ expect {remote.send(:parse_custom_metadata_update_params, ":goodvalue")}.to raise_error(NexusCli::N3ParameterMalformedException)
58
+ end
59
+
60
+ it "gives you errors when you attempt to parse custom metadata with typo" do
61
+ expect {remote.send(:parse_custom_metadata_update_params, "goodkeygoodvalue")}.to raise_error(NexusCli::N3ParameterMalformedException)
62
+ end
63
+
64
+ it "gives you errors when you attempt to parse custom metadata with bad update values" do
65
+ expect {remote.send(:parse_custom_metadata_update_params, "goodkey:goodvalue", "goodkey:badvalue\"'\\")}.to raise_error(NexusCli::N3ParameterMalformedException)
66
+ end
67
+
68
+ it "gives you errors when you attempt to parse custom metadata with missing search type and value" do
69
+ expect {remote.send(:parse_custom_metadata_search_params, "goodkey")}.to raise_error(NexusCli::SearchParameterMalformedException)
70
+ end
71
+
72
+ it "gives you errors when you attempt to parse custom metadata with bad search type" do
73
+ expect {remote.send(:parse_custom_metadata_search_params, "goodkey:eq:goodvalue")}.to raise_error(NexusCli::SearchParameterMalformedException)
74
+ end
75
+
76
+ it "gives you errors when you attempt to parse custom metadata with bad search value" do
77
+ expect {remote.send(:parse_custom_metadata_search_params, "goodkey:equals:badvalue\"'\\")}.to raise_error(NexusCli::SearchParameterMalformedException)
78
+ end
79
+ end
80
+
81
+ describe "tests for custom metadata private helper methods" do
82
+ it "gives you errors when you attempt to parse custom metadata with bad update keys" do
83
+ expect {remote.send(:parse_custom_metadata_update_params, "goodkey:goodvalue", "badkey_:goodvalue")}.to raise_error(NexusCli::N3ParameterMalformedException)
84
+ end
85
+
86
+ it "gives you errors when you attempt to parse custom metadata with missing update keys" do
87
+ expect {remote.send(:parse_custom_metadata_update_params, ":goodvalue")}.to raise_error(NexusCli::N3ParameterMalformedException)
88
+ end
89
+
90
+ it "gives you errors when you attempt to parse custom metadata with typo" do
91
+ expect {remote.send(:parse_custom_metadata_update_params, "goodkeygoodvalue")}.to raise_error(NexusCli::N3ParameterMalformedException)
92
+ end
93
+
94
+ it "gives you errors when you attempt to parse custom metadata with bad update values" do
95
+ expect {remote.send(:parse_custom_metadata_update_params, "goodkey:goodvalue", "goodkey:badvalue\"'\\")}.to raise_error(NexusCli::N3ParameterMalformedException)
96
+ end
97
+
98
+ it "gives you errors when you attempt to parse custom metadata with missing search type and value" do
99
+ expect {remote.send(:parse_custom_metadata_search_params, "goodkey")}.to raise_error(NexusCli::SearchParameterMalformedException)
100
+ end
101
+
102
+ it "gives you errors when you attempt to parse custom metadata with bad search type" do
103
+ expect {remote.send(:parse_custom_metadata_search_params, "goodkey:eq:goodvalue")}.to raise_error(NexusCli::SearchParameterMalformedException)
104
+ end
105
+
106
+ it "gives you errors when you attempt to parse custom metadata with bad search value" do
107
+ expect {remote.send(:parse_custom_metadata_search_params, "goodkey:equals:badvalue\"'\\")}.to raise_error(NexusCli::SearchParameterMalformedException)
108
+ end
109
+ end
110
+ end