mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-11-03 20:48:07 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
require 'rails_helper'
 | 
						|
 | 
						|
RSpec.describe 'Token Confirmation', type: :request do
 | 
						|
  describe 'POST /auth/confirmation' do
 | 
						|
    let(:response_json) { JSON.parse(response.body, symbolize_names: true) }
 | 
						|
 | 
						|
    before do
 | 
						|
      create(:user, email: 'john.doe@gmail.com', **user_attributes)
 | 
						|
 | 
						|
      post user_confirmation_url, params: { confirmation_token: confirmation_token }
 | 
						|
    end
 | 
						|
 | 
						|
    context 'when token is valid' do
 | 
						|
      let(:user_attributes) { { confirmation_token: '12345', skip_confirmation: false } }
 | 
						|
      let(:confirmation_token) { '12345' }
 | 
						|
 | 
						|
      it 'has status 200' do
 | 
						|
        expect(response.status).to eq 200
 | 
						|
      end
 | 
						|
 | 
						|
      it 'returns "auth data"' do
 | 
						|
        expect(response.body).to include('john.doe@gmail.com')
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context 'when token is invalid' do
 | 
						|
      let(:user_attributes) { { confirmation_token: '12345' } }
 | 
						|
      let(:confirmation_token) { '' }
 | 
						|
 | 
						|
      it 'has status 422' do
 | 
						|
        expect(response.status).to eq 422
 | 
						|
      end
 | 
						|
 | 
						|
      it 'returns message "Invalid token"' do
 | 
						|
        expect(response_json).to eq({ message: 'Invalid token', redirect_url: '/' })
 | 
						|
      end
 | 
						|
    end
 | 
						|
 | 
						|
    context 'when user had already been confirmed' do
 | 
						|
      let(:user_attributes) { { confirmation_token: '12345' } }
 | 
						|
      let(:confirmation_token) { '12345' }
 | 
						|
 | 
						|
      it 'has status 422' do
 | 
						|
        expect(response.status).to eq 422
 | 
						|
      end
 | 
						|
 | 
						|
      it 'returns message "Already confirmed"' do
 | 
						|
        expect(response_json).to eq({ message: 'Already confirmed', redirect_url: '/' })
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |