File tree Expand file tree Collapse file tree 4 files changed +108
-2
lines changed Expand file tree Collapse file tree 4 files changed +108
-2
lines changed Original file line number Diff line number Diff line change @@ -296,6 +296,7 @@ class Ey::Core::Client < Cistern::Service
296
296
request :reboot_server
297
297
request :run_cluster_component_action
298
298
request :run_environment_application_action
299
+ request :signup
299
300
request :update_addon
300
301
request :update_addon_attachment
301
302
request :update_alert
Original file line number Diff line number Diff line change
1
+ class Ey ::Core ::Client
2
+ class Real
3
+ def signup ( _params )
4
+ params = Cistern ::Hash . stringify_keys ( _params )
5
+
6
+ request (
7
+ :method => :post ,
8
+ :path => "/signups" ,
9
+ :params => params ,
10
+ )
11
+ end
12
+ end # Real
13
+
14
+ class Mock
15
+ def signup ( _params )
16
+ if self . authentication != :hmac
17
+ response ( status : 403 )
18
+ end
19
+
20
+ params = Cistern ::Hash . stringify_keys ( _params )
21
+
22
+ user_id = self . uuid
23
+
24
+ user = params [ "user" ] . dup
25
+ user . merge! ( {
26
+ "id" => user_id ,
27
+ "accounts" => url_for ( "/users/#{ user_id } /accounts" ) ,
28
+ "memberships" => url_for ( "/users/#{ user_id } /memberships" ) ,
29
+ "keypairs" => url_for ( "/users/#{ user_id } /keypairs" ) ,
30
+ "token" => SecureRandom . hex ( 20 )
31
+ } )
32
+
33
+ self . data [ :users ] [ user_id ] = user
34
+
35
+ account_id = self . uuid
36
+
37
+ account = mock_account_setup ( account_id , params [ "account" ] . dup )
38
+
39
+ self . data [ :accounts ] [ account_id ] = account . merge ( :account_users => [ user_id ] , :account_owners => [ user_id ] )
40
+
41
+ ( params [ "features" ] || [ ] ) . each do |resource_id |
42
+ feature = self . data [ :features ] [ resource_id ]
43
+
44
+ account_url = url_for ( "/accounts/#{ account_id } " )
45
+ feature [ "account" ] = account_url
46
+ end
47
+
48
+ response (
49
+ :body => {
50
+ "signup" => {
51
+ "user_id" => user_id ,
52
+ "account_id" => account_id ,
53
+ } ,
54
+ } ,
55
+ :status => 201 ,
56
+ )
57
+ end
58
+ end # Mock
59
+ end # Ey::Core::Client
Original file line number Diff line number Diff line change 27
27
it "should create an account" do
28
28
name = Faker ::Name . first_name
29
29
30
- account = hmac_client . accounts . create! ( owner : user , name : name , signup_via : "deis" )
30
+ account = hmac_client . accounts . create! ( owner : user , name : name )
31
+
32
+ # signup_via is foyer only
33
+ # account = hmac_client.accounts.create!(owner: user, name: name, signup_via: "deis")
34
+ # expect(account.signup_via).to eq("deis")
31
35
32
36
expect ( account . name ) . to eq ( name )
33
37
expect ( account . support_plan ) . to eq ( "standard" )
34
- expect ( account . signup_via ) . to eq ( "deis" )
35
38
36
39
users = account . users . all
37
40
expect ( users . size ) . to eq ( 1 )
Original file line number Diff line number Diff line change
1
+ require 'spec_helper'
2
+
3
+ describe 'signups' do
4
+ context "with a hmac client" do
5
+ let! ( :client ) { create_hmac_client }
6
+
7
+ let! ( :public_feature ) do
8
+ if Ey ::Core ::Client . mocking?
9
+ client . create_feature (
10
+ :id => "public_feature" ,
11
+ :privacy => "public" ,
12
+ :name => "A Public Feature" ,
13
+ )
14
+ else
15
+ client . features . all . first
16
+ end
17
+ end
18
+
19
+ it "should create a user and account" do
20
+ user_params = {
21
+ :name => Faker ::Name . name ,
22
+ :email => Faker ::Internet . email ,
23
+ :password => SecureRandom . hex ( 8 ) ,
24
+ }
25
+ account_params = {
26
+ :account_name => SecureRandom . hex ( 6 ) ,
27
+ }
28
+ features = [ public_feature . id ]
29
+
30
+ signup = client . signup ( user : user_params , account : account_params , features : features ) . body [ "signup" ]
31
+ user = client . users . get ( signup [ "user_id" ] )
32
+ account = client . accounts . get ( signup [ "account_id" ] )
33
+
34
+ expect ( user . name ) . to eq ( user_params [ :name ] )
35
+ expect ( user . email ) . to eq ( user_params [ :email ] )
36
+
37
+ expect ( account . name ) . to eq ( account_params [ :name ] )
38
+
39
+ expect ( user . accounts ) . to contain_exactly ( account )
40
+ expect ( account . features . map ( &:id ) ) . to include ( *features )
41
+ end
42
+ end
43
+ end
You can’t perform that action at this time.
0 commit comments