-
Notifications
You must be signed in to change notification settings - Fork 124
/
Copy pathclients_spec.rb
164 lines (139 loc) · 5.82 KB
/
clients_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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# encoding: UTF-8
#
# Copyright (c) 2010-2017 GoodData Corporation. All rights reserved.
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
require 'gooddata/models/segment'
require 'securerandom'
describe GoodData::Client, :vcr do
before(:all) do
@client = ConnectionHelper.create_default_connection
@domain = @client.domain(ConnectionHelper::DEFAULT_DOMAIN)
@master_project = @client.create_project(title: 'Test project', auth_token: ConnectionHelper::SECRETS[:gd_project_token])
@segment_name = "segment-#{SecureRandom.uuid}"
@segment = @domain.create_segment(segment_id: @segment_name, master_project: @master_project)
end
after(:all) do
@segment && @segment.delete
@master_project && @master_project.delete
@client.disconnect
end
describe '#[]' do
before(:all) do
client_id = SecureRandom.uuid
@client_project = @client.create_project(title: "client_#{client_id} project", auth_token: ConnectionHelper::SECRETS[:gd_project_token])
@segment_client = @segment.create_client(id: "tenant_#{client_id}", project: @client_project)
end
it 'Returns all clients of a segment' do
clients = @segment.clients
expect(clients.to_a).to be_an_instance_of(Array)
expect(clients.to_a.size).to eq 1
end
it 'Returns specific tenant when schedule ID passed' do
client = @segment.clients(@segment_client)
expect(client).to be_an_instance_of(GoodData::Client)
expect(client.client_id).to eq @segment_client.client_id
end
after(:all) do
@client_project && @client_project.delete
@segment_client && @segment_client.delete
end
end
describe '#delete' do
before(:all) do
client_id = SecureRandom.uuid
@segment_client = @segment.create_client(id: "tenant_#{client_id}")
end
it 'Deletes particular client' do
expect(@segment.clients.count).to eq 1
s = @segment.clients(@segment_client)
s.delete
expect(@segment.clients.count).to eq 0
@segment_client = nil
end
end
describe '#dissociate' do
before(:all) do
client_id = SecureRandom.uuid
@client_project = @client.create_project(title: 'client_1 project', auth_token: ConnectionHelper::SECRETS[:gd_project_token])
@segment_client = @segment.create_client(id: "tenant_#{client_id}", project: @client_project)
end
after(:all) do
@client_project && @client_project.delete
end
it 'Dissociate particular client and their project is not cleaned up' do
expect(@segment.clients.count).to eq 1
s = @segment.clients(@segment_client)
s.dissociate
expect(@segment.clients.count).to eq 0
expect(@client_project.reload!.state).to eq :enabled
@segment_client = nil
end
end
describe '#delete' do
before(:all) do
client_id = SecureRandom.uuid
@client_project = @client.create_project(title: 'client_1 project', auth_token: ConnectionHelper::SECRETS[:gd_project_token])
@segment_client = @segment.create_client(id: "tenant_#{client_id}", project: @client_project)
end
it 'Deletes particular client. Project is cleaned up as well' do
expect(@segment.clients.count).to eq 1
s = @segment.clients(@segment_client)
s.delete
expect(@segment.clients.count).to eq 0
expect(@client_project.reload!.state).to eq :deleted
@segment_client = nil
end
end
describe '#settings' do
before(:all) do
@segment_client = @segment.create_client(id: "tenant_#{SecureRandom.uuid}", project: @client_project)
end
it 'can create/update setting' do
expect(@segment_client.settings).to eq []
GoodData::Client.add_setting('lcm.token', 'XXX-lcm-token-XXX', domain: @domain, client_id: @segment_client.client_id)
expect(@segment_client.settings).to eq [{ name: 'lcm.token', value: 'XXX-lcm-token-XXX' }]
GoodData::Client.update_setting('lcm.token', 'XXX-lcm-token-XXX-(updated)', domain: @domain, client_id: @segment_client.client_id)
expect(@segment_client.settings).to eq [{ name: 'lcm.token', value: 'XXX-lcm-token-XXX-(updated)' }]
end
after(:all) do
@segment_client && @segment_client.delete
end
end
describe '#save' do
before(:all) do
@client_id = SecureRandom.uuid
@client_project = @client.create_project(title: 'client_1 project', auth_token: ConnectionHelper::SECRETS[:gd_project_token])
@segment_client = @segment.create_client(id: "tenant_#{@client_id}", project: @client_project)
end
it 'can update project id' do
begin
other_client_project = @client.create_project(title: "client_#{@client_id} other project", auth_token: ConnectionHelper::SECRETS[:gd_project_token])
@segment_client.project = other_client_project
@segment_client.save
expect(@segment.clients(@segment_client).project_uri).to eq other_client_project.uri
ensure
other_client_project && other_client_project.delete
end
end
it 'throws error when trying to update tenants segment id' do
second_segment_name = "segment-#{SecureRandom.uuid}"
second_master_project = @client.create_project(title: 'Test project', auth_token: ConnectionHelper::SECRETS[:gd_project_token])
second_segment = @domain.create_segment(segment_id: second_segment_name, master_project: second_master_project)
@segment_client.segment = second_segment
expect do
@segment_client.save
end.to raise_error(RestClient::BadRequest)
end
it 'cannot update a client id' do
@segment_client.client_id = 'different_id'
expect do
@segment_client.save
end.to raise_error RestClient::BadRequest
end
after(:all) do
@segment_client && @segment_client.delete
@client_project && @client_project.delete
end
end
end