wavelabs_client_api 0.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.travis.yml +8 -0
  4. data/CODE_OF_CONDUCT.md +13 -0
  5. data/Gemfile +6 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +140 -0
  8. data/Rakefile +12 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +7 -0
  11. data/lib/generators/templates/wavelabs_client_api_initializer.rb +13 -0
  12. data/lib/generators/wavelabs_client_api/install_generator.rb +17 -0
  13. data/lib/wavelabs_client_api.rb +34 -0
  14. data/lib/wavelabs_client_api/client/api/core/auth_api.rb +179 -0
  15. data/lib/wavelabs_client_api/client/api/core/base_api.rb +92 -0
  16. data/lib/wavelabs_client_api/client/api/core/media_api.rb +48 -0
  17. data/lib/wavelabs_client_api/client/api/core/social_api.rb +78 -0
  18. data/lib/wavelabs_client_api/client/api/core/users_api.rb +90 -0
  19. data/lib/wavelabs_client_api/client/api/data_models/base_api_model.rb +40 -0
  20. data/lib/wavelabs_client_api/client/api/data_models/login_api_model.rb +41 -0
  21. data/lib/wavelabs_client_api/client/api/data_models/media_api_model.rb +26 -0
  22. data/lib/wavelabs_client_api/client/api/data_models/member_api_model.rb +55 -0
  23. data/lib/wavelabs_client_api/client/api/data_models/message_api_model.rb +19 -0
  24. data/lib/wavelabs_client_api/client/api/data_models/social_accounts_api_model.rb +41 -0
  25. data/lib/wavelabs_client_api/client/api/data_models/token_api_model.rb +37 -0
  26. data/lib/wavelabs_client_api/client/api/data_models/token_details_api_model.rb +51 -0
  27. data/lib/wavelabs_client_api/version.rb +3 -0
  28. data/spec/core_api_specs/auth_api_spec.rb +90 -0
  29. data/spec/core_api_specs/media_api_spec.rb +38 -0
  30. data/spec/core_api_specs/social_api_spec.rb +32 -0
  31. data/spec/core_api_specs/users_api_spec.rb +65 -0
  32. data/spec/data_model_specs/login_api_model_spec.rb +27 -0
  33. data/spec/data_model_specs/media_api_model_spec.rb +21 -0
  34. data/spec/data_model_specs/member_api_model_spec.rb +38 -0
  35. data/spec/data_model_specs/message_api_model_spec.rb +19 -0
  36. data/spec/data_model_specs/social_accounts_api_model_spec.rb +25 -0
  37. data/spec/data_model_specs/token_api_model_spec.rb +21 -0
  38. data/spec/spec_helper.rb +28 -0
  39. data/spec/support/temp_user.doc +0 -0
  40. data/spec/support/temp_user.png +0 -0
  41. data/spec/support/user_sign_up.rb +20 -0
  42. data/wavelabs_client_api.gemspec +41 -0
  43. metadata +183 -0
@@ -0,0 +1,19 @@
1
+ # This class is a virtual Model for MessageApi model.
2
+ # It have required attributes to create the MessageApi model object.
3
+ # The purpose of this class is to create MessageApi model object
4
+ # to send back the API Server response.
5
+
6
+
7
+ class WavelabsClientApi::Client::Api::DataModels::MessageApiModel
8
+
9
+ attr_accessor :status, :messgeCode, :message
10
+
11
+ def initialize(json_response = nil)
12
+ if json_response.present?
13
+ @status = json_response.code
14
+ @messageCode = json_response.parsed_response[:messageCode]
15
+ @message = json_response.parsed_response[:message]
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,41 @@
1
+ # This class is a virtual Model for SocialAccountsApiModel.
2
+ # It have required attributes to create the SocialAccountsApiModel object.
3
+ # And also it included the Rails ActiveModel::Validations to
4
+ # add errors which will populate on views. Based on the response from
5
+ # Wavelabs API server 'add_errors' or 'add_messages' methods add appropriate
6
+ # messages to SocialAccountsApiModel object.
7
+
8
+ class WavelabsClientApi::Client::Api::DataModels::SocialAccountsApiModel < WavelabsClientApi::Client::Api::DataModels::BaseApiModel
9
+
10
+ attr_accessor :id, :email, :social_type, :image_url
11
+
12
+ def initialize(social_params = nil)
13
+ if social_params.present?
14
+ @id = social_params["id"]
15
+ @email = social_params["email"]
16
+ @social_type = social_params["socialType"]
17
+ @image_url = social_params["imageUrl"]
18
+ else
19
+ @id, @email, @social_type, @image_url = nil
20
+ end
21
+ end
22
+
23
+
24
+ def add_errors(json_response)
25
+ json_response["errors"].each do |e|
26
+ property_name = e['propertyName']
27
+ msg = e['message']
28
+ self.errors[property_name] << msg
29
+ end
30
+ end
31
+
32
+ def add_messages(json_response)
33
+ if json_response["message"].present?
34
+ @message = json_response["message"]
35
+ elsif json_response["error"].present?
36
+ @message = json_response["error"]
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,37 @@
1
+ # This class is a virtual Model for TokenApiModel.
2
+ # It have required attributes to create the TokenApiModel object.
3
+
4
+
5
+ class WavelabsClientApi::Client::Api::DataModels::TokenApiModel < WavelabsClientApi::Client::Api::DataModels::BaseApiModel
6
+ attr_accessor :value, :expires_in, :refresh_token, :scope, :token_type, :message
7
+
8
+ def initialize(token_params = nil)
9
+ if token_params.present?
10
+ @value = token_params["access_token"]
11
+ @expires_in = token_params["expires_in"]
12
+ @refresh_token = token_params["refresh_token"]
13
+ @scope = token_params["scope"]
14
+ @token_type = token_params["token_type"]
15
+ else
16
+ @value , @expires_in, @refresh_token, @scope, @token_type, @message = nil
17
+ end
18
+ end
19
+
20
+ def add_errors(json_response)
21
+ json_response["errors"].each do |e|
22
+ property_name = e['propertyName']
23
+ msg = e['message']
24
+ self.errors[property_name] << msg
25
+ end
26
+ end
27
+
28
+ def add_messages(json_response)
29
+ if json_response["message"].present?
30
+ @message = json_response["message"]
31
+ elsif json_response["error"].present?
32
+ @message = json_response["error"]
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,51 @@
1
+ # This class is a virtual Model for TokenApiModel.
2
+ # It have required attributes to create the TokenApiModel object.
3
+
4
+
5
+ class WavelabsClientApi::Client::Api::DataModels::TokenDetailsApiModel < WavelabsClientApi::Client::Api::DataModels::BaseApiModel
6
+ attr_accessor :username, :clientId, :tokenType, :token, :expiration, :expired, :authorities, :uuid, :tenantId, :message
7
+
8
+ def initialize(token_details_params = nil)
9
+ if token_details_params.present?
10
+ @username = token_details_params["username"]
11
+ @expiration = token_details_params["expiration"]
12
+ @clientId = token_details_params["clientId"]
13
+ @token = token_details_params["token"]
14
+ @tokenType = token_details_params["tokenType"]
15
+ @expired = token_details_params["expired"]
16
+ if token_details_params["member"].present?
17
+ @uuid = token_details_params["member"]["uuid"]
18
+ else
19
+ @uuid = nil
20
+ end
21
+
22
+ if token_details_params["authorities"].present?
23
+ @authorities = token_details_params["authorities"]
24
+ else
25
+ @authorities = nil
26
+ end
27
+
28
+ @tenantId = token_details_params["tenantId"]
29
+ else
30
+ @username, @expiration, @clientId, @token, @tokenType, @expired, @authorities, @uuid, @tenantId= nil
31
+ end
32
+ end
33
+
34
+ def add_errors(json_response)
35
+ json_response["errors"].each do |e|
36
+ property_name = e['propertyName']
37
+ msg = e['message']
38
+ self.errors[property_name] << msg
39
+ end
40
+ end
41
+
42
+ def add_messages(json_response)
43
+ if json_response["message"].present?
44
+ @message = json_response["message"]
45
+ elsif json_response["error"].present?
46
+ @message = json_response["error"]
47
+ end
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,3 @@
1
+ module WavelabsClientApi
2
+ VERSION = "0.3.5"
3
+ end
@@ -0,0 +1,90 @@
1
+ require 'spec_helper'
2
+
3
+ describe WavelabsClientApi::Client::Api::Core::AuthApi do
4
+
5
+ user_params = {:username => "wavlelabstest",
6
+ :password => "test123",
7
+ :email => "test@wavelabs.com",
8
+ :firstName => "w",
9
+ :lastName => "L"}
10
+
11
+ let(:signup_user) {UserSignUp.sign_up_user(user_params)}
12
+ let(:login_user) {UserSignUp.login_user}
13
+ let(:get_initial_token) {UserSignUp.get_token}
14
+
15
+ let (:auth_api_obj) { WavelabsClientApi::Client::Api::Core::AuthApi.new}
16
+ let (:auth_api) { WavelabsClientApi::Client::Api::Core::AuthApi}
17
+
18
+ it "#check_connection?" do
19
+ expect(auth_api.check_connection?).to be true
20
+ end
21
+
22
+ it "#Check Constants of Auth API URIS" do
23
+ expect(auth_api::AUTH_TOKEN_URI).to eq '/oauth/token'
24
+ expect(auth_api::TOKEN_VALIDATION_URI).to eq '/api/oauth/v0/tokens'
25
+ expect(auth_api::LOGIN_URI).to eq '/api/identity/v0/auth/login'
26
+ expect(auth_api::LOGOUT_URI).to eq '/api/identity/v0/auth/logout'
27
+ expect(auth_api::CHANGE_PASSWORD_URI).to eq '/api/identity/v0/auth/changePassword'
28
+ expect(auth_api::FORGOT_PASSWORD_URI).to eq '/api/identity/v0/auth/forgotPassword'
29
+ end
30
+
31
+ it "#get_auth_token with client details" do
32
+ res = auth_api_obj.get_auth_token("client_credentials", "scope:oauth.token.verify")
33
+ expect(res[:status]).to eq 200
34
+ end
35
+
36
+ it "#is_token_valid with valid tokens" do
37
+ signup_user
38
+ res = auth_api_obj.login({:username => "wavlelabstest", :password => "test123"}, get_initial_token)
39
+ expect(res[:status]).to eq 200
40
+ user_token = res[:member].token.value
41
+ final_res = auth_api_obj.is_token_valid(user_token, get_initial_token)
42
+ #expect(final_res[:token].token).not_to be_empty
43
+ expect(final_res[:status]).to eq 403
44
+ end
45
+
46
+ it "#login method without login details" do
47
+ res = auth_api_obj.login
48
+ expect(res[:status]).to eq 500
49
+ expect(res[:login].message).to eq "Invalid login parameters"
50
+ end
51
+
52
+ it "#login method with unregistered login details" do
53
+ res = auth_api_obj.login({:username => "test", :password => "pas"}, get_initial_token)
54
+ expect(res[:status]).to eq 400
55
+ end
56
+
57
+ it "#login method with registered login details" do
58
+ signup_user
59
+ res = auth_api_obj.login({:username => "wavlelabstest", :password => "test123"}, get_initial_token)
60
+ expect(res[:status]).to eq 200
61
+ end
62
+
63
+ it "Check Forgot Password with valid email#forgot_password" do
64
+ res = auth_api_obj.forgot_password({:email => "test@wavelabs.com"}, get_initial_token)
65
+ expect(res[:status]).to eq 200
66
+ end
67
+
68
+ it "Check Forgot Password with invalid email(#forgot_password)" do
69
+ res = auth_api_obj.forgot_password({:email => "test@labs.com"}, get_initial_token)
70
+ expect(res[:status]).to eq 400
71
+ end
72
+
73
+ it "Check Forgot Password with empty email(#forgot_password)" do
74
+ res = auth_api_obj.forgot_password({:email => " "}, get_initial_token)
75
+ expect(res[:status]).to eq 400
76
+ end
77
+
78
+ it "Check Change Password with invalid details(#change_password)" do
79
+ l_req = login_user
80
+ res = auth_api_obj.change_password({:password => "", :newPassword => " "},l_req[:member].token.value)
81
+ expect(res[:status]).to eq 400
82
+ end
83
+
84
+ it "Check Logout(#logout)" do
85
+ l_req = login_user
86
+ res = auth_api_obj.logout(l_req[:member].token.value)
87
+ expect(res[:status]).to eq 200
88
+ end
89
+
90
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe WavelabsClientApi::Client::Api::Core::MediaApi do
4
+ let(:login_user) {UserSignUp.login_user}
5
+
6
+ let (:media_api_obj) { WavelabsClientApi::Client::Api::Core::MediaApi.new}
7
+ let (:media_api) { WavelabsClientApi::Client::Api::Core::MediaApi}
8
+
9
+ it "#check_connection?" do
10
+ expect(media_api.check_connection?).to be true
11
+ end
12
+
13
+ it "#Check Constants of Media API URIS" do
14
+ expect(media_api::MEDIA_URI).to eq '/api/media/v0/media'
15
+ end
16
+
17
+ it "#get_media with user details after login" do
18
+ l_req = login_user
19
+ res = media_api_obj.get_media(l_req[:member].id, "profile", l_req[:member].token.value)
20
+ expect(res[:status]).to eq 200
21
+ end
22
+
23
+ it "#update_media with user details after login" do
24
+ l_req = login_user
25
+ file_path = Dir.pwd + "/spec/support/temp_user.png"
26
+ res = media_api_obj.upload_media(file_path, "profile", l_req[:member].token.value, l_req[:member].id)
27
+ expect(res[:status]).to eq 200
28
+ end
29
+
30
+ it "#update_media with invalide file type after login" do
31
+ l_req = login_user
32
+ file_path = Dir.pwd + "/spec/support/temp_user.doc"
33
+ res = media_api_obj.upload_media(file_path, "profile", l_req[:member].token.value, l_req[:member].id)
34
+ expect(res[:status]).to eq 200
35
+ expect(res[:media].message).to eq "media.upload.error"
36
+ end
37
+
38
+ end
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe WavelabsClientApi::Client::Api::Core::SocialApi do
4
+ let (:social_api_obj) { WavelabsClientApi::Client::Api::Core::SocialApi.new}
5
+ let (:social_api) { WavelabsClientApi::Client::Api::Core::SocialApi}
6
+
7
+ it "#check_connection?" do
8
+ expect(social_api.check_connection?).to be true
9
+ end
10
+
11
+ it "#Check Constants of Social API URIS" do
12
+ expect(social_api::FACEBOOK_LOGIN_URI).to eq '/api/identity/v0/auth/social/facebook/connect'
13
+ expect(social_api::GOOGLE_LOGIN_URI).to eq '/api/identity/v0/auth/social/googlePlus/connect'
14
+ expect(social_api::GITHUB_LOGIN_URI).to eq '/api/identity/v0/auth/social/gitHub/connect'
15
+ expect(social_api::LINKEDIN_LOGIN_URI).to eq '/api/identity/v0/auth/social/linkedIn/connect'
16
+ expect(social_api::INSTAGRAM_LOGIN_URI).to eq '/api/identity/v0/auth/social/instagram/connect'
17
+ expect(social_api::TWITER_LOGIN_URI).to eq '/api/identity/v0/auth/social/twitter/connect'
18
+ expect(social_api::INVALID_SOCIAL_URI).to eq '/api/identity/v0/auth/social/invalid/connect'
19
+ end
20
+
21
+ it "#get_scoial_login_uri" do
22
+ expect(social_api_obj.get_scoial_login_uri("facebook")).to eq '/api/identity/v0/auth/social/facebook/connect'
23
+ expect(social_api_obj.get_scoial_login_uri("google_oauth2")).to eq '/api/identity/v0/auth/social/googlePlus/connect'
24
+ expect(social_api_obj.get_scoial_login_uri("linkedin")).to eq '/api/identity/v0/auth/social/linkedIn/connect'
25
+ expect(social_api_obj.get_scoial_login_uri("instagram")).to eq '/api/identity/v0/auth/social/instagram/connect'
26
+ expect(social_api_obj.get_scoial_login_uri("twitter")).to eq '/api/identity/v0/auth/social/twitter/connect'
27
+ expect(social_api_obj.get_scoial_login_uri("github")).to eq '/api/identity/v0/auth/social/gitHub/connect'
28
+ expect(social_api_obj.get_scoial_login_uri("abcdef")).to eq '/api/identity/v0/auth/social/invalid/connect'
29
+ end
30
+
31
+
32
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+
3
+ describe WavelabsClientApi::Client::Api::Core::UsersApi do
4
+
5
+ let (:user_api_obj) { WavelabsClientApi::Client::Api::Core::UsersApi.new}
6
+ let (:user_api) { WavelabsClientApi::Client::Api::Core::UsersApi}
7
+ let(:get_initial_token) {UserSignUp.get_token}
8
+
9
+ let(:login_user) {UserSignUp.login_user}
10
+
11
+ it "check server connection" do
12
+ expect(user_api.check_connection?).to be true
13
+ end
14
+
15
+
16
+ it "#Check Constants of Users API URIS" do
17
+ expect(user_api::SIGNUP_URI).to eq '/api/identity/v0/users/signup'
18
+ expect(user_api::USER_URI).to eq '/api/identity/v0/users'
19
+ end
20
+
21
+
22
+ it "Signup with existing user details(#sign_up)" do
23
+ user_params = {:username => "wavlelabstest",
24
+ :password => "test123",
25
+ :email => "test@wavelabs.com",
26
+ :firstName => "w",
27
+ :lastName => "L"}
28
+
29
+ res = user_api_obj.sign_up(user_params, get_initial_token)
30
+ expect(res[:status]).to eq 400
31
+ expect(res[:member].errors.size).to eq 2
32
+
33
+ end
34
+
35
+ it "Signup with valid details(#sign_up)" do
36
+ random_number = rand(0..100)
37
+ user_params = {:username => "wavlelabstest#{random_number}",
38
+ :password => "test1234",
39
+ :email => "test@wavelabs#{random_number}.com",
40
+ :firstName => "L",
41
+ :lastName => "W"}
42
+
43
+ res = user_api_obj.sign_up(user_params, get_initial_token)
44
+ expect([200,400].include?res[:status]).to eq true
45
+ end
46
+
47
+ it "After Login user can view his profile(#show)" do
48
+ l_req = login_user
49
+ res = user_api_obj.show({:id => l_req[:member].id},l_req[:member].token.value)
50
+ expect(res[:status]).to eq 200
51
+ end
52
+
53
+ it "After Login user can update his profile(#update)" do
54
+ l_req = login_user
55
+ edit_user_params = {:id => l_req[:member].id,
56
+ :description => "test wavelabs",
57
+ :email => "test@wavelabs.com",
58
+ :firstName => "W",
59
+ :lastName => "L"
60
+ }
61
+ res = user_api_obj.update(edit_user_params,l_req[:member].token.value)
62
+ expect(res[:status]).to eq 200
63
+ end
64
+
65
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe WavelabsClientApi::Client::Api::DataModels::LoginApiModel do
4
+
5
+ let (:login_api_model_obj) { WavelabsClientApi::Client::Api::DataModels::LoginApiModel.new}
6
+ let (:login_api_model) { WavelabsClientApi::Client::Api::DataModels::LoginApiModel}
7
+
8
+ it "#check all model properties" do
9
+ expect(login_api_model_obj.respond_to?(:username)).to eq true
10
+ expect(login_api_model_obj.respond_to?(:email)).to eq true
11
+ expect(login_api_model_obj.respond_to?(:firstName)).to eq true
12
+ expect(login_api_model_obj.respond_to?(:lastName)).to eq true
13
+ expect(login_api_model_obj.respond_to?(:phone)).to eq true
14
+ expect(login_api_model_obj.respond_to?(:newPassword)).to eq true
15
+ expect(login_api_model_obj.respond_to?(:message)).to eq true
16
+ end
17
+
18
+ it "#check all instance methods" do
19
+ expect(login_api_model_obj.respond_to?(:add_errors)).to eq true
20
+ expect(login_api_model_obj.respond_to?(:add_messages)).to eq true
21
+ end
22
+
23
+ it "#check undefined instance/properties methods" do
24
+ expect(login_api_model_obj.respond_to?(:description)).to eq false
25
+ expect(login_api_model_obj.respond_to?(:add_message)).to eq false
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe WavelabsClientApi::Client::Api::DataModels::MediaApiModel do
4
+
5
+ let (:media_api_model_obj) { WavelabsClientApi::Client::Api::DataModels::MediaApiModel.new()}
6
+ let (:media_api_model) { WavelabsClientApi::Client::Api::DataModels::MediaApiModel}
7
+
8
+ it "#check all model properties" do
9
+ expect(media_api_model_obj.respond_to?(:extension)).to eq true
10
+ expect(media_api_model_obj.respond_to?(:mediaFileDetailsList)).to eq true
11
+ expect(media_api_model_obj.respond_to?(:newMedia)).to eq true
12
+ expect(media_api_model_obj.respond_to?(:supportedsizes)).to eq true
13
+ expect(media_api_model_obj.respond_to?(:message)).to eq true
14
+ end
15
+
16
+ it "#check undefined instance/properties methods" do
17
+ expect(media_api_model_obj.respond_to?(:password)).to eq false
18
+ expect(media_api_model_obj.respond_to?(:add_message)).to eq false
19
+ end
20
+
21
+ end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe WavelabsClientApi::Client::Api::DataModels::MemberApiModel do
4
+
5
+ let (:member_api_model_obj) { WavelabsClientApi::Client::Api::DataModels::MemberApiModel.new(nil, true)}
6
+ let (:member_api_model_obj_with_associates) { WavelabsClientApi::Client::Api::DataModels::MemberApiModel.new(nil, false)}
7
+ let (:member_api_model) { WavelabsClientApi::Client::Api::DataModels::MemberApiModel}
8
+
9
+ it "#check all model properties" do
10
+ expect(member_api_model_obj.respond_to?(:username)).to eq true
11
+ expect(member_api_model_obj.respond_to?(:email)).to eq true
12
+ expect(member_api_model_obj.respond_to?(:firstName)).to eq true
13
+ expect(member_api_model_obj.respond_to?(:lastName)).to eq true
14
+ expect(member_api_model_obj.respond_to?(:phone)).to eq true
15
+ expect(member_api_model_obj.respond_to?(:id)).to eq true
16
+ expect(member_api_model_obj.respond_to?(:description)).to eq true
17
+ expect(member_api_model_obj.respond_to?(:message)).to eq true
18
+ end
19
+
20
+ it "#check all instance methods" do
21
+ expect(member_api_model_obj.respond_to?(:add_errors)).to eq true
22
+ expect(member_api_model_obj.respond_to?(:add_messages)).to eq true
23
+ end
24
+
25
+ it "#check undefined instance/properties methods" do
26
+ expect(member_api_model_obj.respond_to?(:password)).to eq false
27
+ expect(member_api_model_obj.respond_to?(:add_message)).to eq false
28
+ end
29
+
30
+
31
+ it "#check assoicated models of member" do
32
+ m_model = member_api_model_obj_with_associates
33
+
34
+ expect(m_model.respond_to?(:social_accounts)).to eq true
35
+ expect(m_model.respond_to?(:token)).to eq true
36
+ end
37
+
38
+ end