-
Notifications
You must be signed in to change notification settings - Fork 284
/
Copy pathaccess_control_spec.rb
96 lines (90 loc) · 3.48 KB
/
access_control_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
require 'rspec'
require 'cloudinary'
require 'spec_helper'
require 'time'
# Calculates days as seconds
def days(n)
n * 3600 * 24
end
describe "Access Control" do
before :each do
Cloudinary.reset_config
end
let (:acl) {{
:access_type => 'anonymous',
:start => '2019-02-22 16:20:57 +0200',
:end => '2019-03-22 00:00 +0200'
}}
let (:acl_2) {{
:access_type => 'anonymous',
:start => '2019-02-22 16:20:57Z',
:end => '2019-03-22 00:00 +0200'
}}
let (:acl_string) {
'{"access_type":"anonymous","start":"2019-02-22 16:20:57 +0200","end":"2019-03-22 00:00 +0200"}'
}
let (:options) {{
:public_id => TIMESTAMP_TAG,
:tags => [TEST_TAG, TIMESTAMP_TAG, 'access_control_test']
}}
let(:resource ){
Cloudinary::Uploader.upload(
TEST_IMG,
options)
}
describe 'build_upload_params' do
it "should accept a Hash value" do
params = Cloudinary::Uploader.build_upload_params access_control: acl
expect(params).to have_key(:access_control)
expect(params[:access_control]).to be_a String
expect(params[:access_control]).to match(/^\[.+\]$/)
end
it "should accept an array of Hash values" do
params = Cloudinary::Uploader.build_upload_params access_control: [acl, acl_2]
expect(params).to have_key(:access_control)
expect(params[:access_control]).to be_a String
expect(params[:access_control]).to match(/^\[.+\]$/)
j = JSON.parse(params[:access_control])
expect(j.length).to be(2)
expect(j[0]["access_type"]).to eql(acl[:access_type])
expect(j[0]["start"]).to eql(acl[:start])
expect(j[0]["end"]).to eql(acl[:end])
end
it "should accept a JSON string" do
params = Cloudinary::Uploader.build_upload_params access_control: acl_string
expect(params).to have_key(:access_control)
expect(params[:access_control]).to be_a String
expect(params[:access_control]).to eql("[#{acl_string}]")
end
end
describe 'upload' do
break puts("Please setup environment for api test to run") if Cloudinary.config.api_secret.blank?
include_context "cleanup", TIMESTAMP_TAG
it 'should allow the user to define ACL in the upload parameters' do
options[:access_control] = [acl]
expect(resource).to have_key('access_control')
response_acl = resource["access_control"]
expect(response_acl.length).to be(1)
expect(response_acl[0]["access_type"]).to eq("anonymous")
expect(Time.parse(response_acl[0]["start"])).to eq(Time.parse(acl[:start]))
expect(Time.parse(response_acl[0]["end"])).to eq(Time.parse(acl[:end]))
end
end
describe 'update' do
break puts("Please setup environment for api test to run") if Cloudinary.config.api_secret.blank?
include_context "cleanup", TIMESTAMP_TAG
it 'should allow the user to define ACL in the update parameters' do
resource # upload before setting the expect
result = Cloudinary::Api.update(
resource['public_id'],
:tags => [TEST_TAG, TIMESTAMP_TAG, 'access_control_test'],
:access_control => acl)
expect(result).to have_key('access_control')
response_acl = result["access_control"]
expect(response_acl.length).to be(1)
expect(response_acl[0]["access_type"]).to eq("anonymous")
expect(Time.parse(response_acl[0]["start"])).to eq(Time.parse(acl[:start]))
expect(Time.parse(response_acl[0]["end"])).to eq(Time.parse(acl[:end]))
end
end
end