167 lines
5.6 KiB
Ruby
167 lines
5.6 KiB
Ruby
require_relative '../../../spec_helper_min'
|
|
|
|
describe Carto::Admin::MobileAppsController do
|
|
include Warden::Test::Helpers
|
|
|
|
TEST_UUID = '00000000-0000-0000-0000-000000000000'.freeze
|
|
MOBILE_APP = {
|
|
id: TEST_UUID,
|
|
name: 'app_name',
|
|
description: 'Description of the app',
|
|
icon_url: 'http://icon.png',
|
|
platform: 'android',
|
|
app_id: 'com.app.id',
|
|
app_type: 'open'
|
|
}.freeze
|
|
|
|
before(:all) do
|
|
@carto_user = FactoryGirl.create(:carto_user, mobile_max_open_users: 10000)
|
|
@user = ::User[@carto_user.id]
|
|
end
|
|
|
|
after(:all) do
|
|
@user.destroy
|
|
end
|
|
|
|
around(:each) do |example|
|
|
Cartodb.with_config(cartodb_central_api: {}, &example)
|
|
end
|
|
|
|
describe '#index' do
|
|
it 'loads apps from Central' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(true)
|
|
Cartodb::Central.any_instance.stubs(:get_mobile_apps).returns(mobile_apps: [], monthly_users: { open: 10000, private: 0 }).once
|
|
login(@user)
|
|
get mobile_apps_path
|
|
response.status.should eq 200
|
|
end
|
|
|
|
it 'requires login' do
|
|
get mobile_apps_path
|
|
response.status.should eq 302
|
|
end
|
|
|
|
it 'returns 404 if Central disabled' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(false)
|
|
login(@user)
|
|
get mobile_apps_path
|
|
response.status.should eq 404
|
|
end
|
|
end
|
|
|
|
describe '#show' do
|
|
it 'loads app from Central' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(true)
|
|
Cartodb::Central.any_instance.stubs(:get_mobile_app).returns(id: TEST_UUID, monthly_users: 0, app_type: 'open', platform: 'android').once
|
|
login(@user)
|
|
get mobile_app_path(id: TEST_UUID)
|
|
response.status.should eq 200
|
|
end
|
|
|
|
it 'requires login' do
|
|
get mobile_app_path(id: TEST_UUID)
|
|
response.status.should eq 302
|
|
end
|
|
|
|
it 'returns 404 if Central disabled' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(false)
|
|
login(@user)
|
|
get mobile_app_path(id: TEST_UUID)
|
|
response.status.should eq 404
|
|
end
|
|
end
|
|
|
|
describe '#create' do
|
|
let(:create_app) { MOBILE_APP.slice(:name, :description, :icon_url, :platform, :app_id, :app_type) }
|
|
|
|
it 'creates app in Central' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(true)
|
|
Cartodb::Central.any_instance.stubs(:create_mobile_app).returns({}).once
|
|
login(@user)
|
|
post mobile_apps_path, mobile_app: create_app
|
|
response.status.should eq 302
|
|
response.location.should end_with 'your_apps/mobile'
|
|
end
|
|
|
|
it 'validates app before sending to Central' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(true)
|
|
Cartodb::Central.any_instance.stubs(:create_mobile_app).returns({}).never
|
|
login(@user)
|
|
post mobile_apps_path, mobile_app: create_app.merge(name: '')
|
|
response.status.should eq 200
|
|
response.body.should include "Name can't be blank"
|
|
end
|
|
|
|
it 'requires login' do
|
|
post mobile_apps_path, mobile_app: create_app
|
|
response.status.should eq 302
|
|
end
|
|
|
|
it 'returns 404 if Central disabled' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(false)
|
|
login(@user)
|
|
post mobile_apps_path, mobile_app: create_app
|
|
response.status.should eq 404
|
|
end
|
|
end
|
|
|
|
describe '#update' do
|
|
let(:update_app) { MOBILE_APP.slice(:name, :description, :icon_url, :app_type) }
|
|
|
|
it 'updates app in Central' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(true)
|
|
Cartodb::Central.any_instance.stubs(:get_mobile_app).returns(MOBILE_APP).once
|
|
Cartodb::Central.any_instance.stubs(:update_mobile_app).returns({}).once
|
|
login(@user)
|
|
put mobile_app_path(id: TEST_UUID), mobile_app: update_app
|
|
response.status.should eq 302
|
|
response.location.should end_with 'your_apps/mobile/' + TEST_UUID
|
|
end
|
|
|
|
it 'validates app before sending to Central' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(true)
|
|
Cartodb::Central.any_instance.stubs(:get_mobile_app).returns(id: TEST_UUID, monthly_users: 0, app_type: 'open', platform: 'android').once
|
|
Cartodb::Central.any_instance.stubs(:update_mobile_app).returns(mobile_app: {}).never
|
|
login(@user)
|
|
put mobile_app_path(id: TEST_UUID), mobile_app: update_app.merge(name: '')
|
|
response.status.should eq 200
|
|
response.body.should include "Name can't be blank"
|
|
end
|
|
|
|
it 'requires login' do
|
|
put mobile_app_path(id: TEST_UUID), mobile_app: update_app
|
|
response.status.should eq 302
|
|
end
|
|
|
|
it 'returns 404 if Central disabled' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(false)
|
|
login(@user)
|
|
put mobile_app_path(id: TEST_UUID), mobile_app: update_app
|
|
response.status.should eq 404
|
|
end
|
|
end
|
|
|
|
describe '#destroy' do
|
|
it 'deletes app in Central' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(true)
|
|
Cartodb::Central.any_instance.stubs(:delete_mobile_app).returns({}).once
|
|
login(@user)
|
|
delete mobile_app_path(id: TEST_UUID), password_confirmation: @carto_user.password
|
|
response.status.should eq 302
|
|
response.location.should end_with 'your_apps/mobile'
|
|
end
|
|
|
|
it 'requires login' do
|
|
delete mobile_app_path(id: TEST_UUID)
|
|
response.status.should eq 302
|
|
end
|
|
|
|
it 'returns 404 if Central disabled' do
|
|
Cartodb::Central.stubs(:sync_data_with_cartodb_central?).returns(false)
|
|
login(@user)
|
|
delete mobile_app_path(id: TEST_UUID)
|
|
response.status.should eq 404
|
|
end
|
|
end
|
|
end
|