oauth feature green, except for the pod forgot client edge case

This commit is contained in:
Jonne Hass 2011-12-08 15:53:35 +01:00
parent 4dd55ebdad
commit 8b141ed5d5
4 changed files with 13 additions and 20 deletions

View file

@ -69,9 +69,8 @@ class AuthorizationsController < ApplicationController
render :text => "Domain (#{manifest["application_base_url"]}) currently not authorized for Diaspora OAuth", :status => 403
else
client = OAuth2::Provider.client_class.create_or_reset_from_manifest!(manifest, public_key)
client = OAuth2::Provider.client_class.find_or_create_from_manifest!(manifest, public_key)
debugger
json = {:client_id => client.oauth_identifier,
:client_secret => client.oauth_secret,
:expires_in => 0,

View file

@ -1,19 +1,12 @@
class OAuth2::Provider::Models::ActiveRecord::Client
def self.create_or_reset_from_manifest!(manifest, pub_key)
if obj = find_by_name(manifest['name'])
obj.oauth_identifier = OAuth2::Provider::Random.base62(16)
obj.oauth_secret = OAuth2::Provider::Random.base62(32)
obj.save!
obj
else
self.create!(
:name => manifest["name"],
:permissions_overview => manifest["permissions_overview"],
:description => manifest["description"],
:application_base_url => manifest["application_base_url"],
:icon_url => manifest["icon_url"],
:public_key => pub_key.export
)
end
class OAuth2::Provider::Models::ActiveRecord::Client
def self.find_or_create_from_manifest!(manifest, pub_key)
find_by_name(manifest['name']) || self.create!(
:name => manifest["name"],
:permissions_overview => manifest["permissions_overview"],
:description => manifest["description"],
:application_base_url => manifest["application_base_url"],
:icon_url => manifest["icon_url"],
:public_key => pub_key.export
)
end
end

View file

@ -85,6 +85,7 @@ Feature: oauth
Then I visit "/account?id=1" on Chubbies
Then I should see "Token invalid"
@wip
Scenario: Re-registering a client if the client recognizes the diaspora pod but the diaspora pod has since been reset
Given Chubbies is registered on my pod
And I remove all traces of Chubbies on the pod

View file

@ -11,7 +11,7 @@ Given /^Chubbies is registered on my pod$/ do
public_key = OpenSSL::PKey::RSA.new(packaged_manifest['public_key'])
manifest = JWT.decode(packaged_manifest['jwt'], public_key)
client = OAuth2::Provider.client_class.create_or_reset_from_manifest!(manifest, public_key)
client = OAuth2::Provider.client_class.find_or_create_from_manifest!(manifest, public_key)
params = {:client_id => client.oauth_identifier,
:client_secret => client.oauth_secret,
:host => "localhost:9887"}