test_machine_shop 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +7 -0
  2. data/.idea/.name +1 -0
  3. data/.idea/.rakeTasks +7 -0
  4. data/.idea/compiler.xml +23 -0
  5. data/.idea/copyright/profiles_settings.xml +5 -0
  6. data/.idea/encodings.xml +5 -0
  7. data/.idea/inspectionProfiles/Project_Default.xml +7 -0
  8. data/.idea/inspectionProfiles/profiles_settings.xml +7 -0
  9. data/.idea/machineshop.iml +194 -0
  10. data/.idea/misc.xml +5 -0
  11. data/.idea/modules.xml +9 -0
  12. data/.idea/scopes/scope_settings.xml +5 -0
  13. data/.idea/vcs.xml +7 -0
  14. data/.idea/workspace.xml +722 -0
  15. data/Gemfile +9 -0
  16. data/LICENSE +22 -0
  17. data/README.md +977 -0
  18. data/Rakefile +8 -0
  19. data/doc.txt +50 -0
  20. data/lib/machineshop.rb +475 -0
  21. data/lib/machineshop/api_operations/create.rb +17 -0
  22. data/lib/machineshop/api_operations/delete.rb +11 -0
  23. data/lib/machineshop/api_operations/list.rb +16 -0
  24. data/lib/machineshop/api_operations/update.rb +11 -0
  25. data/lib/machineshop/api_resource.rb +35 -0
  26. data/lib/machineshop/configuration.rb +14 -0
  27. data/lib/machineshop/customer.rb +15 -0
  28. data/lib/machineshop/data_source_types.rb +28 -0
  29. data/lib/machineshop/data_sources.rb +35 -0
  30. data/lib/machineshop/database.rb +59 -0
  31. data/lib/machineshop/device.rb +30 -0
  32. data/lib/machineshop/device_instance.rb +30 -0
  33. data/lib/machineshop/end_points.rb +30 -0
  34. data/lib/machineshop/errors/api_connection_error.rb +4 -0
  35. data/lib/machineshop/errors/api_error.rb +4 -0
  36. data/lib/machineshop/errors/authentication_error.rb +4 -0
  37. data/lib/machineshop/errors/database_error.rb +5 -0
  38. data/lib/machineshop/errors/invalid_request_error.rb +10 -0
  39. data/lib/machineshop/errors/machineshop_error.rb +20 -0
  40. data/lib/machineshop/errors/schema_error.rb +5 -0
  41. data/lib/machineshop/json.rb +21 -0
  42. data/lib/machineshop/machineshop_cache.rb +49 -0
  43. data/lib/machineshop/machineshop_object.rb +165 -0
  44. data/lib/machineshop/mapping.rb +34 -0
  45. data/lib/machineshop/meter.rb +12 -0
  46. data/lib/machineshop/models/api_endpoint.rb +8 -0
  47. data/lib/machineshop/models/api_request.rb +28 -0
  48. data/lib/machineshop/models/schema.rb +184 -0
  49. data/lib/machineshop/report.rb +11 -0
  50. data/lib/machineshop/rule.rb +42 -0
  51. data/lib/machineshop/user.rb +43 -0
  52. data/lib/machineshop/users.rb +43 -0
  53. data/lib/machineshop/util.rb +193 -0
  54. data/lib/machineshop/utility.rb +30 -0
  55. data/lib/machineshop/version.rb +3 -0
  56. data/machineshop.gemspec +35 -0
  57. data/spec/lib/api_calls_spec.rb +628 -0
  58. data/spec/lib/custom_endpoint_test.rb +78 -0
  59. data/spec/lib/customer_spec.rb +87 -0
  60. data/spec/lib/data_source.rb +138 -0
  61. data/spec/lib/data_source_type_spec.rb +77 -0
  62. data/spec/lib/database_spec.rb +45 -0
  63. data/spec/lib/device_instances.rb +73 -0
  64. data/spec/lib/device_spec.rb +172 -0
  65. data/spec/lib/endpoint_spec.rb +37 -0
  66. data/spec/lib/geocode_spec +45 -0
  67. data/spec/lib/mapping_spec.rb +68 -0
  68. data/spec/lib/meter_spec.rb +49 -0
  69. data/spec/lib/report_spec.rb +52 -0
  70. data/spec/lib/rule_spec.rb +130 -0
  71. data/spec/lib/user_spec.rb +58 -0
  72. data/spec/spec_helper.rb +12 -0
  73. metadata +235 -0
@@ -0,0 +1,172 @@
1
+ require_relative '../spec_helper'
2
+
3
+ #MachineShop.api_base_url= 'http://machineshop.dev:3000/api/v0'
4
+ MachineShop.api_base_url= 'http://stage.services.machineshop.io/api/v0'
5
+
6
+ #publisher_username = 'publisher@machineshop.com'
7
+ publisher_username = 'admin@csr.com'
8
+ publisher_password = 'password'
9
+
10
+ MachineShop.configure do |config|
11
+ config.db_name = "machineshop"
12
+ config.db_username="root"
13
+ config.db_password="root"
14
+ config.db_host= "localhost"
15
+ config.expiry_time= lambda{120.seconds.ago}
16
+ #second
17
+ end
18
+ auth_token, user = MachineShop::User.authenticate(
19
+ :email => publisher_username,
20
+ :password => publisher_password
21
+ )
22
+
23
+ describe MachineShop::Device do
24
+
25
+ device = nil
26
+
27
+ it "should get all devices for the user" do
28
+ element_data = MachineShop::Device.all(
29
+ {:page => 1,
30
+ :per_page => 10},
31
+ auth_token)
32
+
33
+ ap "listing all devices"
34
+ puts element_data
35
+ device = element_data[0]
36
+ device.should_not be_nil
37
+ device.should be_kind_of MachineShop::Device
38
+ end
39
+
40
+ specificDevice = nil
41
+
42
+
43
+ it "should get a device for the user by id" do
44
+ specificDevice = MachineShop::Device.retrieve(device[:id], auth_token)
45
+
46
+ ap "Device by id"
47
+ ap specificDevice.as_json
48
+ specificDevice.should_not be_nil
49
+ specificDevice.should be_kind_of MachineShop::Device
50
+ end
51
+
52
+
53
+
54
+ it "should delete device" do
55
+ delete = specificDevice.delete
56
+
57
+ ap "Delete Device by id"
58
+ ap delete.as_json
59
+ delete.http_code.should eq 200
60
+ end
61
+
62
+
63
+ it "should get a device for the user by name" do
64
+ element_data = MachineShop::Device.all(
65
+ {
66
+ :name => device.name
67
+ },
68
+ auth_token)
69
+
70
+ element_data.should_not be_nil
71
+ element_data.should_not be_empty
72
+ end
73
+
74
+ end
75
+
76
+ describe MachineShop::DeviceInstance do
77
+
78
+ device = nil
79
+ device_instance = nil
80
+
81
+ it "should create a device for the user" do
82
+ # First create a device to use
83
+ device = MachineShop::Device.create(
84
+ {
85
+ :name => "my_device",
86
+ :type => "Test",
87
+ :manufacturer => "a company",
88
+ :model => "D-vice 1000",
89
+ :active => "yes",
90
+ :init_cmd => "my_init_cmd",
91
+ :init_params => "{'init':'go'}",
92
+ :exe_path => "/etc/foo",
93
+ :unit_price => "$199.99",
94
+ :sample_data => "some arbitrary sample data",
95
+ :long_description => "This device tracks position and NCAA football conference.",
96
+ :image_url => "http://someurl.com/your_image.png",
97
+ :manual_url => "http://someurl.com/manual.pdf"
98
+ },
99
+ auth_token)
100
+
101
+ ap "device created:"
102
+ ap device.as_json
103
+
104
+ # Now create an instance
105
+ device_instance = device.create_instance(
106
+ {
107
+ :name => "My little instance",
108
+ :active => "yes"
109
+ }
110
+ )
111
+
112
+ ap "creating device instance"
113
+ ap device_instance.as_json
114
+
115
+ device_instance.should_not be_nil
116
+ device_instance.should be_kind_of MachineShop::DeviceInstance
117
+ end
118
+
119
+
120
+ it "should get device instances" do
121
+ element_data = MachineShop::DeviceInstance.all({}, auth_token)
122
+
123
+ ap "getting all device instances"
124
+
125
+ ap device_instance.as_json
126
+
127
+ device_instance = element_data[0]
128
+ element_data.should_not be_nil
129
+ element_data.should_not be_empty
130
+
131
+ device_instance.should be_kind_of MachineShop::DeviceInstance
132
+ end
133
+
134
+
135
+ it "should get a device instance by id" do
136
+ element_data = MachineShop::DeviceInstance.retrieve("5395835f385f7f53ec000160", auth_token)
137
+
138
+ ap "Device Instance by id: "
139
+ ap element_data.as_json
140
+
141
+ element_data.should_not be_nil
142
+ element_data.should be_kind_of MachineShop::DeviceInstance
143
+ end
144
+
145
+ it "should get a device instance by name" do
146
+ element_data = MachineShop::DeviceInstance.all({:name => device_instance.name}, auth_token)
147
+
148
+ ap "Device Instance by name: "
149
+ ap element_data.as_json
150
+
151
+ element_data.should_not be_nil
152
+ element_data.should_not be_empty
153
+ end
154
+
155
+ it "should get all devices via a user" do
156
+ element_data = user.device_instances
157
+
158
+ ap "Device Instance via user "
159
+ ap element_data.as_json
160
+
161
+ element_data.should_not be_nil
162
+ element_data.should_not be_empty
163
+ end
164
+
165
+ it "should get all devices via a user with a filter" do
166
+ element_data = user.device_instances({:name => device_instance.name})
167
+
168
+ element_data.should_not be_nil
169
+ element_data.should_not be_empty
170
+ end
171
+
172
+ end
@@ -0,0 +1,37 @@
1
+ require_relative '../spec_helper'
2
+
3
+ #MachineShop.api_base_url= 'http://machineshop.dev:3000/api/v0'
4
+ MachineShop.api_base_url= 'http://stage.services.machineshop.io/api/v0'
5
+
6
+ publisher_username = 'admin@csr.com'
7
+ publisher_password = 'password'
8
+
9
+ MachineShop.configure do |config|
10
+ config.db_name = "machineshop"
11
+ config.db_username="root"
12
+ config.db_password="root"
13
+ config.db_host= "localhost"
14
+ config.expiry_time= lambda{120.seconds.ago}
15
+ #second
16
+ end
17
+
18
+ # auth_token, user = MachineShop::User.authenticate(
19
+ # :email => publisher_username,
20
+ # :password => publisher_password
21
+ # )
22
+
23
+ # ap "auth_token #{auth_token}"
24
+
25
+ ActiveRecord::Base.logger = Logger.new(STDOUT)
26
+
27
+ auth_token="2jzZmcHWLZyghsxcB16E"
28
+ # => admin
29
+
30
+ # auth_token="WPyus6qzPxaPbNN1V5qb" # => publisher
31
+
32
+
33
+
34
+ describe MachineShop::EndPoints do
35
+ element_data = MachineShop::EndPoints.all("v0",auth_token)
36
+ # # element_data = MachineShop::EndPoints.all({:namespace=>"secm"},auth_token)
37
+ end
@@ -0,0 +1,45 @@
1
+ require_relative '../spec_helper'
2
+
3
+ #MachineShop.api_base_url= 'http://machineshop.dev:3000/api/v0'
4
+ MachineShop.api_base_url= 'http://stage.services.machineshop.io/api/v0'
5
+
6
+ publisher_username = 'admin@csr.com'
7
+ publisher_password = 'password'
8
+
9
+ MachineShop.configure do |config|
10
+ config.db_name = "machineshop"
11
+ config.db_username="root"
12
+ config.db_password="root"
13
+ config.db_host= "localhost"
14
+ config.expiry_time= lambda{120.seconds.ago}
15
+ #second
16
+ end
17
+
18
+ auth_token, user = MachineShop::User.authenticate(
19
+ :email => publisher_username,
20
+ :password => publisher_password
21
+ )
22
+ # ap user
23
+
24
+ describe MachineShop::Mapping do
25
+
26
+ device = nil
27
+
28
+ it "should get a geocoded address" do
29
+ element_data = MachineShop::Mapping.geocode(
30
+ {
31
+ :latlng => "40.714224,-73.961452",
32
+ # :sensor => "false"
33
+ },
34
+ auth_token)
35
+ ap element_data.as_json
36
+ element_data.should_not be_nil
37
+ element_data.should_not be_empty
38
+ end
39
+
40
+
41
+ end
42
+
43
+
44
+
45
+
@@ -0,0 +1,68 @@
1
+ require_relative '../spec_helper'
2
+
3
+ #MachineShop.api_base_url= 'http://machineshop.dev:3000/api/v0'
4
+ MachineShop.api_base_url= 'http://stage.services.machineshop.io/api/v0'
5
+
6
+ #publisher_username = 'publisher@machineshop.com'
7
+ publisher_username = 'admin@csr.com'
8
+ publisher_password = 'password'
9
+
10
+
11
+ auth_token, user = MachineShop::User.authenticate(
12
+ :email => publisher_username,
13
+ :password => publisher_password
14
+ )
15
+
16
+ describe MachineShop::Mapping do
17
+
18
+ it "should get a geocoded address" do
19
+ ap "geocoding address"
20
+ element_data = MachineShop::Mapping.geocode(
21
+ {
22
+ :address => "1600 Amphitheatre Parkway, Mountain View, CA",
23
+ :sensor => "false"
24
+ },
25
+ auth_token)
26
+
27
+ ap element_data.as_json
28
+ #puts "GEO: #{element_data}"
29
+
30
+ element_data.should_not be_nil
31
+ element_data.should_not be_empty
32
+ end
33
+
34
+ it "should get directions" do
35
+ ap "getting directions"
36
+ element_data = MachineShop::Mapping.directions(
37
+ {
38
+ :origin => "Denver",
39
+ :destination => "Boston",
40
+ :sensor => "false"
41
+ },
42
+ auth_token)
43
+ # ap element_data.as_json
44
+ #puts "GEO: #{element_data}"
45
+
46
+ element_data.should_not be_nil
47
+ element_data.should_not be_empty
48
+ end
49
+
50
+ it "should get distance" do
51
+ ap "getting distance "
52
+ element_data = MachineShop::Mapping.distance(
53
+ {
54
+ :origins => "Vancouver BC",
55
+ :destinations => "San Francisco",
56
+ :mode => "bicycling",
57
+ :language => "fr-FR",
58
+ :sensor => "false"
59
+ },
60
+ auth_token)
61
+ ap element_data.as_json
62
+ #puts "GEO: #{element_data}"
63
+
64
+ element_data.should_not be_nil
65
+ element_data.should_not be_empty
66
+ end
67
+
68
+ end
@@ -0,0 +1,49 @@
1
+ require_relative '../spec_helper'
2
+
3
+ #MachineShop.api_base_url= 'http://machineshop.dev:3000/api/v0'
4
+ MachineShop.api_base_url= 'http://stage.services.machineshop.io/api/v0'
5
+
6
+ #publisher_username = 'publisher@machineshop.com'
7
+ publisher_username = 'admin@csr.com'
8
+ publisher_password = 'password'
9
+
10
+
11
+ auth_token, user = MachineShop::User.authenticate(
12
+ :email => publisher_username,
13
+ :password => publisher_password
14
+ )
15
+
16
+ element_data=nil
17
+ describe MachineShop::Meter do
18
+
19
+ it "should get all meter data" do
20
+ element_data = MachineShop::Meter.all({}, auth_token)
21
+
22
+ puts "element_data from all: #{element_data}"
23
+
24
+ element_data.should_not be_nil
25
+ element_data.should_not be_empty
26
+ end
27
+
28
+ it "should get meter by id " do
29
+
30
+ meter_id = element_data[0].id
31
+ ap "retrieving meter for id #{meter_id}"
32
+
33
+ # element_data = MachineShop::Meter.retrieve(meter_id, auth_token)
34
+ element_data = MachineShop::Meter.retrieve(meter_id, auth_token)
35
+ puts "meter by id : #{element_data}"
36
+ element_data.should_not be_nil
37
+ end
38
+
39
+ it "should get meters via a user" do
40
+
41
+ ap "meters by user "
42
+ element_data = user.meters
43
+
44
+ puts "meters via user: #{element_data}"
45
+ element_data.should_not be_nil
46
+ element_data.should_not be_empty
47
+ end
48
+
49
+ end
@@ -0,0 +1,52 @@
1
+ require_relative '../spec_helper'
2
+
3
+ #MachineShop.api_base_url= 'http://machineshop.dev:3000/api/v0'
4
+ MachineShop.api_base_url= 'http://stage.services.machineshop.io/api/v0'
5
+
6
+ #publisher_username = 'publisher@machineshop.com'
7
+ publisher_username = 'publisher@csr.com'
8
+ publisher_password = 'password'
9
+
10
+
11
+ auth_token, user = MachineShop::User.authenticate(
12
+ :email => publisher_username,
13
+ :password => publisher_password
14
+ )
15
+
16
+ reports=nil
17
+ describe MachineShop::Report do
18
+
19
+ it "should get all report data" do
20
+ element_data = MachineShop::Report.all({}, auth_token)
21
+ reports=element_data
22
+ puts "element_data: #{element_data}"
23
+
24
+ element_data.should_not be_nil
25
+ element_data.should_not be_empty
26
+ end
27
+
28
+
29
+
30
+ it "should get report of specific device" do
31
+ element_data = MachineShop::Report.all(
32
+ ({:device_instance_id => '538461dc9818006e0900005e',
33
+ :per_page=>'1000',
34
+ #:created_at_between=>'2013-11-04T00:00:00_2014-03-19T17:02:00'
35
+ }), auth_token)
36
+
37
+ puts "element data of f00e5981800ad58000006 #{element_data} "
38
+
39
+ element_data.should_not be_nil
40
+ end
41
+
42
+ it "should get specific report by id" do
43
+ specific_report_id=reports[0].id
44
+ element_data = MachineShop::Report.retrieve("5384800dff7346390c000001",auth_token)
45
+
46
+ puts "report specific #{element_data} "
47
+
48
+ element_data.should_not be_nil
49
+ end
50
+
51
+
52
+ end
@@ -0,0 +1,130 @@
1
+ require_relative '../spec_helper'
2
+
3
+ #MachineShop.api_base_url= 'http://machineshop.dev:3000/api/v0'
4
+ MachineShop.api_base_url= 'http://stage.services.machineshop.io/api/v0'
5
+
6
+ #publisher_username = 'publisher@machineshop.com'
7
+ publisher_username = 'admin@csr.com'
8
+ publisher_password = 'password'
9
+
10
+ MachineShop.configure do |config|
11
+ config.db_name = "machineshop"
12
+ config.db_username="root"
13
+ config.db_password="root"
14
+ config.db_host= "localhost"
15
+ config.expiry_time= lambda{10.seconds.ago}
16
+ #second
17
+ end
18
+
19
+ auth_token, user = MachineShop::User.authenticate(
20
+ :email => publisher_username,
21
+ :password => publisher_password
22
+ )
23
+
24
+
25
+ describe MachineShop::Rule do
26
+
27
+ rules=nil
28
+
29
+ it "should get all the rules " do
30
+ rules = MachineShop::Rule.all({},auth_token)
31
+ # puts "rules haru : #{rules}"
32
+ # ap "getting rules"
33
+ # ap rules.as_json
34
+ rules.should_not be_nil
35
+
36
+
37
+ end
38
+
39
+
40
+
41
+
42
+ it "should create rule" do
43
+
44
+
45
+ create_hash = {
46
+ :devices=>["52585e1d981800bab2000479"],
47
+ :device_instances=>[],
48
+ :rule=>{
49
+ :active=>true,
50
+ :description=>"bajratest",
51
+ :condition=>{
52
+ :type=>"and_rule_condition",
53
+ :rule_conditions=>[{
54
+
55
+ :property=>"var",
56
+ :value=>"30",
57
+ :type=>"equal_rule_condition"
58
+
59
+ }]
60
+ },
61
+ :then_actions=>[{
62
+ :priority=>"1",
63
+ :send_to=>"abc@me.com",
64
+ :type=>"email_rule_action"
65
+ }]
66
+ }
67
+ }
68
+
69
+ # ap "creating rule "
70
+ createdRule = MachineShop::Rule.create(create_hash,auth_token)
71
+
72
+ # ap createdRule.as_json
73
+
74
+ createdRule.should_not be_nil
75
+
76
+ end
77
+
78
+ specificRule = nil
79
+
80
+ it "should get rule by id" do
81
+ # ruleById = MachineShop::Rule.retrieve(rules[0].id,auth_token)
82
+ specificRule = MachineShop::Rule.retrieve("5395b4829818008e790000f9",auth_token)
83
+ # ap "retrieved rule"
84
+ # ap specificRule.as_json
85
+ specificRule.should_not be_nil
86
+
87
+ end
88
+
89
+ it "should delete rule by" do
90
+ # ruleById = MachineShop::Rule.retrieve(rules[0].id,auth_token)
91
+ delete = specificRule.delete
92
+ # ap "Deleted rule"
93
+ # ap delete.as_json
94
+ delete.should_not be_nil
95
+
96
+ end
97
+
98
+ it "should get get join rule conditions" do
99
+ test_data = MachineShop::Rule.get_join_rule_conditions(auth_token)
100
+ # puts "rule comparison : #{test_data.inspect}"
101
+ test_data.should_not be_nil
102
+
103
+ end
104
+
105
+
106
+ it "should get comparison rule_conditions" do
107
+ test_data = MachineShop::Rule.get_comparison_rule_conditions(auth_token)
108
+ # ap "comparison rule condition :"
109
+ # ap test_data.as_json
110
+ test_data.should_not be_nil
111
+
112
+ end
113
+
114
+
115
+ it "should get rule by device_id" do
116
+ test_data = MachineShop::Rule.get_by_device_instance(auth_token,'52585e1d981800bab2000478')
117
+ # ap "rule by_device_instance :"
118
+ # ap test_data.as_json
119
+ test_data.should_not be_nil
120
+
121
+ end
122
+
123
+ it "should get deleted rule" do
124
+ test_data = MachineShop::Rule.get_deleted(auth_token)
125
+ # puts "deleted rule : #{test_data.inspect}"
126
+ test_data.should_not be_nil
127
+
128
+ end
129
+
130
+ end